El ascenso del Programador Ciudadano

Con la llegada de los blogs y el nacimiento de la web 2.0 llegó lo que muchos han llamado el "periodismo ciudadano", es decir cualquiera con acceso a Internet puede crear un blog y comentar algún tema de actualidad o hacer una denuncia, sea esta fundada o no. Lógicamente los periodistas en un principio ignoraron todo este movimiento y lo llamaron chime 2.0, siete años después todo medio de prensa que se respete tiene ahora una sección de blogs, que suele ser la más leída de sus secciones web.

Muy bien desarrolladores de aplicaciones, ya sean estas de escritorio, web o de móviles, preparence que el "programador ciudadano" (en inglés Citizen Developer) ha llegado y amenaza con crear el mismo tipo de caos que crearon los peiodistas ciudadanos. Según un informe de Gartner Group publicado hace un año, se espera que para el 2014, el 25% (una de cada cuatro) aplicaciones habrá sido escrita por un programador ciudadano. Vista la actual aparición de herramientas que permiten crear aplicaciones completamente funcionales y casi sin escribir una sóla línea de código como pueden ser App Inventor, Application Craft o Appcelerator Titanium, alguien podría pensar que Gartner es muy conservativa en sus proyecciones y ese número podría ser alcanzado antes.

 Pero que es un programar ciudadano o como entiende Garnet el término, pues del documento presentado por ellos extraigo esto:

"Future citizen-developed applications will leverage IT investments below the surface, allowing IT to focus on deeper architectural concerns, while end users focus on wiring together services into business processes and workflows,” said Eric Knipp, senior research analyst at Gartner. “Furthermore, citizen development introduces the opportunity for end users to address projects that IT has never had time to get to — a vast expanse of departmental and situational projects that have lain beneath the surface"

Es decir en teoría el programador ciudadano es el usuario elevado a la categoría de desarrollador, para ello debe contar con herramientas 100% gráficas que le permitan abordar el desarrollo de aquellas aplicaciones que necesita para automatizar su labor diaria y dejar al departamento TIC a cargo sólo de la infraestructura, liberandolo del desarrollo de apliaciones pequeñas que por lo general nunca son atendidas.

Esta no es la primera vez que escucho este tipo de pronosticos, recuerdo que cuando apareción dBase II y luego dBase III, una nueva generación de "desarrolladores" apareció en las empresas, claro todos ellos con muy poca formación en los fundamentos de la programación y que dejaban mucho que desear tanto en el diseño de las aplicaciones, como en la seguridad de las mismas. Pero la masa de programadores aumentó.

Luego con la llegada de Windows y VisualBasic, otro gran número de "desarrolladores" se sumo a la mezcla. Otra vez, los mismos problemas de falta de criterios en el diseño de las estructuras internas de las aplicaciones y de los datos que daban sustento a las aplicaciones, así como muy pobres estándares de seguridad.

En fin en cierta forma, los problemas de este tipo de aplicaciones desarrolladas por usuarios con herramientas de programación fáciles de usar, estaban circunscritos a un entorno local. El desarrollador ciudadano ahora aspira a crear aplicaciones web accesibles por casi todo el mundo, así que cuando esto llegue ya me imagino explicandole a un programador ciudadano que significa "escalabilidad".

Lo que es inevitable es que el programador ciudadano llegue y lo cambie todo, los factores que lo traeran al mundo TIC, son cuatro:

  • Personalización en masa: El programador ciudadano sabe cómo personalizar una solución a sus propias necesidades y preferencias. Piense en su cuenta de facebook, lo más probable es que usted ha tomado todos los componentes de Facebook (o sus partners) y ha compuesto una página que ofrezca una solución que satisfaga sus necesidades e intereses personales. En una sola plataforma hay 500 millones de soluciones facebook diferentes – ¡todos creados por los programadores de los ciudadanos!
  • Computación en la nube: En los viejos tiempos que se necesitan para instalar y configurar tus propios servidores y bases de datos, así como la infraestructura de red, incluso antes de que pudiera empezar a pensar en la aplicación real que se va a construir. Con la disponibilidad de recursos en todas partes de la nube que hay hoy en día, un programador ciudadano se pueda concentrarse en la funcionalidad empresarial que desee para la aplicación que planea desarrollar y no tener que preocuparce acerca de la versión de la base de datos es necesario instalar. Un gran libro que ayuda a comprender el impacto de la computación en la nube antes de que fuera llamada computación en nube fue  "The Big Switch" por Nicalas Carr.
  • Los cambios en la demografía: Como resultado de la jubilación de los baby boomers, y la maduración de los "nativos digitales" significa que la fuerza de trabajo  espera una tecnología para el consumismo de la misma tecnología, por lo tanto no es una tendencia de estas personas a "es sólo trabajo", es su forma de vida.
  • La evolución de herramientas: Como consecuencia de la mejora continua de las herramientas de desarrollo y su facilidad de uso, los programadores ciudadanos pueden crear aplicaciones de negocio cada vez más complejas sin tener que depender de los siempre escasos recursos del departamento TIC.

