Ayudando al Open Source

Varias veces me ha pasado que quiero iniciar un software que considero nuevo y creo que lo es, pero finalmente buscando hay más de uno haciendo lo que yo necesito. La problematica ra dica en que muchos requieren un servidor en internet o una infraestructura que no se tiene, e hilando más fino estan pensados de cierta forma que no me gusta. Es ahí donde uno toma la decision de comenzar uno propio, previo a eso, por lo menos yo recomiendo ciertas lecturas que son de utilidad para iniciarse en este mundo de open source y no reinventar la rueda

Primero como unirse o que tener en cuenta para unirse a un proyecto Open Source: On the hunt for the right open source project?.

Lecturas complementarias como 14 Ways to Contribute to Open Source without Being a Programming Genius or a Rock Star, Contributing to Open Source on GitHub, o unirse a OpenHatch en donde puedes encontrar un proyecto que se ajuste a tus conocimientos o generar uno.

Es bueno destacar que Facebook tiene como 200 proyectos inscritos en GitHub, comprometiendose así con el Open Source de forma clara, en todo caso muchos de los proyectos requieren tener los problemas de Facebook, o sea, cuando tengas 900 millones de usuarios, cominza a pensar en alguno de estos proyectos.

Finalmente destaco que existe una agrupacion de compañías que no le tienen miedo al Open Source y que se reunen para efectivamente traspasar tecnologías y otras conocimientos: //TODO.

Publicado en Arquitectura de Software, Desarrollo, Twitter

Finagle, el balanceador que le ayuda a Twitter escrito en Scala

Es imposible explicar la necesidad de un balanceador de carga, o la de implementar tecnologías avanzadas, salvo que pertenezcas a empresas como twitter que tiene un alto numero de usuarios y que además su servicio es utilizado concurrentemente.

El pensar que ellos en promedio tienen 500 millones de twits te hace pensar que no tienen un solo servidor, y además la aplicacion debe ser agnostica al nombre de este, en muchos casos le exige a su departamento de ingenieria la ocurrencia de utilizar nuevas tecnologías, y si ya no existen, inventarlas.

Es asi como twitter utiliza una tecnología llamada Finagle, que es un RPC implementado sobre JVM que permite crecer y escalarse a mnultiples servidores.

Esta escrito en Scala (por lo tanto en Java… ya hablare de Scala mas adelante) y lo que hace es utilizar la infraestructura de forma de distribuir la carga en los servidores que estan activos y asi procesar la información.

Su arquitectura se espresa a traves de este diagrama:

Finagle

Publicado en Arquitectura de Software, Desarrollo, Twitter

Como Autoscale ayuda a Facebook a ahorrar energia

Una de las preguntas que me hacen recurrentemente es que hace un arquitecto… La respuesta es de esas que son muy simples y muy complejas a la vez.
Se debe preocupar transversalmente de todo, es decir de que y como lo hace un programador, del que y como se libera una aplicación, en que sistema operativo debiese ir, en que hardware debiese estar, pero cuando todo eso a ya ha sido superado, cuanta energia se gasta.

Este es el caso de Facebook, en donde yo creo que varios temas de desarrollo estan solucionaods y temas de arquitectura ya están sanjados, pero hoy la pregunta es como pago la cuenta de luz a fin de mes, y en esto ayuda Autoscale que es un balanceador desarrollado por gFacebook para darle carga a los servidores que ya tienen algo de carga, con lo que ahorran energía.

La idea es la siguiente (puedes leerla en inglés desde el mismo Facebook) Si un servidor desocupado consume 60watts, uno medianamente ocupado consume 130watts y uno muy ocupado consume 150watts, se tiene que pasarle una petición a uno desocupado hace que pase a gastar más del doble, por lo que la decision de pasarle una peticion a uno medianamente ocupado, es una buena idea.

Autoscale

Por eso la implementación de autoscale se basa en pasarle peticiones a servidores que estan medianamente ocupados y asi gestionar las peticiones, cambiando el Round Robin, por esta heuristica, lo que logra el ahorro de energía y un menor costo en la cuenta de luz.

Referencia

Making Facebook’s software infrastructure more energy efficient with Autoscale

Publicado en Arquitectura de Software, Desarrollo, Web

Eclipse: Como una pequeña introducción

Aqui un video que muestra desde el comienzo como descargar e instalar eclipse. En esta caso se descarga la version JEE.

Publicado en Apache, Desarrollo, Eclipse, Java, JBoss, JEE

Conectarse con una VPN Cisco a través de VPNC en CEntOS

Primero deben recordar conectarse a los repositorios necesarios debido a que vpnc no esta en todos los repositorios.
Personalmente instale epel-release-7-1.noarch.rpm como repositorio antes de hacer la instalación de vpnc.
Luego de la instalacion del repositorio solo tuve que hacer

yum install vpnc

Y listo.
El detalle llego después debido a que para conectarme mis clientes me entregan su archivo PCF, por lo que tuve que seguir los siguientes pasos para hacerlo:

wget http://svn.unix-ag.uni-kl.de/vpnc/trunk/pcf2vpnc
chmod +x pcf2vpnc 
mv pcf2vpnc /usr/local/bin/
pcf2vpnc vpn.cliente.cl.pcf > vpn.cliente.cl.conf
vpnc vpn.cliente.cl.conf
//todas las cosas que tenia que hacer
vpnc-disconnect

No he tenido ningun problema hasta el momento.

Publicado en CEntOS, Linux, RedHat

Videos Instalación Java, Netbeans, Eclipse ADT (Android) y Anypoint Studio

Debido a mis clases he necesitado hacer un par de videos y dejarlos disponibilizados para que puedan ver instalaciones que aunque son de Perogrullo, es valido que una imagen vale más que mil palabras.

Aun cuando yo debo reafirmar mi mala costumbre de instalar todos los java, eclipse, netbeans o “studios” que hacen algo en la ruta c:\opt todo esto por mostrar un incipiente método de trabajo propio que es util sobretodo para cuando se utilizan programas que después iran en un batch de windows.

Aquí va la lista

Instalación Java 1.4.2

Instalación Java 5 (1.5)

Instalación Java 6 (1.6)

Instalación Java 7 (1.7)

Instalación Java 8 (1.8)

Instalación de Netbeans 8.0

EClipse ADT (Android Developer Tools)

Anypoint Studio

Publicado en Android, Desarrollo, Eclipse, Java, JEE