miércoles, 31 de julio de 2013

Donde esta Linux?

Una muy buena infografía que nos muestra donde es más usado el Sistema operativo libre:


sábado, 27 de julio de 2013

Aprender Scala con Koans

Koans son pequeñas lecciones en el camino hacia la iluminación. El objetivo del proyecto Koans Scala es proporcionar un entorno de aprendizaje fácil para Scala. Con Koans podemos aprender Scala mediante ejemplos y utilizando test unitarios, que debemos intentar pasar.

El framework se puede descargar de la pagina de scala koans y viene para trabajar con sbt.

Dejo link:
http://www.scalakoans.org/

miércoles, 24 de julio de 2013

Desarrollo de aplicaciones y páginas web con Apache Tapestry


Otro libro gratuito esta vez de Tapestry, el framework web java; les dejo el link:

http://muko.eu01.aws.af.cm/plugin/

Libro Gratuito de Erlang




Quiero compartir el siguiente libro gratuito de Erlang en castellano; todavía no lo leí pero haya vamos!!!

Dejo el link:
http://erlang.bosqueviejo.net/

NoSQL Database Adoption Trends

InfoQ se le ocurrió una gran idea hacer una encuesta sobre bases de datos NoSQL y ya tiempo ha pasado desde que las bases NoSQL se convirtieron de una moda a algo de todos los días. InfoQ organizo la encuesta como una matriz de 2 dimensiones: propósito y adopción. Eso esta bueno, una base puede ser fácil de adoptar pero la mejora no es significativa.

Por ahorra va ganando MongoDB en adopción y Redis en propósito.

A votar!

 http://www.infoq.com/research/nosql-databases?utm_source=infoqEmail&utm_medium=WeeklyNL_ResearchContent&utm_campaign=072313news


domingo, 21 de julio de 2013

MongoDB for Node.js Developers

La gente de 10gen nos brindan un nuevo curso de su base de datos NoSQL MongoDB, esta vez es para los programadores node.js. Sin más...

Dejo el link:
https://education.10gen.com/courses/10gen/M101JS/2013_August/about

Dejo un video:


sábado, 20 de julio de 2013

Spring Batch & High Performance

Quiero compartir este video de Spring Batch, muy bueno:


Las personas detras del lenguaje

Hace muy poco me entere que la persona que creo Groovy, James Strachan dijo: "I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy." En crespense, si conocía Scala, ni me gastaba en crear Groovy.

La pregunta es quien es  James Strachan? y que hace de su vida ahora? Quienes son las personas detras del lenguaje y cual es su opinión acerca de él.

James Strachan creador de Groovy, tiene un cv impresionante y una opinión muy particular de su lenguaje. Creador del lenguaje Groovy aunque no continuo el desarrollo. Se dedico a crear varios proyectos en Apache y uno más impresionante que el otro; además es commiter de otros proyectos como maven o Jakarta Commons. Actualmente trabaja en Red Hat. Y le gusta mucho Scala.


Martin Odersky creador del lenguaje Scala; profesor en EPFL de la materia métodos de programación. Martin trabajo en lenguajes de programación la mayoría de su carrera. Martin primero estudio la programación estructurada y orientada a objetos como estudiante de doctorado de Niklaus Wirth, luego se enamoró de la programación funcional, mientras trabajaba en IBM y Yale. Cuando Java salió, comenzó a agregar construcciones de programación funcionales. Esto lo llevó a estudiar los lengujes de programación pizza y GJ y eventualmente a Java 5 con los genéricos. Durante ese tiempo, también se desempeño como desarrollador en javac, el compilador de referencia actual de Java.
Entre otras cosas dicto un curso en cursera que se los recomiendo.

Rich Hickey creador del lenguaje Clojure, , Es un diseñador, consultor y arquitecto de aplicaciones de software que trabaja de forma  independiente con más de 20 años de experiencia en todas las facetas del desarrollo de software. Rich ha trabajado en sistemas de programación, automatización broadcast, análisis de audio y toma de huellas digitales, diseño de bases de datos, gestión de rendimiento, sistemas de encuestas de salida y listeners de máquinas.
Rich Hickey describe el desarrollo de Clojure como la búsqueda de un lenguaje que no pudo encontrar: un lisp funcional por defecto, integrado sobre un entorno robusto en lugar de ser su propia plataforma, y con la programación concurrente en mente.