Así que si eres programador o tienes una empresa que se dedica sólo al desarrollo de aplicaciones, preparate porque vas a descubrir que sintieron los periodistas y los periódicos con la llegada de la web 2.0. Y los que son cyberdelincuentes, estarán de plácemes con la proliferación de aplicaciones de pobre diseño y peor seguridad.

Vampiros vs. Hombres Lobo

El presente título copia el de un post del blog Coding Horror, en el cuál Jeff Atwood nos cuenta como muchas veces los programadores (que el asocia con los vampiros) entran en conflicto con los system administrators (que son representados como hombres lobo). La pregunta que origino el post de Jeff, fue formulada por su sysadmin Kyle Brandt en el blog de Server Fault, que tanto control se le debe dar a los programadores sobre servidores en producción.

Aunque como dice tanto Jeff, no hay una respuesta simple y por el contrario en lugar de buscar este conflicto entre sysadmin y programadores, lo que dbe haber es una autoridad superior que defina objetivos claros para la empresa y los haga trabajar juntos en busca de un objetivo común, en lugar de que inicien discusiones unos contra otros. Jeff dice claramente que en muchos lugares donde esto ocurre es simplemente porque la división del trabajo no ha sido hecha adecuadamente y hay demasiado tiempo libre para perderlo en disputas sin sentido.

Por otro lado algo que no se discute en el post es que suscede en la empresas pequeñas, en donde los roles se vuelven más difusos debido a las limitaciones de presupuesto. Es en las pequeñas empresas donde por lo general el programador hace las veces de sysadmin o puede suceder que un sysadmin termina convertido en un programador por acceidente.

Yo, soy por definición un sysadmin, ya que tanto por vocación, como por formación soy un ingeniero (mecánico electricista para más señas). Es decir carezco del sentido estético del que muchos programadores se enorgullecen. Por el contrario yo estoy más enfocado en eficacia y eficiencia, es decir terminar el proyecto dentro del presupuesto, en el tiempo estimado aunque haya que aplicar ciertos ajustes (muchas veces recortes) en el camino, ya que una solución parcial es infinitas veces mejor que una solución perfecta en un futuro distante.

Por el contrario muchos de los programadores con los que me he topado, suelen por lo general querer inventar la rueda, no desean usar código de otros programadores y sienten un profundo rechazo a documentar su código, algunos dicen que eso les reduce su productividad y hay que casi amenazarlos de muerte para que lo hagan.

En fin, este es un debate abierto ya que cada lado puede señalar los defectos del otro, sin embargo hay que sobre todo ser tolerantes y aprender a convivir en una empresa que necesita que ambos roles trabajen juntos, en lugar de estar tratando de demostrar quien tiene la razón.

Convirtiendo un router de $60 en uno de $600

Tal vez la mejor de todas las convinaciones posibles en el mundo TIC es cuando se usa un commodity hardware con un Open Source software, ese es el secreto tras la mayoría de exitosas empresas de nuestros días como Yahoo!, Google, Facebook o Twitter. Por otro lado así como los PC se convirtieron en un commodity, los routers de nuestros días también se han convertido en un commodity, todavía recuerdo cuando pagamos $5000 por un Cisco 2501 en 1997 cuando Red del Norte se convirtió en el primer CPI (el nombre que tenían los ISP en InfoVía) de Chiclayo.

WRT54GHay una gran variedad de routers, desde los super baratos como los TRENDnet hasta los más sofisticados Pepwave, pero el común denominador de estos equipos es que cada uno trata de ofrecer una solución integral basada en un sofware propietario, pero muchas veces usando un hardware bastante estándar (procesadores MIPS). Uno de los primeros fabricantes que integró Linux como el sistema operativo de sus routers fue Linksys (una subsidiaria de Cisco) en su modelo WRT54G, aunque luego lo cambiara por VxWorks, alegando ahorro de costes.

Sin embargo muchos entusiastas han creado frimware alternativos basados en Linux para estos routers basados en los procesadores Broadcom, aunque luego han ido incorporando soporte para otros routers también. Hay varias distribuciones Linux (frimeware) especializadas en routers, entre ellas DD-WRT, OpenWRT y Tomato, tan sólo por mencionar las más famosas.

