CC-Toolkits en Chaco

Hola amigos recientemente estamos participando con la comunidad Creative commons Argentina en actividades para elaborar contenido, fortalecer la comunidad CC NEA, ver la mejor manera de comunicar la filosofía y principios para futuro material gráfico. Pasamos muy lindo en las instalaciones de CECUAL en Resistencia junto a los amigos de Cospel y Ndé Ramirez entre Otros.

Dejo una reseña de Facu (la garza)

LICENCIAS LIBRES
Hackathones para elaborar “CC Toolkits”
El viernes 28 de febrero y el sábado 1 de marzo se realizaron Hackathones simultáneos en Buenos Aires y en Chaco, dos jornadas de trabajo dedicadas específicamente a generar materiales que sirvan para promover la comprensión y fomentar la aplicación correcta de las licencias CC en el área de educación, en todos sus niveles.
Por otra parte, en Córdoba Capital el encuentro de elaboración de Toolkits tendrá lugar los días 14 y 15 de marzo.
Durante ambas jornadas se trabajó con “Toolkits”, diferentes piezas, en diferentes formatos y soportes, cuyo principal objetivo es promover el entendimiento y el correcto uso de las licencias CC en las siguientes áreas temáticas: Educación, Ciencia, Gobierno e Industrias Culturales.
Una vez elaborados los contenidos definitivos, a través de diferentes hackathones en todo el mundo, se diseñarán diferentes piezas (videos, folletos, Preguntas Frecuentes, etc.) que se encontrarán disponibles en la página oficial del proyecto, bajo licencia CC para hacerlos totalmente reutilizables y remixables.
Dentro de este proyecto, en Argentina se organizó el trabajo de distintas sedes bajo la temática de Educación. En diciembre pasado se realizaron una serie de actividades preparatorias para los eventos de elaboración de contenidos que tendrán lugar en Buenos Aires, Chaco y Córdoba.
Se trató de diferentes reuniones con algunos invitados que pudieran brindar su perspectiva como usuarios dentro del ámbito educativo para conocer cuáles son los puntos débiles y las necesidades de información sobre el uso de las licencias.

Estilo en input file

Hola a modo de bitácora comparto este pequeño truquito útil.
Poder darle un estilo o “apariencia” al elemento input file de html. Si bien para mi gusto el input file estandar está mas que bien, siempre hay clientes que quieren algo mas a su gusto. Voy a explicar una técnica muuuuy sencilla para hacerlo:

1) Escribimos el input file en HTML obviamente :D

<!– Campo ficticio para simular el path del archivo –>
<input type=”text” id=”url-archivo” />

Obtenemos algo como esto 0

2) Agregamos un campo “input text” ficticio que servirá para simular el path del archivo que seleccionemos

<!– Campo ficticio para simular el path del archivo –>
<input type=”text” id=”url-archivo” />

<!– Campo original file –>
<input type=”file” id=”archivo” name=”archivo” />


3) Agregamos un label para simular el botón “seleccionar archivo” envolviendo al input file

<!– Campo ficticio para simular el path del archivo –>
<input type=”text” id=”url-archivo” />

<!– label para simular el boton “seleccionar archivo” –>
<label class=”cargar”>
subir<span>
<!– Campo original file –>
<input type=”file” id=”archivo” name=”archivo” />
</span>
</label>

El resultado:1

4) Usamos jquery para detectar el cambio (change) del elemento input, osea cuando selecciona el archivo y el valor del path escribirlo en el input text ficticio. Puedes usar cualquier framework js o bien hacerlo con javascript puro, en este caso lo resolvemos con jquery.
$(document).ready(function() {
/* En el change del campo file, cambiamos el val del campo ficticio por el del verdadero */
$('#archivo').change(function(){
$('#url-archivo').val($(this).val());
});
});

5) Agregas el estilo CSS que necesitas, teniendo en cuenta 2 cosas a) Ocultar el input file original, b) lograr que el label parezca un botón.
Por ejemplo

/* Ocultamos el input file */
input[type="file"]{
z-index: 999;
line-height: 0;
font-size: 50px;
position: absolute;
opacity: 0;
filter: alpha(opacity = 0);-ms-filter: "alpha(opacity=0)";
margin: 0;
padding:0;
left:0;
}