Gavin King es el creador de uno de los frameworks más famosos de lenguaje Java, Hibernate. También trabajo en el  Java Community Process por parte de Red Hat (empresa en la que trabaja) en la definición de la especificación de EJB y JPA y también de CDI. Actualmente trabaja en el lenguaje Ceylon, lenguaje que compila a la plataforma java y a javascript.
Como el explica Gavin, el diseño de Ceylon parte de una pregunta, como sería java si fuera hecho hoy en día? Con esa idea diseña un lenguaje moderno de tipado estático parecido a Java. Ceylon que tiene como principal objetivo actualizar el lenguaje Java.


JRuby fue creado originalmente por Jan Arne Petersen, en 2001. En ese momento y durante los años siguientes, el código fue un porte directo del código 1.6 C de Ruby. Con el lanzamiento de Ruby 1.8.6, comenzó un esfuerzo para actualizar las características y semántica de JRuby. Desde 2001, varios contribuyentes han asistido el proyecto, si bien el equipo actual consta de cuatro miembros principales.
Los desarrolladores principales de JRuby son Charles Nutter, Thomas Enebo, Ola Bini y Nick Sieger. En septiembre de 2006, Sun Microsystems contrató a Enebo y Nutter para trabajar a tiempo completo en JRuby. En junio de 2007, ThoughtWorks contrató a Ola Bini para trabajar en Ruby y JRuby. En julio de 2009, los desarrolladores de JRuby dejaron Sun para continuar el desarrollo de JRuby en Engine Yard.
Jan Arne Petersen también participo de varios proyectos open source como: GNOME Control Center, GTK+, Nautilus, Totem, GPE, FreeCiv, GnuCash.

Jython se desarrollo por Jim Hugunin, Barry Warsaw, Samuele Pedroni, Brian Zimmer, y Frank Wierzbicki.
Jim Hugunin primero creo el lenguaje python luego trabajo en el proyecto jython y llevo Python a Java para luego trabajar en el proyecto IronPython y llevar python a .net. Luego que Microsoft abandonara IronPython Jim fue contrratado por Google, donde trabaja hasta ahora. También trabajo en el diseño de AspectJ.


martes, 16 de julio de 2013

domingo, 14 de julio de 2013

Monitoriando la base con mongostat

mongostat es una herramienta de monitoreo similar a vmstat de linux. mongostat informa de las operaciones realizadas en MongoDB por tipo (por ejemplo, insertar, consultar, actualizar, eliminar, etc). Este formato hace que sea fácil de entender la distribución de la carga en el servidor. mongostat nos permite entender la distribución de los tipos de operación.

Si lo ejecutamos obtendremos esto:

./mongostat
connected to: 127.0.0.1
insert  query update delete getmore command flushes mapped  vsize    res faults  locked db idx miss %    
    *0     *0     *0     *0       0                1|0       0         80m     441m    38m          0     local:0.   0%    
qr|qw   ar|aw  netIn netOut  conn       time
  0|0     0|0      62b      2k       1   20:24:16

Otra cosa muy buena de mongoDB es la Api rest que nos da información de performance; si vamos a: http://host:28017/ donde host es el host, por ejemplo 127.0.0.1 vamos a ver la siguiente pagina:


Veamos que pasa con la performance de mi base MongoDB con mongotop


mongotop es un programa que provee la base MongoDB para poder saber como esta funcionando la base, si una consulta demora mucho, que colecciones se estan escribiendo, etc... Como podrán adivinar su nombre viene del top programa que en linus nos permite ver los procesos y el uso que hacen el cpu y la memoria.

Es muy facil de usar ponemos mongotop y la frecuencia que queremos que refresque por ejemplo:

mongotop 15

Tambien podemos indicarle el host que queremos conectarnos:

mongotop --host <hostname><:port>

o por ejemplo:

mongotop -h 192.168.12.6:8994

la salida es algo así:

$ ./mongotop 10
connected to: 127.0.0.1

                            ns       total        read       write              2013-07-14T23:09:36
             test.system.users         0ms         0ms         0ms
         students.system.users         0ms         0ms         0ms
             pcat.system.users         0ms         0ms         0ms
            local.system.users         0ms         0ms         0ms
          local.system.replset         0ms         0ms         0ms
             local.startup_log         0ms         0ms         0ms

Dejo link:
http://docs.mongodb.org/manual/reference/program/mongotop/



jueves, 11 de julio de 2013

Historia de los lenguajes en Java

Es interesante ver esta imagen, porque por ejemplo para mi Groovy era más viejo que scala y no es así; vean con sus propios ojos:

Y para la gente cual sera el próximo lenguaje, sin dudas que para mi no hay un ganador indiscutido, cada uno se adapta. Les dejo el link del resultado de la encuesta que organizo infoQ:

http://www.infoq.com/research/next-jvm-language

Scala with Style

Este video esta muy bueno se los recomiendo!



miércoles, 10 de julio de 2013

Koalite

El blog recomendado del mes es : koalite.com; es un blog de muy buena calidad y con mucha información y opiniones. Esta bueno! También cuenta con mucha información para la gente de .net

Free Ebooks for Designers and Developers


"Free Ebooks for Designers and Developers" es el titulo del post que nos brinda libros gratuitos sobre diseño y programación:

http://speckyboy.com/2013/06/10/free-ebooks-for-designers-and-developers/

martes, 9 de julio de 2013

Haciendo indices con MongoDB

MongoDB es una base de datos NoSQL muy conocida, es una base documental, sin esquema, lo que guarda es BSON que es un formato muy similar a JSON. En vez de tablas tiene colecciones, vuelvo a repetir; las colecciones no tienen un esquema determinado por ejemplo tenemos la colección friends:

> db.people.find()
{ "_id" : "Mike", "interests" : [  "chess",  "botany" ] }
{ "_id" : "Juan", "interests" : [  "chess",  "Boca Junior", "Linux" ], "facebook": "juanf", gplus:"juanPlus" }
{ "_id" : "Homero", "interests" : [  "beer",  "more beer" ], "facebook": "homeroS" }

Como podemos ver no hay muchos amigos, podrían ser millones o billones o más lo que haría que funcione muy lento. Si buscamos por algún campo, MongoDB hace lo que se conoce como un full scan, revisa todas las colecciones buscando. Es poco eficiente, y aqui es donde aparecen los indices, los indices le permiten encontrar algo a la base, sin recorrer toda la colección; es algo así como el indice de la guía telefónica con el podemos encontrar un número más rápidamente. Como podemos hacer un indice en MongoDB? 

db.collection.ensureIndex(keys. options)

Para nuestro ejemplo sería así:

db.people.ensureIndex({"facebook":1})

Podemos utilizar varios atributos para indexar y en mongoDB podemos indexar arreglos, ya se lo que estas pensando lleno mi base de indixes y todo va andar super rápido. Pero no es así los indices agilizan las consultas pero penalizan las modificaciones e inserciones, tenes que insertar o modificar en la colección y el indice. Por lo tanto no es recomendable generar indices que no se van a usar, no voy a buscar nunca a un amigo por su cuenta de google plus entonces no hago el indice. 

Con el 1 se especifica el orden 1 ascendente y -1 descendente. 

Que pasa cuando no existe siempre el campo? se indexa igual pero vas a tener problemas si el index es único, supongamos:

db.people.ensureIndex({facebook:1}, { unique: true })

Dejo link:


Apache Whirr

Apache Whirr es un conjunto de librerías para el funcionamiento de servicios en la nube. Pero eso que significa? que nos provee Whirr?

  • Ejecutar servicios de la nube de forma neutral. Usted no tiene que preocuparse acerca de la idiosincrasia de cada proveedor.
  • Un API de servicios comunes. Los detalles de implementación son particulares para cada uno de los servicio.
  • Provee una forma de conectarse rápidamente con la nube con una configuración por defecto que luego se puede cambiar. 
  • También puede utilizar Whirr como una herramienta de línea de comandos para el despliegue de clusters.
Si queremos instalar este producto en linux solo tenemos que hacer:

sudo apt-get install whirr

Esto es un debian compatible.

Y si somos más valientes bajamos el codigo y lo compilamos:

git clone git://git.apache.org/whirr.git
mvn install

Y luego lo agregamos al PATH

export PATH=$PATH:/path/to/whirr/bin

Y con esto lo tenemos andando!!

El objetivo de este producto es poder llevar a Hadoop a la nube de forma fácil,y de esta forma unir Big data con cloud.

Como podremos imaginar se distribuye con licencia Apache 2.