Pero en particular quiero comentar sobre DD-WRT, una distribución Linux bastante poderosa que puede convertir un barato router WRT54GL de $60, en un poderoso y flexible router de $600, lo anterior no es exageración.

En adición a características interesantes como soporte a IPv6, la posibilidad de hacer overclocking del procesador del router, de aumentar la potencia de transmisión del equipo hasta 251 mW o habilitar un acceso ssh al dispositivo, una de las características más apreciadas puede ser el hecho de que el router puede ser usado como un load balancer de dos líneas WAN, según he encontrado en esté post. Pero por si todo eso fuera poco, en la versión estándar (std) del frimware DD-WRT en la opción de QoS podemos asignar ancho de banda basado en el MAC address, algo que era posible hasta no hace mucho sólo con caros routers Cisco.

Al ser el proyecto DD-WRT Open Source, es posible personalizarlo a nuestro gusto, pero si odiamos hacer todo otra vez, he encontrado esta práctica herramienta llamada Firmware Modification Kit (Open Source también), que permite agregar/remover paquetes del firmware o incluso cambiar themes y logos de la interface web para controlar el router, con lo cual los amigos de presumir sus "conocimientos" en tecnología podrían tener frimwares con sus nombres en ellos.

Lo dicho, si desean convertir su router de $60 en uno de $600 usen el firmware del proyecto DD-WRT, ojo no es la única opción pero es de la que puedo comentarles por el momento con confianza porque la he probado y definitivamente me siento muy satisfecho de haber actualizado a este firmware. Voy a continuar probando otras opciones como la OpenWRT y Tomato, sobre las que ya les comentaré luego.

Clonando instalación Debian (o cualquier distro que use dpkg)

Definitivamente el sistema de paquetes .deb es de lo mejor, y su herramienta de administración dpkg permite la fácil instalación/desinstalación de paquetes. Por otro lado las tecnologías de virtualización como Xen o VMWare facilitan tremendamente el desplegar servidores de prueba, el problema muchas veces es cuando se debe pasar de la fase de prueba a la implementación, muchas veces olvidamos llevar un control de que paquetes o que seteos aplicamos a los servidores de prueba, con lo que muchas veces no queda otra más que escribir un pequeño script que colecte los paquetes instalados y luego otro que haga la instalación en el nuevo entorno, pero he encontrado una estrategia mucho más sencilla en el blog PR0GR4MM3R, que sólo necesita 3 simples instrucciones.

Primero, generar un listado de todos los paquetes del sistema y su estado actual con el comando:

origen# dpkg –get-selections > lista_paquetes.txt

Luego, copiamos este archivo de texto al nuevo servidor que desamos tenga la misma configuración y ejecutamos los siguientes comandos:

destino# dpkg –set-selections < lista_paquetes.txt

destino# apt-get dselect-upgrade

Listo, con eso ya tenemos todos los paquetes que fueron instalados en el servidor "origen" en el servidor "destino". Esto funciona además de en Debian, en todas las distribuciones que usen el sistema de paquetes .deb como es Ubuntu y sus derivados.

La crisis ya comenzó

Justo acabo de encontrar una nueva entrevista a Santiago Niño Becerra, en ella declara que la crisis sistémica ya ha comenzado entre julio y agosto del presente año y que el desempleo en España llegará al 28% como resultado de una contracción del PIB del 9%.

Niño Becerra, al igual que Marc Faber tienen claro que la inyección de liquidez no solucionará el problema y que una caída abrupta de los mercados financieros en los próximos meses es inevitable, lean con bastante detalle la última entrevista que da Faber a The Economic Times.

Aquí la entrevista:

 

 

La señorita que hace la entrevista, bastante parcializada y tendenciosa un poco más y sale celebrando que la recesión ha terminado y de ahora en adelante todo será felicidad. Pero no menciona algunos hechos interesantes, como por ejemplo que hay una guerra declarada entre los principales bloques económicos para ver quien puede manipular más y mejor su moneda, detalles en FTAlphaville. Que el oro sigue imparable y posiblemente doble su valor en los próximos 2 años. Que la inflación en los países desarrollados posiblemente esté en los dos dígitos en los próximos 24 meses según John Paulson (detalles en Business Insiders).

Pero como bien dice Santiago Niño, la gente aún quiere creer que el milagro es posible. Mientras eso sea así no veran la realidad y seguiran cualquier otro camino que ofrezca alguna esperanza, como el imprimir billetes o pensar que se puede salir de un problema de deuda con más deuda.