/* Al label lo convertimos en "boton"
(en apariencia) */
.cargar{
text-align: center;
background-color: #8E789B;
color: #fff;
display: block;
border-radius: 3px;
width: 190px;
height: 30px;
font-size: 18px;
float: left;
line-height: 1.6em;
}

El resultado 2
PD: El path lo pueden formatear a gusto, este post es simplememnte explicativo, para ver bien el código e implementarlo como les parezca pueden copiarlo desde http://jsfiddle.net/jositux/Jya4G/2/

Problema con ExecJS en rails

Siguiendo con el post anterior vamos a usar rails para eso en consola vamos a crear una carpeta para nuestro proyecto.

mkdir proyecto

Creamos una aplicación
rails new hello_world

nos movemos a la carpeta
cd proyecto/hello_world
lanzamos el servidor de rails

rails server

Si aparece un error relacionado a ExecJS::RuntimeUnavailable o similar lo que sucede es que no están instaladas las gemas relacionadas a ExecJS que permite ejecutar y evaluar código JavaScript en Ruby.

La solución:
1) Abrir el archivo Gemfile que se encuentra en la carpeta hello_world

2) Agregar estas líneas:
gem ‘execjs’
gem ‘therubyracer’
3) Guardar.

4) Ir a la consola y ejecutar

bundle install

Con eso ya tenemos funcionando :D, intentá de nuevo con
rails server

y abrí el navegador con la dirección http://0.0.0.0:3000/

Instalar Ruby 2.0.0 y Rails con RVM en Huayra gnu/linux (o debian)

Buenas amigos antes de que me olvide hoy estuve sufriendo un ratito para hacer funcionar Ruby (El lenguaje de programación), Ruby On Rails (El framework web MVC basado en ruby) en Huayra (La distro basada en debian del conectar igualdad).

Resulta que por defecto en los repositorios tenemos la versión de Ruby 1.9.3 osea instalando mediante sudo apt-get install ruby

Por ende es una buena idea tener una herramienta que permita tener actualizada la última versión estable de Ruby, para eso podemos usar RVM (Ruby version manager)  . RVM es un kit de herramientas de línea de comandos que te permite instalar fácilmente, y trabajar con múltiples entornos de ruby y también gestionar las famosas gemas.

Bueno vayamos al grano.

PASOS PARA INSTALAR

1) Abrimos una consola o Terminal. Si usas Gnome (en este caso Mate) hay que configurar Terminal. El motivo es que gnome-terminal por defecto está configurado de una manera en la cuál que RVM no se carga y se obtiene el un mensaje “RVM no es una función”. Para arreglar eso vamos a Editar->Preferencias del perfil y en la pestaña Titulo y comando tildamos la opción Ejecutar comando como un intérprete de conexión

pantalla

La explicación detallada la pueden ver aquí  , según me comentaron si no usan gnome obviar este paso.

2) Instalar cURL si no lo tienes

sudo apt-get install curl

3) Instalar RVM

curl -L https://get.rvm.io | bash -s stable

4) Levantar RVM

source ~/.rvm/scripts/rvm

5) Chequear los requerimientos de RVM (En caso de que falte algo, a mí no me pidió que instale ningún paquete extra).
rvm requirements

6) Instalar Ruby a través de RVM

rvm install 2.0.0
Si chequeamos
ruby -v
deberíamos obtener
ruby 2.0.0p247 …

7) Decirle a RVB que use la versión 2.0.0 como default

rvm use 2.0.0 --default

8) Instalar Rails mediante su Gema
gem install rails

Si chequeamos
rails -v
deberíamos obtener
Rails 4.0.0

La seguimos espero les sirva :)
PD: El próximo post será como configurar rails, porque también tuve problemitas al intentar iniciar el server de rails, ahi nos vemos!

Cuando apestan los servicios de terceros

Hola Amiguitos! Como algunos sabrán twitter anunció que no va a continuar con la versión de la API 1.0 para pasar a la 1.1.

Que quiere decir esto? Bueno básicamente API son las siglas en inglés de interfaz de programación de aplicaciones. Mediante este mecanismo uno puede acceder a servicios de un terceros, en este caso twitter (Por ejemplo el listado de últimos tweets de una persona, la cantidad de seguidores, etc).

Hasta ahí todo bien, ahora el cambio implica entre otra condiciones la siguiente restricción.

El uso obligatorio de OAuth como protocolo de autentificación. Esto significa que para acceder a los servicios de twitter solo lo podrás hacer si registras una aplicación con tu nombre (En la versión 1.0 se podía hacer anónimo).

Esto trae 2 problemas fundamentales:

1) twitter debe saber quien sos para que puedas usar un servicio independientemente si el usuario que genera el contenido permite que todos puedan ver su actividad.

2) Para poder utilizar el servicio solo puedes hacerlo utilizando aplicaciones de servidor, osea que tienes que instalar cosas “extra” en tu servidor para que twitter pueda verificar que efectivamente sos vos el que utiliza (Antes simplemente usando javascript en el cliente podías utilizar el servicio sin instalar nada extra).

Como consecuencia de estos cambios muchos desarrolladores de plugins libres decidieron descontinuar sus proyectos, como vemos en las imágenes.

0 1

Personalmente opino que estos cambios son negativos como desarrollador no veo la necesidad de ese tipo de control del proveedor por usar su servicio, creo que el usuario registrado es el que debe hacer ese tipo de desiciones.

Como conclusión creo que no es buena idea crear soluciones basadas completamente en el uso de un API de terceros, ya que estas cosas pueden suceder y el trabajo de mucho tiempo se puede ir a la basura en cualquier momento.

Decido dejar de usar esta api que obliga registrar a los desarrolladores. Esta medida afectó a varios trabajos que tenemos en producción … esta semana tendré que pelearme con algunos clientes seguramente :P pero bueno jejeje.

 

Que opinan?

 

Superego posmoderno en la vida diaria?

Como algunos saben me gustan bastante las ideas de Žižek particularmente el texto “Tu Puedes”: donde escribe sobre el superego posmoderno me identifica mucho este porque conocí y me he topado, trabajado con gente, individuales o colectivos que los noto difusos o “me hacen ruidito” en algunos aspectos generales de la vida como ser lo laboral, las ideas libertarias, el “multiculturalismo”, la horizontalidad, la “espiritualidad”, el cooperativismo y demás ismos.
Si bien en lo discursivo pueden ser impecables podés conocer realmente a alguien cuando tenés que dividir o cortar la torta de algún interés materialista. Es lo que puedo interpretar, no me voy a hacer el pseudofilósofo porque faltan milenios de lectura y sinceramente de lecturas de estas disciplinas estoy en estado alpha negativo.

Les dejo un fragmento a ver que opinan, si bien el ejemplo es bien cotidiano y conocido … no es muy difícil trasladarlo a tus actividades:

…El concepto psicoanalítico que denomina el corto-circuito entre la represión y lo que se reprime es : superego. Como Lacan enfatizó una y otra vez el principal contenido del mandato del superego es : ¡Goza!

Un padre trabaja duro para organizar una excursión de domingo que se posterga una y otra vez.
Cuando finalmente se lleva a cabo, está harto de todo y les grita a los chicos: ¡Ahora mejor que
se diviertan! El superego trabaja de una manera diferente a la ley simbólica. La figura
paterna que es simplemente ‘represiva’; a modo de autoridad simbólica les dice a los
chicos: ‘Tienen que ir al cumpleaños de la abuela y portarse bien aunque se aburran a
muerte, no me importa lo que quieran, tienen que ir’. La figura del superego, en
contraste, le dice a los chicos: ‘Aunque saben cuánto la abuela quiere verlos, sólo
tienen que ir si realmente quieren, si no quieren ir, se pueden quedar en casa’. La
trampa que realiza el superego es que parece que le ofrece a los chicos una elección,
cuando cualquier chico sabe que no se le ha dado ninguna elección, en absoluto. Peor
que eso, está recibiendo una orden y se lo dicen con una sonrisa al mismo tiempo. No
solamente: ‘ Tú debes visitar a tu abuela , no importa lo que quieras ’. Pero: ‘Tú debes
visitar a tu abuela y tienes que estar contento por eso’
El superego ordena gozar haciendo lo que tienes que hacer. ¿Qué pasa despues de
todo si el chico toma esto como si fuera una verdadera elección y dice : ‘no’? El padre
lo va a hacer sentir horriblemente mal: ‘¿Cómo puedes decir eso? ¿Cómo puedes ser
tan cruel? ¿Qué hizo tu abuela para que no quieras verla?….

Ahora si nos ponemos a pensar: que situación es mas honesta? La del padre autoritario o la del padre que ofrece la “libre elección”?.
Con esto no justifico jamás la imposición o el autoritarismo … solamente traigo esto a colación para tratar de entender como en ciertas ocasiones podemos escuchar un discurso maravilloso escondiendo una imposición que no está tan buena.

Instalar node.js en debian wheezy y test “Hola Mundo”

Este articulo lo probé en debian pero debería andar también en ubuntu o similares, es un rejunte de varios artículos…creo que la planteo fácil, en otros tutoriales la complican con links simbólicos, configuraciones raras, etc. Bueno! … Node es un intérprete Javascript del lado del servidor que cambia la noción de cómo debería trabajar un servidor, usa el motor de JavaScript V8 de Google: algo diabólicamente rápido y de gran calidad escrita por nenes como Lars Bak, uno de los mejores ingenieros del mundo dice qué. En teoría la meta es permitir a un programador construir aplicaciones altamente escalables y escribir código que maneje decenas de miles de conexiones simultáneas en una sólo una máquina física. Hasta ahí todo bien, yo lo miro con reojo al hecho de hacer aplicaciones  RAD  “hoy día” con complejas reglas de negocio al estilo de usar un framework web como django, web2py, SF2, etc. Espero estar equivocado che. Bueno basta de bla bla vamos a probar de que va esto.

  • Abrimos la consola y como root intalamos estas mierdas apt-get install git-core curl build-essential python openssl libssl-dev 
  • Create y movete al directorio donde quieras bajar Node, en mi caso
  • mkdir /home/jositux/Node
  • cd /home/jositux/Node
  • Cloná el repo de node.js  git clone https://github.com/joyent/node.git
  • cd node
  • Creá el makefile ./configure
  • Compilalo con make
  • Como root instalalo make install

Listo ya tenés instalado, para probar si está todo ok probá el comando node -v

Ahora probemos este código de “hola mundo” guardalo en un archivo server.js

var http = require(‘http’);
http.createServer(function(request, response) {
response.writeHead(200, {‘Content-Type’: ‘text/html’}); response.write(‘Hola Mundo\n’); response.end(); }).listen(8888); console.log(‘Inicio el servidor web…’)

  • ahora en consola probá node server.js
  • En otra consola ejecutá curl localhost:8888
  • Abrí el browser en http://localhost:8888 y te debería aparecer el hola mundo del javascript

Abrazo…se vemos en la próxima con algún test ;)

Treta tridimensional (Isaac Asimov)

