Archive for the '15550' Category

Resoluciones del Nuevo Mes: Julio 2014

Wednesday, July 9th, 2014

Un nuevo mes comenzó, tiempo de revisar mis resoluciones de Junio 2014, y escribir las nuevas:

– Continuar AjErl [pendiente]
– Continuar ScalaSharp [completo] repo 
– Continuar SharpGo [completo] repo
– Alcance de variables en lenguaje Mass [completo] repo
– Comenzar SimpleItems [pendiente]
– Continuar SimpleApps [partial] repo
– Continuar ClojSharp [pendiente]
– Continuar DictSharp [pendiente]
– Primer caso de uso distribuido de AjErl [pendiente]
– Primer caso de uso distribuido de Aktores [pendiente]
– Escribir C# Posts [completo] Posts
– Escribir TDD Post [completo] Post
– Mejorar el código de mi sitio personal [completo]

También estuve trabajando en:

– Crear y publicar primer versión SimpleCurry, para programación funcional en JavaScript [completo]  repo
– Crear y publicar primer versión LoadJsons, lee un modelo JSON desde varios archivos, para JavaScript/Node [completo]  repo
– Crear un sitio dinámicado, definido por JSON, para Express 4 [completo]  repo
– Generar código para Express 4 usando AjGenesisNode [completo]  repo
– Generar código Sinatra usando AjGenesisNode [completo]  repo
– Mejorar AjGenesisNode, AjGenesisNode-Model, AjGenesisNode-Entity [completo]  repo repo repo
– Continuar DylanSharp [completo]  repo
– Crear SharpBus, un service bus tipo Mule, en C# [completo]  repo

Estas son mis resoluciones para Julio 2014:

– Seguir mejorando la generación de código de AjGenesisNode para Express
– Seguir mejorando la generación de código de AjGenesisNode para Sinatra
– Primer generación de código de AjGenesisNode para Laravel 
– Mejorar la carga de módulos y la exportación de variables/funciones en el lenguaje Mass
– Continuar con SharpBus
– Continuar con Dynamic Site
– Dar una charla sobre Node.js/Express
– Dar una jornada sobre Node.js/Express
– Seguir mejorar el código de mi sitio personal
– Escribir post de TDD
– Escribir posts de C#
– Caso de uso distribuido en Aktores
– Revisar, refactorizar y continuar la implementación de RustScript

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Introducción y Jornada Completa a Node.js en Buenos Aires

Monday, July 7th, 2014

Gracias a la gente del MUG voy a dar una charla introductoria (gratuita, pero hay que registrarse) ahora en unos días acá en Buenos Aires:

http://www.mug-it.org.ar/Event.aspx?Event=162

Inicio: 23.07.2014 18:30hs, hasta las 20 y monedas | Lugar: Rivadavia 1479 1er Piso

JavaScript no solo tiene cada vez más influencia en el desarrollo cliente/nativo, también ha sabido crecer en el lado del servidor. En esta sesión gratuita veremos la implementación de Node.js, un programa que ejecuta JavaScript. Vacantes limitadas. Inscripción previa obligatoria.

Node.js permite el desarrollo de servidores de distintos protocolos, procesamiento distribuido, y desarrollo web, explotando la entrada/salida asincrónica para mejorar el rendimiento. Bravemente exploraremos como se escribe y ejecuta JavaScript en Node.js, el sistema de módulos, el ecosistema de módulos que tiene, una introducción a desarrollar sitios web con Express, con ejemplos.

Luego, viene una jornada (de un día, con costo, traer notebook para aprovecharla):

http://www.mug-it.org.ar/Event.aspx?Event=163

Lugar: Auditorio del MUG, Rivadavia 1479 Primer Piso “A”, Buenos Aires.

Fecha y Horario: Miércoles 30 de julio de 2014 de 9:00 a 17:00 hs. 

 

Contenidos:
1. Introducción a Node.js
1.1. Programación Javascript desde Node sobre el motor V8 
1.2. Entrada/Salida asincrónica 
1.3. Módulos 
1.4. Manejador de paquetes npm
1.5. Elementos de Test-Driven Development 
2. Programación Web con Node.js 
2.1. Módulo HTTP 
2.2. Manejo asincrónico 
2.3. Acceso a MongoDB
3. Programación Web con Express
3.1. Concepto de Middleware 
3.2. Lenguaje de Templates 
3.3. Ejemplos con Páginas y Acceso a Datos
3.4. Programando con JSON
3.5. Elementos de Socket.IO
(*)  Instalar previamente el siguiente software:
Instalador de Node (para Windows y otros) http://nodejs.org/download/
Git bajarlo de http://git-scm.com/
MongoDB bajarlo de http://www.mongodb.org/downloads
La idea de la jornada es practicar Node.js, desde el inicio, y ver de instalar, levantar y examinar ejemplos, de consola y web, para ir viendo cómo es el tema de desarrollo con Node.js, cómo se usan los módulos, el ecosistema que existe, el manejador de paquetes NPM, y Express como framework web. Usaremos MongoDB para la persistencia.
Como siempre, el material de los dos eventos estará en mi cuenta de GitHub, y algún anuncio habrá por acá.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez 

Resoluciones del Nuevo Mes: Junio 2014

Tuesday, June 10th, 2014

Es tiempo de revisar mis resoluciones de Mayo:

– Trabajr en SimpleScraper, primeros casos de uso [completo] ver repo
– Continuar RuScript [pendiente]
– Continuar RustScript [parcial] ver repo
– Continuar SharpGo [completo] ver repo
– Continuar Distributed Messages in AjErl [pendiente]
– Mejorar Mass Language [pendiente]
– Continuar Aktores (implementar distribución de mensajes) [pendiente]

Adicionalmente, estuve trabajando en:

– Continuar ScalaSharp [completo] ver repo
– Comenzar SimpleApps, mi refinamiento de MyApps [completo] ver repo
– Continuar ClojSharp [completo] ver repo

Mis resoluciones para este nuevo mes, Junio de 2014:

– Continuar AjErl
– Continuar ScalaSharp
– Continuar SharpGo
– Poner alcance de variable en el lenguaje Mass
– Comenzar SimpleItems
– Continuar SimpleApps
– Continuar ClojSharp
– Continuar DictSharp
– Primer caso de uso distribuido en AjErl
– Primer caso de uso distribuido de Aktores
– Escribir Posts de C#
– Escribir Post de TDD
– Mejorar mi sitio personal

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Resoluciones del Nuevo Mes: Mayo 2014

Saturday, May 10th, 2014

De nuevo, pasó un mes, y llega el tiempo de revisar mis resoluciones de Abril 2014:

– Continuar AjLispScala [pendiente]
– Continuar AjGenesisNode-Express [parcial] ver repo
– Continuar AjGenesisNode-PHP [pendiente]
– Continuar RuScript [pendiente]
– Continuar RustScript [completo] ver repo
– Mensajes distribuidos en AjErl [parcial] ver repo
– Dar una charla introductoria a Node.js [completo] ver repo ver presentación en línea
– Publicar un nuevo tutorial en video de Node.js [completo] ver post

Además, estuve trabajando en:

– Comenzar SharpGo intérprete Go en C# [completo] ver repo
– Comenzar SimpleNeuron en JavaScript [completo] ver repo
– Refactorización, extensión y publicación de nueva versión de SimpleFlow [completo] ver repo
– Mejorar SimpleScraper [completo] ver repo
– Mejorar ClojSharp [completo] ver repo
– Mejorar Aktores [completo] ver repo

Las resoluciones para este nuevo mes de Mayo 2014:

– Trabajar en SimpleScraper, primeros casos de uso
– Continuar RuScript
– Continuar RustScript
– Continuar SharpGo
– Continuar Mensajes Distribuidos en AjErl
– Mejorar lenguaje Mass
– Continuar Aktores (primeras característucas distribuidas)

Me diviegto como logco 😉

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Aplicaciones Creando Aplicaciones

Monday, April 28th, 2014

En todos estos años, he estado trabajando en diferentes aproximaciones para hacer que programas creen programas. Este post es un resumen y revisión de los caminos que he tomado, y en los que sigo trabajando, como un Work in Progress. Pienso que hay maneras interesantes de hacer programación, listas para ser exploradas.

Aplicaciones Dinámicas

Algo que hace unos años no hubiera encarado. Pero la ductilidad que da JavaScript me trae de nuevo a esta idea. Todo se basa en describir una aplicación (entidades, relaciones, vistas, código), y ejecutarla en un programa especializado (generalmente en páginas web) que conozca cómo interpretar y ejecutar la definición de la aplicación. Escribí una demo de la idea para la competición Knockout del año pasado:

Más información en mi post Aplicaciones Dinámicas en Node.js.

