Visit the website.
Get it for Chrome.
Get it for Firefox.
Get it for Safari.
Get it for Thunderbird and Postbox.
Get it for Opera.
Discuss it and ask questions in the Google Group.
Al no existir una plataforma de blogging que se ajuste a lo que buscaba, me vi en la obligación de crearla.
Estas son sus características básicas.
- Los Posts son creados desde los gists de Github, para aprovechar el soporte de Markdown que tienen, de hecho este Post vive en este gist
- Cuando se crea un Post, se actualiza una base de datos en CouchDB (los posts se diferencian de cualquier otro tipo de gist ya que tienen un prefix en el nombre)
- El visitante se autentica (con permisos de lectura) y obtiene la lista de posts desde la base de datos
- Si se está visitando un Post específico, se obtiene el archivo markdown desde el API de Github y se muestra su contenido
que yo no esperaba.
De hecho, hace tiempo quería tener un blog. El problema era la plataforma pero ya que tengo eso solucionado ya no tengo excusa.
El mayor uso que le daré es el de plasmar ideas que, si me conoces en persona, seguramente, me escuchas repetir. Para ahorranos ese tiempo, esas ideas las iré plasmando por acá y las ire referenciando luego.
En estos tiempos no hay nada más fácil que tomar una fotografía, sacas tu celular un tap, otro y ya tienes guardado en memoria un recuerdo para siempre. Este simple fenómeno ha cambiado la manera como nos comportamos culturalmente.
Varios servicios se basan en esta ventaja para crear cierto valor, déjanos guardar todas tus fotos por siempre gratis dice Google Photos, déjanos guardar todas las fotos que quieras y compartirlas en nuestra red social para siempre gratis dice Facebook, comparte esas fotos por 6 segundos dice Snapchat, comparte estas fotos que crees son artísticas con tus mismos amigos de Facebook dice Instagram, etc. Y sus usuarios aceptan.
Al aceptar este contrato estás aceptando comportarte como esperamos, ellos nunca lo dicen.
var assert = require('assert'); | |
var contractor = function ( options, contract ) { | |
var keys = Object.keys( contract ); | |
if ( typeof options === 'object' ) { | |
keys.forEach( function ( key ) { | |
assert.equal( typeof options[key], contract[key] ); | |
} ); | |
} else { |