Dejo link:
http://whirr.apache.org/
http://whirr.apache.org/docs/0.8.1/quick-start-guide.html

Dentro de Google

Quiero compartir este documental bastante interesante sobre google:


Infografía de los proyectos más descargados de Github


Microsoft regala un monton de libros


La gente de Microsoft decidió regalar muchos libros sobre su tecnologías y eso es ta perfecto.

Dejo link:
http://blogs.msdn.com/b/mssmallbiz/archive/2013/06/18/huge-collection-of-free-microsoft-ebooks-for-you-including-office-office-365-sharepoint-sql-server-system-center-visual-studio-web-development-windows-windows-azure-and-windows-server.aspx

viernes, 5 de julio de 2013

Eclipse Kepler


Eclipse kepler es un nuevo release de mi IDE favorita, por lejos. Donde me siento cómodo. Fue muy esperado este release por mi, porque Eclipse Juno no funciona muy bien. La performance de Juno decayó mucho y hay varios bug, bastante grandes. Por lo tanto estoy muy contento con Kepler.

Entre las novedades que trae son:

  • Eclipse Web Tools Platform (WTP) 3.5 : soporte para el desarrollo Java EE 7.
  • Stardust 1.0 : provee un completo soporte para BPM (Business Process Management), 
  • Orion 3.0 : incluye características de usabilidad importantes y más fácil desarrollo de aplicaciones java para servidor. 
  • Business Intelligence and Reporting Tools (BIRT) : soporte para Big Data y bases NoSQL como mongoDB y Casandra. 
  • Mylyn : ahora incluye un mejor soporte para las revisiones de código a través del navegador y la integración con Gerrit.
  • Maven Integration for WTP: hace que ahora sea más fácil de usar Maven en proyectos Java EE con Eclipse.

Y espero que tenga mucho BugFixing y que le hayan dado bola a la performance.

Quien es Kepler?

Johannes Kepler, figura clave en la revolución científica, astrónomo y matemático alemán; fundamentalmente conocido por sus leyes sobre el movimiento de los planetas en su órbita alrededor del Sol. Fue colaborador de Tycho Brahe, a quien sustituyó como matemático imperial de Rodolfo II.
En 1935 la UAI decidió en su honor llamarle «Kepler» a un astroblema lunar.

Dejo link:
http://www.eclipse.org/kepler/


O'Reilly ofrece acceso gratuito online a 10 de sus libros

Leyendo javahispano me encontré con la grata sorpresa, de que O'Reilly  ofrece acceso gratuito a 10 de sus libros. No se sabe bien el porque; pero a disfrutar!!

Dejo link:
http://www.javahispano.org/portada/2013/7/4/oreilly-ofrece-acceso-gratuito-online-a-10-de-sus-libros.html
http://www.pixelstech.net/article/1372856157_Read_10_new_books_from_O_Reilly_for_free

Documental Codigo Linux

Quiero compartir el siguiente documental sobre Linux, esta muy bueno!!


miércoles, 3 de julio de 2013

Fedora 19 esta aquí !!


El 2 de Julio se dio a conocer la versión 19 del sistema operativo Fedora, y ya lo estoy bajando!!

La novedades que nos trae son:

  • Diversas herramientas destinadas a mejorar el soporte para impresoras 3D y modelado en 3D 
  • El reemplazo de MySQL por MariaDB 
  • Mejoras importantes en el instalador Anaconda 
  • Nuevas versiones de software de desarrollo como OpenShift Origin, Node.js, NPM, Ruby 2.0 y Rails 4, entre otros.
  • GNOME 3.8, 
  • KDE 4.10, 
  • MATE 1.6,
  • kernel Linux 3.9, 
  • Firefox 22, 
  • LibreOffice 4  
  • un largo etcétera

Que más agregar? A probarlo!

Dejo link:
https://fedoraproject.org/es/get-fedora
http://download.fedoraproject.org/pub/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso
http://docs.fedoraproject.org/en-US/Fedora/19/html/Release_Notes/index.html

Software Engineering for Software as a Service!

La gente de EDX publico un nuevo curso muy interesante sobre software como servicio. En este curso nos enseñan a diseñar software como servicio, utilizando la plataforma ruby on rails.

Dejo link: https://courses.edx.org/courses/BerkeleyX/CS-169.1x/2013_Summer/info

lunes, 1 de julio de 2013