[View:http://www.youtube.com/watch?v=GQdyyNWCasI]

La aplicación pudo ser descripta usando una simple estructura: en este ejemplo, es un objeto JavaScript sencillo que puede ser serializado a JSON. La misma estructura puede ser interpretada por diferentes programas “host”: una aplicación web (la demo de arriba), o una aplicación web SPA (de Single Page Application), una aplicación mobile (Phonegap o nativa). Y hasta podría usarla como base para generar código en una tecnología concreta, como Sinatra, PHP, Express+Node.js+MongoDB, etc.

Generación de Código

Ya saben, uno de mis temas preferidos. He estado creando tareas, plantillas y modelos de libre definición para generar aplicaciones en Express/Node.js y en otras tecnologías (Sinatra, Django, Flask, PHP, todo Work in progress). Tengo implementaciones de mi herramienta de generación de código en C#, Ruby y Node.js. Pero mis últimos trabajos usan la de Node.js:

https://github.com/ajlopez/AjGenesisNode

Pueden ver un ejemplo en:

https://github.com/ajlopez/AjGenesisNode-Express

Una aplicación generada:

 

Estoy trabajando en crear un sitio en línea donde cualquiera pueda definir el modelo, y elegir una serie de opciones de tecnología. El sitio generaría código, listo para bajarse en un .zip.

Tarjetas

En el proyecto:

https://github.com/ajlopez/SimpleCards

Describo cada aplicación como un conjunto de “cards” (o sea, tarjetas, en un “deck”, mazo). Una tarjeta puede tener valores simples, o un valor que sea a su vez una tarjeta o un mazo de tarjetas. Por ejemplo, una tarjeta puede tener un id, un nombre, un título como valores simples, e información adicional, otros valores. Una tarjeta puede tener un valor que a su vez sea un mazo de tarjetas (por ejemplo, una tarjeta de Elementos Químicos, puede tener un mazo de tarjetas, una por cada elemento químico a describir). Cada tarjeta/mazo puede ser mostrado en diferentes contextos: desde una aplicación web, una SPA, una aplicación móvil (podría implementarse para PhoneGap o para nativo). Una cosa es la estructura y contenido de una tarjeta, y otra es el mostrar la tarjeta. Esto de mostrar depende del contexto de la aplicación que alberga las tarjetas.

Un ejemplo simple

https://github.com/ajlopez/SimpleCards/blob/master/samples/deck/js/model.js

var model = {
    title: "My Deck",
   
    cards: [
        { title: "Card 1", text: "This is the card 1" },
        { title: "Card 2", text: "This is the card 2" },
        { title: "Card 3", text: "This is the card 3" }
    ]
}

Otro ejemplo, con pantallas:

https://github.com/ajlopez/SimpleCards

El contenido de un tarjeta pueden ser valores con texto simple, texto largo, una URL, la URL a una imagen, o la descripción de algún componente especializado a ser mostrado (por ejemplo, un Google Maps). La descripción de la tarjeta y su contenido puede ser estático o puede ser generado en el momento. Por ejemplo, podría implementar leer un “feed” y transformarlo en un mazo de tarjetas. O podría recuperar la descripción de un mazo o una tarjeta desde una API REST. Una tarjeta puede tener algunos valores parciales (por ejemplo, id, título), para ser mostrado en el mazo, y cuando uno entra y quiere ver la tarjeta completa, un componente adicional puede RESOLVER la tarjeta y conseguir los datos adicionales, por ejemplo usando su id. Un ejemplo: una tarjeta tiene título y id. El id es la URL de la página en la Wikipedia. Cuando una tarjeta necesita ser vista, el programa adicional toma el id, y resuelve la tarjeta, bajando el contenido de la página, extrayendo texto, enlaces relacionados, imágenes.

Mucho para hacer, y muy interesante.

Nos leemos!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

Aplicaciones Dinámicas en Node.js

Saturday, April 19th, 2014

El año pasado participé de la competición Node.js Knockout organizada por Nodejitsu. Fueron dos días de programación (sábado y domingo), enviando código a sus servidores. Trabajé solo (en general se trabaja en equipos), en el Solo Ninja team. Mi idea era empujarme a escribir algo que tenía pendiente. Mi proyecto, en gran parte escrito siguiendo el flujo de TDD, trata de definir una o más aplicaciones, en forma interactiva. Cada aplicación puede tener una o más entidades. Cada entidad tiene propiedades, como campos de texto, o imágenes, enlaces, etc. Tengo que agregar relaciones uno a varios entre entidades.

Pueden ver mi presentación en video para los jueces en:

http://youtube.com/watch?v=GQdyyNWCasI

[View:http://www.youtube.com/watch?v=GQdyyNWCasI]

Despues de la competición, publiqué el código en mi cuenta de GitHub:

https://github.com/ajlopez/MyApps

Me parece interesante esto de explorar el definir dinámicamente una aplicación, en lugar de escribirla manualmente o de generar código para un modelo. En otros años pasados, yo sería más excéptico, pero lenguajes dinámicos como JavaScript son muy poderosos y flexibles. Y combinado con Node.js, es un dúo imparable para ayudar en la implementación de este tipo de aplicaciones. Quiero extender estas ideas para generar clientes no sólo web, sino mobile (primer paso, usar Phonegap), y quizás aplicaciones nativas que sepan interpretar la definición de una aplicación. Me imagino agregando también algo de código definible por el usuario en algunos puntos de extensión. Estoy estudiando Force, de Salesforce, y las semanas pasadas estuve viendo el modelo de aplicaciones de SharePoint online. Algunas ideas, entonces:

– Agregar tareas escritas en lenguaje de programación (un JavaScript controlado, digamos)
– Más programas cliente, que tomen una aplicación (definida simplemente, por ejemplo en un JSON), y la ejecuten para web, mobile, nativo, etc.
– Tener application stores, públicas y privadas
– Poder instalar para nuestra aplicacion o sitio de aplicaciones, aplicaciones de otros

Tengo también “in-pectore” una implementación más sencilla de lo que era Hypercard, pero eso es tema para otro post.

Esta noche el mundo, Pinky! 😉

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Aprendiendo Node.js (3) Un Web Server

Monday, April 7th, 2014

Anterior Post

Ayer grabé una nueva sesión de esta serie, como Google Hangout. Queda en:

https://www.youtube.com/watch?v=OcRSDwcBAIA

[View:http://www.youtube.com/watch?v=OcRSDwcBAIA]

El tema de esta sesión fue aplicar lo visto en las dos anteriores: programar en JavaScript, usar require de Node.js, usar módulos “built-in” como http, url, y refactorizar código, para tener un mini servidor web, que produce distintos resultados de acuerdo a lo que se pida en el navegador.

El código del ejemplo quedó en:

https://github.com/ajlopez/NodeSamples/tree/master/WebServer

En las próximas sesiones:

– Más refactorización (por ejemplo, extraer el proceso de rutas como un módulo)

– Servir archivos estáticos, donde tendremos nuestro primer contacto con streams, y con el módulo fs

– Con otro ejemplo, comenzar algo de TDD

Y temas para más adelante: programar con Express (para no hacer el ruteo de acciones nosotros) y con Socket.IO (para empezar a ver el tema real time)

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Aprendiendo Node.js (2) Primeros módulos

Friday, March 21st, 2014

Anterior Post 
Siguiente Post 

Hoy llega mi segundo video explorando Node.js. Verlo en

http://www.youtube.com/watch?v=wHZd88HT2fE

[View:http://www.youtube.com/watch?v=wHZd88HT2fE]

Lo que escribí quedó en
https://github.com/ajlopez/NodeSamples
en el directorio Modules
En esta edición exploramos lo que es el require y qué es un módulo escrito por nosotros. Vimos el “cache” de módulos, el acceso a variables globales, la definición local de variables y funciones, y cómo exportar elementos explícitamente para poder ser consumidos por el programa que USA al módulo.
En los próximos videos/experiencia veremos cómo escribir un módulo con TDD, y cómo instalar, consumir módulos del ecosistema.
Nos leemos!
Angel “Java” Lopez 
http://www.ajlopez.com 
http://twitter.com/ajlopez

Resoluciones del Nuevo Mes: Marzo 2014

Sunday, March 9th, 2014

Primero, revisión de mis Resoluciones de Febrero:

– Completar mensajería distribuida en AjErl [parcial] ver repo
– Completar dot notation in AjLisp [pendiente]
– Mejorar ClojSharp [completo] ver repo
– Trabajar en ScaScript [parcial] ver repo
– Trabajar en ScalaSharp [completo] ver repo
– Agregar alcance de variable a Mass [pendiente]
– Completar primera versión de Aktores, actor model en C# [pendiente]
– Más tareas de generación de código, plantillas, modelos, para AjGenesis para Node, generando Express, Meteor, Sinatra y otro tipo de aplicaciones [parcial] ver repo

Para compensar lo faltante, estuve trabajando en:

– Crear Annalisa [completo] ver repo with online web services and demo
– Comenzar SimpleAsync [completo] ver repo
– Crear mis primeros ejemplos en Meteor [completo] ver repo
– Comenzar Templie, una simple template engine en Java [completo] ver repo
– Comenzar SimpleScraper, un simple scraper en JavaScript/Node.js [completo] ver repo

E hice algunas mejoras en DylanSharp

Resoluciones del nuevo mes:

– Trabajar en DictSharp
– Dar una charla sobre Node.js y Aplicaciones Distribuidas
– Mejorar SimpleGammon
– Mejorar Annalisa
– Agregar @for a Templie
– Trabajar en PreciosaAnnalisa online web services
– Mejorar mis ejemplos de aplicaciones distribuidas en Node.js
– Trabajar en ScalaSharp
– Mejorar ClojSharp
– Mejorar SimpleAsync, agregar do operation (funciones en paralelo)
– Mejorar Aktores
– Mensajes distribuidos en AjErl
– Agregar alcance de variables al lenguaje Mass
– Comenzar un ejemplo de code generation as a service

Mucho para divertirse!

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Programando en Meteor (1) Primeros Pasos

Tuesday, February 25th, 2014

El sábado 15 de febrero, asistí a una Meteor meetup acá en Buenos Aires, una mitad de día lleno de charlas y codeo en Meteor. Gracias desde acá a los organizadores, ayudantes y “sponsors”: @areatreslab, @4residents, @bikestorming, @html5cat (ucraniano, viviendo en Vancouver, Canadá, interesante, graduado en matemáticas, con especialidad en análisis funcional; escribió hace un tiempo un function analysis paper), @matikalwill (a.k.a. “mi vida es bikestorming, seño”, iba a la escuela primaria con un cuaderno con su proyecto ;-).

Meteor es un framework para armar aplicaciones web. Y puede ser usado (y es usado) para armar aplicaciones móviles. Una aplicación Meteor, en general, es una Single Page Application (SPA), una aplicación que muestra una sola página y la va cambiando con JavaScript en el cliente, y pudiendo traer nuevos datos del servidor (y también mandar nuevos datos). El servidor está basado en nuestro viejo conocido, Node.js. Pero Meteor no es como otras aplicaciones Node. Ver primero:

https://www.meteor.com/

La principal diferencia: el lenguaje de programación es JavaScript, y PUEDE SER EJECUTADo en el servidor o en el cliente. Puede ser el MISMO código en ambos lados, o tener partes especializadas que ejecuten en el cliente y otras en el servidor.

Meteor se basa en siete principios:

http://docs.meteor.com/#sevenprinciples

  • Data on the Wire. Don’t send HTML over the network. Send data and let the client decide how to render it.
  • One Language. Write both the client and the server parts of your interface in JavaScript.
  • Database Everywhere. Use the same transparent API to access your database from the client or the server.
  • Latency Compensation. On the client, use prefetching and model simulation to make it look like you have a zero-latency connection to the database.
  • Full Stack Reactivity. Make realtime the default. All layers, from database to template, should make an event-driven interface available.
  • Embrace the Ecosystem. Meteor is open source and integrates, rather than replaces, existing open source tools and frameworks.
  • Simplicity Equals Productivity. The best way to make something seem simple is to have it actually be simple. Accomplish this through clean, classically beautiful APIs.

Notablemente, el estado de la base de datos es compartida por todos los clientes en tiempo real. Si agregamos un nuevo registro a una colección de clientes (Meteor usa MongoDB en el servidor para la persistencia) EN EL CLIENTE, la actualización viaja al servidor, y se refresca en todas los datos de los clientes conectados. Por ejemplo, si un segundo cliente tiene en la pantalla una lista de clientes, automáticamente Meteor, por programación reactiva, sabe que esa lista tiene que actualizarla, porque cambió el modelo base que es la colección de clientes, y va la actualiza en el cliente. Todo esto sin agregar código adicional: simplemente declarando en JavaScript cómo los modelos de las vistas cliente dependen de alguna colección, en este caso, de la colección de clientes.

Aunque basado en Node.js, Meteor no es un paquete NPM (Node Package Manager). Debe ser instalado manualmente, leer:

http://docs.meteor.com/#quickstart

De esa forma, puede ser instalado en Linux/Unix y en Mac. La plataformas soportadas en:

https://github.com/meteor/meteor/wiki/Supported-Platforms

Pero si tenemos Windows (usé Windows en la reunión), tenemos que usar otro procedimiento, yo usé el ejecutable que está en:

http://win.meteor.com/

Hay soluciones basadas en Vagrant (que levantan una máquina virtual, pudiendo seguir trabajando en Windows, editando archivos de la VM, por ejemplo). Yo instalé el ejecutable del sitio de arriba, que se llama LaunchMeteor.exe, sin mayor problema, y lo probé en dos máquinas Windows. No hace falta tener Node pre-instalado, usa una versión interna, que está en su directorio de instalación, y tampoco molesta a otra instalación de Node ya existente en nuestras máquinas.

Leí:

http://docs.meteor.com/#structuringyourapp

A Meteor application is a mix of JavaScript that runs inside a client web browser, JavaScript that runs on the Meteor server inside a Node.js container, and all the supporting HTML fragments, CSS rules, and static assets. Meteor automates the packaging and transmission of these different components. And, it is quite flexible about how you choose to structure those components in your file tree.

The only server assets are JavaScript and files in the private subdirectory. Meteor gathers all your JavaScript files, excluding anything under the client, public, and private subdirectories, and loads them into a Node.js server instance inside a fiber. In Meteor, your server code runs in a single thread per request, not in the asynchronous callback style typical of Node. We find the linear execution model a better fit for the typical server code in a Meteor application.

El énfasis es mío. Vean que para tener el mismo código en cliente y en servidor, el código del servidor se ejecuta en una fibra, un truco de Node/V8 para no ver los callbacks y el async directamente. Tengo que revisar la escalabilidad, ver mis enlaces

https://delicious.com/ajlopez/meteor,scalability

Meteor tiene un manejador de paquetes no oficial Meteorite:

http://oortcloud.github.io/meteorite/

y tiene un repositorio de “smart packages”

https://atmosphere.meteor.com/

Estos paquetes saben qué poner en cada caso, en el cliente y el servidor. Y tienen funciones implementadas usando fibras.

Leo:

http://docs.meteor.com/#usingpackages

In addition to the packages in the official Meteor release being used by your app, meteor list and meteor add also search the packages directory at the top of your app. If you’ve downloaded an unofficial package from Atmosphere you should unpack it into that directory (the unofficial Meteorite tool streamlines this process). You can also use the packages directory to break your app into subpackages for your convenience — if you are willing to brave the fact that the Meteor package format is not documented yet and will change significantly before Meteor 1.0…

Lamentablemente, Meteorite no está aún disponible para Windows, así que tenemos que usar los paquetes built-in, que ya viene, o instalar un paquete manualmente. (ver el repo de mi proyecto mencionado más abajo, hay varios enlaces que tratan el tema).

Hay muchos recursos para ir aprendiendo Meteor:

https://www.meteor.com/learn-meteor

Por ejemplo, pueden probar los ejemplos (no necesitan Meteorite, así que funcionan en Windows):

https://www.meteor.com/learn-meteor

Durante la meetup, probé varios ejemplos, modifiqué alguno (el de leaderboard), y armé un sitio con Bootstrap 2.x y algún altas, listas, y me falta editar y borrar:

https://github.com/ajlopez/MeteorSamples

Varios enlaces con tutoriales, videos, ejemplos, en:

https://github.com/ajlopez/MeteorSamples#references

El ejemplo CRUD está en:

https://github.com/ajlopez/MeteorSamples/tree/master/mycompany

Usa solamente paquetes builtin, así que lo pueden ejecutar en Windows (ah! al igual que Node, no hace falta instalar MongoDB; Meteor viene con uno propio).

Con un comando de Meteor, puede publicar un ejemplo en la web de Meteor. El mío quedó en:

http://mycompany.meteor.com/

Voy publicado Meteor-related links. Más enlaces en:

https://delicious.com/ajlopez/meteor

https://delicious.com/ajlopez/meteor,tutorial

Ah! Meteor puede ejecutarse en PhoneGap, para tener aplicaciones móviles en múltiples dispositivos, corriendo con acceso a lo nativo de cada uno:

https://delicious.com/ajlopez/meteor,phonegap

Mi plan: luego de terminar mi ejemplo, usarlo como base para generar con AjGenesis aplicaciones Meteor. Recuerden que AjGenesis usa un modelo libre, plantillas y tareas. Usaré la versión que tengo implementada en Node.js, que es la que más se adapta a multiplaforma. Una vez que tenga andando eso, generaré para PhoneGap, espero. Hasta podría usar la Build API de PhoneGap, accesible desde Node.js, para dar una experiencia de code generation as a service (como ya tiene un ejemplo de hace años de AjGenesis en .NET).

Me diviegto como logco 😉

Nos leemos!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez