Ahora que tengo mi servidor Mac mini ocioso creo que es hora de poner a trabajar ese equipo. Por ahora me estoy bajando las actualizaciones para OSX y poniéndole las pilas a los sensores
Ahh, si sólo los bemoles se aplicaran a la música. Pero no es así, en este caso el código abierto u OpenSource también tiene los suyos. En particular voy a hablar de los proyectos gratuitos a los cuales casi llamaría “pasatiempos“, en este caso StupidZombie.
Es un proyecto costoso: StupidZombie es bien costoso. Cuesta tiempo que pudiera estar utilizando en otras cosas. Me cuesta el dominio de DNS, el hospedaje. Cuesta el esfuerzo de convencer a otras personas para que se involucren y participen en el proyecto.
Es dificil conseguir colaboradores: Nadie quiere trabajar en un proyecto pequeño, y menos de gratis. Si el proyecto es en Español entonces las posibilidades de conseguir colaboradores bajan dramáticamente (yo tengo varias teorías, con gusto las discutimos en cuanto me dejen sus comentarios). Hay que promocionar el proyecto en muchos sitios, de muchas maneras para darlo a conocer, explicando el potencial (Por ejemplo, después de mucho trabajo tuve la suerte que DrRomney se interesara en el diseño del proyecto. De allí nació Blockhead y el sitio web del proyecto).
Requiere dedicación: La tentación de hacer cualquier otra cosa a estar echando código en solitario es grande. Revizar cucarachas, probar cosas nuevas. Si usted no disfruta de su proyecto entonces ni siquiera empiece (por ejemplo muchos de los proyectos en Source Forge nunca liberaron una linea de código y ahora están abandonados).
Con el tiempo uno aprende a hacer mejores propuestas. Por ejemplo, uno de mis primeros pasatiempos OpenSource fué CVEBrowser. En aquel entonces estaba aprendiendo Servlets y JSP y me pareció buena idea dejar algo atrás. El proyecto llegó a su versión 1.0 y allí murió ya que nunca hubo interés de nadie en ver nuevas cosas (sin embargo hasta el día de hoy hay descargas del código desde su sitio web).
Al mismo tiempo PingBlog (el ancestro de StupidZombie) y ElAngelNegro (Kodegeek) nacieron. PingBlog nunca fué popular y ciertos cambios le dieron nueva vida el proyecto. Kodegeek es bien experimental y recoge todas (bueno, casi todas) los experimentos con código de los cuales he hablado en este blog a través de los años (todos los meses tiene descargas de código, así que hay bastante interés en el proyecto, pese a que son piezas de código aquí y allá)
Algunos éxitos vinieron de otros proyectos: Hace ya unos años atrás yo era un usuario avido de OpenNMS. En ese tiempo el proyecto no tenia un ‘plugin’ para monitorear bases de datos usando JDBC (sólo uno que detectaba si el puerto en TCP/IP estaba abierto o no). Después de jugar un poco envié el código al proyecto y (suerte para mi) fué aceptado. Hoy en día estan trabajando en un código más limpio, pero en ese entonces esta pieza de código ayudo a unos cuantos (y yo muy agradecido por poder ayudar).
Mercadeo, mentiras y vídeo: Como cambiar el nombre del proyecto ayuda: Desde que el proyecto cambio su nombre a StupidZombie (bendito dominio en DNS) ha habido más colaboración e interés. Gracias a esto conseguí que alguien se interesara en el proyecto y creara un diseño atractivo que a logrado que la gente se baje la aplicación, juegue con ella. Las redes sociales como Facebook, Twitter y proyectos como Kenai.com han ayudado mucho, en comparación con métodos más tradicionales como anunciar el proyecto en Freshmeat.net o hospedarlo en Source Forge
Aún es costoso competir con el código comercial: Por ejemplo, obtener certificados digitales para firmar el código es costoso. Si lo quieres hacer gratis es un proceso complejo. Promocionar el producto como si fuera comercial cuesta dinero (por ejemplo la tienda Java Store no es grátis, ya que ellos tienen que pagar los costos de mantenimiento y distribución). Si a eso le suma el hecho de que nadie paga por código abierto (olvidense de las donaciones, yo nunca he recibido una en ninguno de mis proyectos)
Yo soy de los que cree que hay que dejar algo atrás, algo que hable de ti. No tiene que ser perfecto, sólo tiene que ser útil. Si es útil entonces seguirá creciendo, no importa si no se le dedica la misma atención. El hecho de involucrarse en varios aspectos del desarrollo de un proyecto (no sólo el echar código) es altamente gratificante ya que se aprenden muchas cosas, sobre todo el como actuar en diferentes roles (promotor de mercadeo, desarrollador, gerente de producto, diseñador de imagen y madrina del equipo ).
Checking for remote updates … This may be disabled using -noupdates flag.
Checking remote fdt.jar at URL: http://monalisa.cern.ch/FDT/lib/fdt.jar
Current fdt.jar path is: /Users/josevnz/Desktop/fdt.jar
Connecting … OK
Feb 21, 2009 10:20:32 PM lia.util.net.common.Config <init>
INFO: FDT started in client mode
…
INFO: [ FDTReaderSession ] No post processing filters defined/processed.
[ Sat Feb 21 22:25:46 EST 2009 ] – GracefulStopper hook started … Waiting for the cleanup to finish
[ Sat Feb 21 22:25:46 EST 2009 ] – GracefulStopper hook finished!
[ Sat Feb 21 22:25:46 EST 2009 ] FDT Session finished OK.
Bueno, la instalación es trivial pero yo no pude utilizar compresión para copiar mis archivos. Después de probar algunos parametros me decidí por esto:
auyan:Downloads josevnz$ time bbcp -P 4 -v -w 2M SentillaWork-1.1.1.tar 10.0.1.198:/Users/josevnz/Downloads/SentillaWork-1.1.1.tar
bbcp: Invalid argument setting FD limit
bbcp: 10.0.1.196 kernel using a send window size of 2098152 not 2097184
bbcp: Creating /Users/josevnz/Downloads/SentillaWork-1.1.1.tar
bbcp: At 090221 23:34:28 copy 0% complete; 0.0 KB/s, avg 0.0 KB/s sdv 0
bbcp: At 090221 23:34:32 copy 0% complete; 0.0 KB/s, avg 0.0 KB/s sdv 0
…
Hmm, ¿7 minutos? Nada bueno, considerando que scp y FTD hacen un buen trabajo.
Si bien no puedo decir que bbcp es una herramienta más lenta comparado con FDT al menos se que es lo bueno para mi red. Me guestó mucho FTD ya que se puede integrar fácilmente con aplicaciones escritas en Java y su instalación / ejecución es trivial (además de tener un buen rendimiento).
A usted seguro le tocará experimentar con los parámetros disponibles para cada aplicación, así que paciencia y buena suerte
Veneblogs: java, opensource, bulk copy, tcp
En la entrega anterior les mostraba como acelerar la copia de archivos grandes cambiando el algoritmo de cifrado y la compresión en scp; Estos resultados se pueden mejorar un poco más utilizando un algoritmo de compresión mejor que Gzip.
Que porquería. No es mejor que Gzip. ¿Pero si utilizamos la compresión rápida, los cuales sólo afectan la velocidad de compresión más no descompresión (nivel 1)?
¡Apenas 30 segundos mejor que Gzip utilizando la compresión por omisión (7) !. Me pico la curiosidad y decidí utilizar de nuevo a gzip pero con nivel de compresión mínima:
Bueno, que sorpresa. Resulta que el venerable Gzip aún le da palo a LZMA
Ya les había comentado que estoy jugando con varias herramientas, para quedarme con una de ellas. Les recomiendo que se lean este tutorial del departamento de energía de los Estados Unidos sobre herramientas y mejor utilización del ancho de banda.
Algo que se me olvidaba comentar, en este ejemplo utilize un sólo archivo y tar, lo cual no tiene mucho sentido, sin embargo Tar es mucho más eficiente cuando enviamos varios archivos grandes a la vez.
Veneblogs: lzma, linux, gzip, scp, opensource, copiando archivos, copying big files
10 minutos para 295MB. No está tan mal para una red inalambrica. Sin embargo si aplicamos estos dos trucos juntos:
Aplicamos un algoritmo de encriptación débil, dado que no nos importa mucho que el contenido sea interceptado y analizado. Si tardamos menos tiempo cifrando los datos y más enviandolos eso es bueno.
Comprimimos los datos a medida que los enviamos en la red. Siempre es bueno enviar menos (el lado malo es que el CPU de ambos lados trabajará más pero eso no es un grave inconveniente).
En OpenSSH estos dos parametros con ‘-c arcfour’ (blowfish también es bueno) y -C (-C utiliza gzip por omisión). Probando de nuevo:
real 5m56.157s
user 0m19.166s
sys 0m2.916s
auyan:Downloads josevnz$
¡5 minutos nada más! Una mejora substancial.
Recuerde que también usted puede emplear este truco con ssh y muchos archivos:
tar cf – * | ssh -C -c archfour “cd $HOME && tar -xf -)
Sin embargo siempre existen maneras de mejorar el resultado. ¿Existe otra forma? En otra entrega les comentaré como hacer el proceso aún más rápido.
Veneblogs: scp, ssh, openssh, archivos grandes
Todo el mundo hace una lista de las 10 cosas más llamativas en su lenguaje o plataforma favorita.La mia no es muy original pero son cosas que pude probar en su momento o espero probar cuando tenga la oportunidad.
Sentilla Perk: Son diminutos, capturan temperatura y movimiento. Su funcionalidad puede ser extendida ya que están programados en Java, además de que se pueden conectar con otros sensores. Si bien no es OpenSource su precio es mucho menor a lo que cuesta un SunSpot.
Java Pen: Logré verlo en JavaOne 2008. Permite grabar conversaciones a medida que usted escribe sus notas, compartir contenido y se puede extender ya que el software está escrito en Java. Le veo mucho futuro en el 2009.
Java en el IPhone: Apple no entiende que es inútil no poner Java o Flash en el Iphone. Sus usuarios así lo quieren, los hackers ya lo hicieron. 2009 seguro es el año en el que Java entra en el Iphone.
NetBeans: Ahora puede competir con Eclipse en velocidad. Y con soporte directo para JavaFx se hace aún más interesante.
Servlets 3.0: Nuevas características lo hacen atractivo para soporte empresarial de aplicaciones web. En particular las nuevas anotacions y mejor soporte de entornos como Spring directamente en la especificación.
Java FX: El intento más agresivo de SUN hasta la fecha para posicionar Java en el escritorio. Logré jugar con JavaFx en JavaOne del 2008 y realmente es muy interesante. Falta ver si termina de despegar este año, yo en particular estoy jugando a ver que tanto logro hacer con este.
Java 7: Correción de errores, modularización para mejorar la experiencia del usuario en el escritorio son algunas cosas interesantes que trae la máquina virtual este año.
Buglabs: Una nueva plataforma, totalmente OpenSource. Corre Java también, lo cual la hace muy interesante. Esperen ver nuevos componentes en el 2009.
Android: Promete mucho pero su soporte aún es mediocre por parte de TMobile. Por ejemplo en Connecticut no lo venden (hay que comprarlo en New York) bajo el pretexto de que no hay soporte de 3G. Al final terminé comprandome un Itouch el cual uso con mi accesso Wifii o con el de Cablevision. No todo está perdido, aún esperamos por mejor soporte, queda esperar si este año Android termina de establacerse.
Un momento, ¿qual es el número 10 de esta lista? Usted decida. Pero definitivamente este año trae un montón de cosas por las cuales aún podemos estar interesados en esta plataforma
No hay nada más fustrante (por no poder escribir la palabra que realmente describe mi estado de animo) que sentarse a trabajar en una idea y encontrarse conque las herramientas no funcionan.
En este caso estoy tratando de liberar código (ya probado un millón de veces) desde Sentilla Eclipse hacia el mote. Pero Eclipse se tira 3 peos:
serial@ftd/M4ASU2W5:115200: resynchronising Use replacement opcodes 6:34:59: PacketHandler started. 6:34:59: MimeoConnectionListener starting 6:34:59: HostConnectionListener starting 6:34:59: HostCollectionThread started. 6:34:59: Creating CollectionProtocol Ack listener... 6:34:59: Server started. 6:34:59: Listening on: 127.0.0.1:9002 6:34:59: Listening on: 127.0.0.1:10004 java.io.FileNotFoundException: com.sentilla.mote.clientservices.ClientServices.oos (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:106) at java.io.FileInputStream.(FileInputStream.java:66) at com.sentilla.virtual.ImageEnvironment$Image.init(ImageEnvironment.java:179) at com.sentilla.virtual.ImageEnvironment$Image.(ImageEnvironment.java:206) at com.sentilla.virtual.ImageEnvironment.addImage(ImageEnvironment.java:317) at com.sentilla.virtual.HostService$MimeoSync.completed(HostService.java:204) at com.sentilla.net.mimeo.ProxyImage.completed(ProxyImage.java:164) at com.sentilla.net.mimeo.ProxyImage$Slingshot.completed(ProxyImage.java:114) at com.sentilla.net.mimeo.MimeoImage.writePage(MimeoImage.java:55) at com.sentilla.net.mimeo.ProxyImage$Slingshot.writePage(ProxyImage.java:107) at com.sentilla.net.mimeo.Mimeo.process_outputs(Mimeo.java:501) at com.sentilla.net.mimeo.Mimeo.run(Mimeo.java:790) at java.lang.Thread.run(Thread.java:613) 6:35:22: mimeoImageComplet: 600949431; {binHashId=600949431, user=josevnz, mimeoSlot=1, imageData=com.sentilla.net.mimeo.ProxyImage$Slingshot@7d51a6, host=auyan.local, binary=com.sentilla.net.mimeo.ProxyImage$Slingshot@7d51a6, size=2450, date=Sat Oct 18 06:15:51 EDT 2008, name=com.sentilla.mote.clientservices.ClientServices}
Curiosamante esto comenzó a ocurrir después de un parche de seguridad liberado por Apple hace poco. Sin emnargo no puedo probar que esten relacionados. Voy a probar desde Windows.
Gracias al Geek extraordinarioSebastian Delmont tuve la oportunidad hoy de ir a visitar a la gente de Buglabs, quienes estaban haciendo unOpenHouse en sus oficinas en Soho. Realmente después de todas las noticias negativas en el sector financiero (incluyendo el día de hoy en el cual las acciones de todas las compañías volvieron a caer) fué increíblemente refrescante hablar de tecnología y no de negocios.
Corcho es corcho
¿Pero y que es Buglabs? Buglabs es una compañia la cual fabrica componentes modulares basados en el modelo Open Source. Si, el concepto es innovador ya que tanto el software como el hardware son abiertos. El módulo principal corré Linux y encima de eso tienes Java o si quiere código nativo compilado con GCC.
Si no entendió nada no se preocupe. Lo explico de nuevo, un poco diferente esta vez: Es como tener un lego en el cual cada ladrillo agrega funcionalidad nueva al juguete. La diferencia es que el lego corre Linux y se puede programar en Java.
La plataforma es muy interesante. No sólo se tiene acceso directo a Linux y Java en el aparato, sino que además es modular (por ejemplo ya venden acelerómetro con sensores de movimiento combinados, GPS, camara digital, Wifi, entre otros). También cuenta con un IDE basado en Eclipse lo cual lo hace idóneo si usted es un desarrollador de Java.
Al verlo usted podría pensar que es muy similar a Android. Sin embargo esta plataforma va más allá, ya que la compañía está en capacidad de incluir varias máquinas virtuales en su producto. El sólo hecho de combinar módulos sin necesidad de soldadura y contar con Java como lenguaje de desarrollo lo hace muy interesante como herramienta de enseñanza y aprendizaje, o para el desarollo de aplicaciones a la medida (el sitio web oficial cuenta con una colleción de demostraciones hechas con el producto).
Sin embargo Buglabs no sólo corre Java sino que usted puede utilizar GCC para compilar su código nativo. No pregunté pero no veo imposible tener Python, Ruby o Perl dentro del dispositivo (ciertamente Shell scripting viene grátis con la aplicación de terminal que viene instalada).
La base cuesta un poco más de $340 dolares, y cada modulo cuesta por encima de $20. La camara improvisada con Wifi mostrada arriba en la foto cuesta un poco más de $500 (ya que es una combinación de varios modulos), así que debe estarse preguntando, ¿no es más barato comprarse un Sentilla Perk o Arduino?
Yo creo que el precio de este producto va a bajar una vez que la demanda suba (debe haber producción en masa). Es muy temprano para criticar el precio (habrá que esperar unos 8 meses más o menos), sobre todo si te tiene en cuenta el alto valor que tiene una plataforma tan versátil. Lo otro es que una comparación con Sentilla o Arduino es injusta ya que este no es sólo un dispositivo empotrado que puede ser programado en Java, sino una plataforma completa que corre Linux en la cual hasta se puede compilar código.
Lo reto a que haga esto en su IPhone o teléfono con Android
Entonces la pregunta obligada es ¿cuales son las posibilidades de supervivencia de una compañía la cual sólo hace herramientas para “aficionados”?. El CEO de Buglab me comentó que ellos no están cerrados a ninguna posibilidad, y que el “Bug” es una prueba de lo que ellos pueden hacer como compañía (hospitales, seguridad, etc. Cualquiera que necesite una plataforma modular a la medida con suficiente poder).
Yo de verdad creo que estamos al frente de una compañía que ofrece un servicio único, basado en el modelo Open Source. El hecho de poder ofrecer servicios basados en una plataforma abierta implica que sus clientes se sentiran más comodos ya que no estarán casados con un sólo proveedor de hardware / software (como es el caso de Apple con sus excelentes productos los cuales son todos cerrados).
Si usted es paciente, ya verá otras compañias haciendo modulos compatibles con buglabs. No veo como no se pueda desarrollar un ecosistema alrededor de este producto, tal cual y como ha pasado con Arduino.
La visita fué super agradable, los “chamos” de buglabs nos hicieron sentir como en casa mientras nos mostraban sus juguetes. Es raro que alguien te invite a jugar a su casa en estos días, y más si tienen juguetes sofisticados, por lo cual no queda otra más que darles las gracias y esperar que hagan más eventos invitando gente a sus cuarteles generales (revicen el website, ellos tienen un blog muy activo con información útil).
Ya para finalizar, los dejo con las fotos de mi visita a los cuarteles de Buglab en SOHO. Espero que las disfruten y se hagan una idea de lo que vimos allí.
Si, es oficial. AguaYFuego ahora tiene un hogar en Sentilla Labs. Pienso colocar el código fuente completo bajo la licencia Apache en Source Forge usando CVS (más adelante migraré a subversion pero estoy más interesado en echar código que en aprender otra herramienta para controlarlo).
Esten pendientes, estoy esperando que me aprueben la página del proyecto en Source Forge.
Comentarios recientes