—Vamos, vamos —dijo Shapur con bastante cortesía, teniendo en cuenta que era un demonio—. Desperdicias mi tiempo. Y también el tuyo, pues sólo te queda media hora. —Y agitó la cola.—¿No es desmaterialización? —preguntó reflexivamente Isidore Wellby.—Ya te he dicho que no. Por centésima vez, Wellby miró el bronce ininterrumpido que lo rodeaba por todas partes. El demonio se había regodeado diabólicamente (¿de cuál otro modo?) al señalar que el suelo, el techo y las cuatro paredes eran losas de bronce totalmente lisas y de medio metro de espesor, unidas por soldaduras sin rendijas. Era el cuarto cerrado definitivo, y Wellby sólo tenía media hora para salir, mientras el demonio observaba con creciente ansiedad. Isidore Wellby había firmado hacía diez años (exactos, por cierto).—Te pagamos por adelantado —dijo persuasivamente Shapur—. Durante diez años tendrás todo loque quieras, dentro de lo razonable, y luego serás un demonio. Serás uno de nosotros, con un nuevo nombre de potencia demoníaca y muchos otros privilegios. Ni siquiera te darás cuenta que estás condenado. Y, si no firmas, quizá igual termines en el fuego, de cualquier modo. Nunca se sabe. Mírame a mí, por ejemplo. No me va tan mal. Firmé, tuve mis diez años y aquí estoy. Nada mal.—¿Por qué estás tan ansioso por mi firma si, de todos modos, puedo ser condenado? —le preguntóWellby.—No es tan fácil reclutar cuadros de mando para el infierno —explicó el demonio, con un encogimiento de hombros que intensificó levemente el tenue aroma a bióxido de azufre que impregnaba el aire—. Todos apuestan a que terminarán en el cielo. Es una mala apuesta, pero así son las cosas. Creo que tú eres demasiado sensato para eso. Pero, entre tanto, tenemos más almas condenadas de las que podemos atender con nuestra creciente escasez de personal administrativo. Wellby acababa de salir del ejército y lo único que le había dejado esa experiencia era una cojera y unacarta de despedida de una muchacha a la que aún amaba, así que se pinchó el dedo y firmó. Desde luego, primero leyó la letra pequeña. Cierta cantidad de poderes demoníacos serían depositadosen su cuenta en cuanto firmara con sangre. No sabría en detalle cómo se manipulaban esos poderes ni la naturaleza de todos ellos, pero sus deseos se cumplirían de tal modo que parecerían realizarse mediante mecanismos normales.Naturalmente, no se cumpliría ningún deseo que interfiriese con las metas y los propósitos más elevadosde la historia humana. Ante eso, Wellby enarcó las cejas. Shapur carraspeó.—Una precaución que se nos impone desde…, eh…, Arriba. Tú eres razonable. Esa limitación no interferirá contigo.—También parece haber una cláusula equívoca.—En cierto modo, sí. A fin de cuentas, tenemos que verificar tu aptitud para el puesto. Como ves,estipula que se te exigirá la realización de una tarea que tus poderes demoníacos te facilitarán muchísimo.No podemos revelarte ahora a qué se refiere, pero tendrás diez años para estudiar la naturaleza de tuspoderes. Considéralo una especie de requisito de ingreso.—¿Y si no apruebo el examen?—En ese caso —dijo el demonio—, serás sólo un alma condenada común. —Y, como era un demonio,sus ojos emitieron un destello humeante y los dedos de sus zarpas temblaron como si ya los hubiera hundido en las entrañas del otro. Pero añadió suavemente—: Vamos, será un examen sencillo. Preferimos que seas uno de los nuestros y no simplemente una tarea más. Wellby, pensando melancólicamente en su amada inalcanzable, no dio mucha importancia a lo que ocurriría al cabo de diez años y firmó. Pero los diez años pasaron de prisa. Isidore Wellby siempre se mostró razonable, como había predichoel demonio, y las cosas marcharon bien. Wellby aceptó un empleo y, como se hallaba en el sitio adecuadoen el momento preciso y siempre decía las palabras precisas al hombre adecuado, pronto lo promovieron aun puesto de gran autoridad. Sus inversiones eran invariablemente fructíferas y,  para mayor satisfacción,  su chica regresó sinceramente arrepentida y desbordante de adoración. Tuvo un matrimonio feliz y fue bendecido con cuatro hijos, dos varones y dos niñas; todos, brillantes y educados. Al cabo de diez años estaba en la cumbre de la autoridad, reputación y fortuna, mientras que suesposa crecía en belleza a medida que maduraba. Y, a los diez años (exactos, por cierto) de la firma del pacto, se despertó para encontrarse no en su dormitorio, sino en una horrenda cámara de bronce de pasmosa solidez, sin más compañía que un ávido demonio.—Sólo tienes que salir y serás uno de nosotros —dijo Shapur—. Es lógico y factible si usas tus poderes demoníacos, siempre que sepas exactamente qué estás haciendo. Y ya deberías saberlo. Sigue leyendo

Instalar Box2d en ubuntu 12

Box2D es un motor de física de 2 dimensiones de cuerpos rigidos. Que significa esto? Que los elementos que creamos dentro del motor, cuando colisionen entre si no van a sufrir deformaciones pero si interacciones. Sirve sobre todo para juegos simples, sistemas de particulas y escenarios en tiempo real

Box2D esta desarrollado en C++. Aunque se puede combinar con libreias python como pygame. Este motor en la actualiadad es usado por varios juegos en 2D que tienen algun elemento de física. La instalacion es sencilla todo lo que tienes que hacer es copiar y pegar los comandos que siguen abajo.

  • Abrimos una terminal con ctrl + alt + t
  • Instalamos unas librerias necesarias

sudo apt-get install cmake libglu-dev libxi-dev

  • Descargamos los fuentes de box2d

wget http://box2d.googlecode.com/files/Box2D_v2.1.2.zip

  • Descomprimimos, compilamos e instalamos

unzip Box2D_v2.1.2.zip
cd Box2D_v2.1.2/Box2D/Build
cmake ..
make

  • Para iniciar la aplicación ingresa a la carpeta y ejecuta el archivo

cd Testbed
./Testbed

Les aparecerá una pantalla con lindos ejemplos

acá les dejo un ejemplo de aplicación: