viernes, 26 de febrero de 2010

Software por la patilla

[EN CONSTRUCCION]

Open Office
Laureada suite ofimática libre, la alternativa libre a MS Office. Esta nueva versión tiene un arranque más rápido y su rendimiento es mucho mejor y estable. Tiene un procesador de textos, una hoja de cálculo, una base de datos, un gestor de presentaciones, un editor de gráficos vectoriales. Para Windows, Linux, MacOS y Solaris.

AbiWord
Excelente procesador de textos libre, que no tiene nada que envidiar a MS Word, y además es mucho más ligero. Para Windows, Linux y MacOS.


gNumeric
Excelente y liviana hoja de cálculo, digna competidora de MS Excel. Para Windows y Linux.


Planner
Fantástica aplicación para el control y la gestión de proyectos, control de costes, de recursos, esfuerzos, etc, basado en diagramas de Gantt. Permite exportar los Gantt a PDF y HTML. Para Windows y Linux.


GNUCash
Pequeña, libre, completa y práctica utilidad para llevar a cabo una contabilidad y financiera, para pequeñas y empresas y para uso doméstico. Para Windows, Linux y MacOS.


Glom
Utilísima y sencilla base de datos de escritorio, muy similar a FileMaker. Permite crear formularios e informes, e incluso puede ser utilizada como servidor. Para Windows y Linux.


Tomboy
Práctico gestor de notas para gestionar tus ideas y recordar las cosas. Incluye buscador. Para Windows, Linux y MacOS.


Glary Utilities
Imprescindible conjunto de utilidades para el mantenimiento de tu sistema Windows. Incluye limpiador de registro, de archivos temporales, reparador de accesos directos, desinstalador de programas, bloqueo de troyanos y adware, optimización del arranque del sistema y de la memoria, etc.


CCleaner
Excelente e imprescindible utilidad para Windows, que permite limpiar el registro de Windows, ficheros temporales, ficheros de log, cookies, historial de navegación, paplera de reciclaje y documentos recientes, acelerando un poco el rendimiento de tu sistema.


Defraggler
Otra utilidad que no debe faltar. Permite defragmentar el disco en un sistema Windows, y así organizar las partes de archivos y directorios, incrementando la velocidad de acceso a los mismos.


Recuva
Otra perla de la que no se puede prescindir. Permite recuperar archivos que ya han sido borrados recientemente y no están en la papelera de reciclaje, e incluso de discos formateados, o recuperar archivos Word no guardados. Para Windows.


Start-Q
Curiosa y práctica aplicación que permite definir el retraso con que arranca un proceso en Windows. Esto permite hacer que Windows arranque mucho más rápido, y que los procesos se demoren en su arranque.


Free Studio
Interesante colección de utilidades para ripear y convertir entre distintos formatos de vídeo y de audio.

Pain.NET
Evolución del PaintBrush de Windows a capacidades similares de Photoshop. Permite todo tipo de herramientas y filtros en tus fotos.


Wormux
Divertidísimo y fantástico remake del mítico juego Worms. Para Windows y Linux.


Dungeon Defense
Entretenido juego mezcla estrategia defensiva y RPG de acción, donde deberás proteger el cristal sagrado de hordas de enemigos, y que permite modo jugador de hasta cuatro compañeros dividiendo la pantalla en sus respectivas partes. Para Windows.

martes, 23 de febrero de 2010

Evolución de los desarrollos de software

La ingeniería informática, a pesar de ser joven (en comparación con las ingenierías más clásicas), es la que más cambios ha sufrido, sabiéndose adaptar a los tiempos y a las necesidades. Hoy en día disfrutamos de un vergel de tecnologías, y aparecen nuevos e interesantes conceptos.

Recuerdo cuando comencé a programar en Basic y en Ensamblador, a principios de los años 80. Eran lenguajes secuenciales, no estructurados. Antes existían otros lenguajes más concretos y especializados, como Cobol, RPG o Fortan, que vivieron décadas de expansión y aplicación. También estaba el C y el Pascal, lenguajes estructurados de uso general, que aún hoy se siguen aplicando y que sirvieron como base de los lenguajes actuales. Con la programación orientada a objetos se produjo un hito en cuanto a los conceptos de la programación, a cómo organizar y entender el código. Este hito se popularizó con C++, y más adelante con Java, lenguaje que también marcó un hito gracias a Internet, y a que supo captar lo mejor de algunos lenguajes de programación (especialmente C++), agregando facilidades como el garbage collector, el bytecode o el poder prescindir de los punteros. Estos conceptos fueron adoptados por otros lenguajes de programación, como C#. Sobre esa época volvieron a evolucionar los scripts, especialmente para Internet, y en el desarrollo dinámico de páginas web, como JavaScript, PHP, etc. Otro hito importante lo marcó Flash, donde evolucionó los applets de Java (que quedaron en una buena idea), agregando rapidez, dinamismo y experiencia de usuario a un navegador. Gracias a Flash, hoy evolucionan las RIA's y surgen nuevos lenguajes de programación orientados a interfaces ricas. Por otro lado, de forma muy discreta y casi anónima, está la programación funcional, con lenguajes como Miranda, Haskell, Lisp, Erlang...

En cuanto a código, recordemos que al principio se codificaba con hojas perforadas, que contenía los códigos en binario. Después, RPG empezó con hojas de codificación, compuesta por columnas y códigos específicos. Cobol agregó más alto nivel a la codificación, pero seguía cercano a la máquina. Basic se codificaba con líneas numeradas. C contenía bloques de llaves que englobaban funciones, sentencias condicionales o bucles. En la actualidad, el código está basado principalmente en declaraciones con tags en XML, apoyado por detrás con código tradicional, tal y como usa Flex (con MXML y ActionScript) o Visual Studio (con Windows Presentation Foundation y VB, C#, ASP.NET). Algunos lenguajes experimentales fueron usados para evitar escribir código, organizando todo por árboles y flujos, y se parametrizaban con cajas de diálogo. Recuerdo que en NCR se desarrolló un lenguaje específico así para el desarrollo de cajeros automáticos. Si bien es buena idea, su gestión, su entendimiento y mantenimiento podrían ser un poco complicados y tediosos.

La evolución de la programación también ha tenido connotaciones de ingeniería orientada a la escalabilidad. Al principio, los programas estaban en un único fichero, y eran completamente secuenciales. Luego los condicionales y los bucles añadieron inteligencia y automatización de procesos repetitivos. Las funciones y las librerías añadieron el concepto de "divide y vencerás", de forma que se pueden crear procesos complejos y repetitivos, que pueden ser invocados cuando se necesitan. después llegaron los componentes, que permitían crear aplicaciones a modo de Lego, despreocupándonos de los detalles de los mismos. Después llegaron los frameworks, que ampliaban las funcionalidades de un desarrollo, y que permitían a los desarrolladores economizar código, ser más productivos y agregar calidad en la parte especializada del framework. Después se avanzó a los servicios Web, permitiendo a las aplicaciones ejecutar remotamente procesos y programas.

Pero el software y la programación no han evolucionado porque sí. Ha habido factores que han permitido generar nuevos conceptos y lenguajes, así como la evolución de los existentes. Uno de ellos ha sido las bases de datos como repositorios de información, ya que en el inicio se desarrollaba en ficheros que se mantenían desde código. Luego aparecieron las primeras bases de datos (qué recuerdos me trae dBASE y Clipper), que luego evolucionaron para ser relacionales (Oracle, Informix, Sybase, SQLServer), que añadieron SQL como un estándar para hacer consultas, o los triggers y los procedimientos almacenados. Desde hace unos años, no hay importantes revoluciones en las bases de datos relacionales, que han permanecido en su concepto, y que han mejorado en cuanto a velocidad o en añadir capas, como tablespaces o esquemas, o el concepto de alta disponibilidad. En la actualidad están apareciendo bases de datos no relacionales (MongoDB, CouchDB, Voldemort, Cassandra, Hypertable...), principalmente orientadas a documento y a absorber ingentes cantidades de datos y procesarlas en tiempos irrisorios. Este tipo de bases de datos están implantándose principalmente en grandes desarrollos Web, como las de Google o Facebook.

Otro factor importante ha sido la evolución del hardware, que ha ido multiplicando su velocidad y sus capacidades. Así, el aumento de la memoria y los dispositivos de almacenamiento, han permitido el crecimiento de las aplicaciones y de la cantidad de datos y funcionalidades a soportar, así como la velocidad de acceso. El aumento de velocidad de los microprocesadores, permiten desarrollar aplicaciones más rápidas y más complejas. El aumento de la velocidad y la potencia de las tarjetas gráficas, han permitido pasar de pantallas monocromo y de texto a pantallas con mayor resolución que un TV de alta de definición, y a gestionar fotografías y vídeos.

Uno de los factores más determinantes en esta evolución ha sido Internet y su creciente popularidad. Al principio eran simples textos o documentos almacenados. Luego HTML permitió publicar documentos con formato. Los navegadores permitieron añadir algo de funcionalidad a las páginas gracias a los scripts. Java permitió añadir más posibilidades de interfaz gracias a los applets. Y con las RIA's, la comunicación asíncrona de datos entre servidor y cliente permite que un navegador ejecute aplicaciones como si de una aplicación de escritorio se tratase. Asmismo, las RIA's añaden elementos de interfaz de usuario que enriquece la experiencia gracias a efectos, a elementos multimedia, a la interacción usuario-ordenador, eventos, etc. Ahora podemos desarrollar en dispositivos móviles (teléfonos, smartphones, PDA's), e incluso hay dispositivos de todo tipo con su API correspondiente.

¿Y qué no decir del software libre? El software ha sido un bien de lujo en sus inicios. Tan sólo grandes multinacionales y bancos podían acceder a él, y poder beneficiarse de sus servicios. También podían utilizarlos pocas personas, generalmente ingenieros con poder adquisitivo y/o con buenos amigos. En su crecimiento, se ha ido socializando con todas las clases, tanto ricas como pobres, así como en todos los países y culturas. Las licencias y las patentes han sido (y siguen siendo) una lacra para la penetración del software. El software libre, comenzó como una loca idea de algún gurú (como Richard Stallman), y poco a poco fue expandiéndose como una cultura universal. Gracias al software libre, se han creado desarrollos para fines inimaginables, donde millones de programadores del mundo han contribuido con su granito de arena y mejorando la calidad del mismo, lo que ha permitido abaratar de forma importante el software y así hacerlo accesible para todo el mundo. Gracias al software libre podemos tener un sistema operativo por el que no hay que pagar licencias (como Linux, BSD, Android....) y abaratar el coste de un equipo informático, o utilzar bases de datos con un coste mínimo (como PostgreSQL o Firebird), o utilizar aplicaciones ofimáticas sin licencias (con OpenOffice, AbiWord o gNumeric), o incluso retocar imágenes (con Gimp), o para cualquier cosa que podamos imaginar. Las Pymes ya disponen de software que pueden usar sin desembolsar mucho dinero.

Otro factor importantísimo ha sido la oportunidad y la visión, gracias a lo cual es posible desarrollar aplicaciones para sectores inimaginables. En un principio estaba enfocado a la investigación, luego a los gigantes financieros, especialmente contabilidad e informes. Después se ha ido, poco a poco, implantando en nichos cada vez más detallistas y nuevos, hasta llegar los hogares. Esto también ha propiciado la creación de tecnologías que después han sido útiles para integrarlos otros desarrollos, como los workflows (flujos de trabajo), los BPM (Business Process Management), los gestores documentales, la firma electrónica, directorios activos, etc.

¿Cuáles son los siguientes pasos en esta fantástica historia de la programación?. Habrá que seguir de cerca la evolución de Inernet. Ahora estamos viendo el crecimiento de la Web 2.0, donde las aplicaciones son sociales, y en donde cualquier usuario puede conectarse y colaborar. ¿Cómo puede esto ayudarnos en una empresa? Bueno, no es raro encontrar empresas que utilizan Blogs para publicar noticias y conocer los comentarios de sus clientes, o su propio espacio en Facebook o en Linkedin. Es otra forma de hacer negocios, y estas ideas nos podrían despertar otras aplicaciones, haciendo partícipes a los clientes y empleados. La Web 3.0 será el siguiente paso, y consistirá en añadir semántica a Internet. Sobre esto aparecerán nuevas e interesantes ideas.

Las RIA's están tomando un importante papel en este escenario. Los usuarios han estado mucho tiempo olvidados, y han tenido que aprender a utilizar interfaces creadas por informáticos para informáticos. Los creativos asumirán un papel importante en este mundo, creando interfaces intuitivas, fáciles y sorprendentes. ¿Os imagináis la diferencia entre usar una página web de una aplicación de gestión y usar cualquier aplicación desde un iPhone? Al usuario le parece mucho más agradable y sencillo usar la del iPhone. Tendrá mucho más éxito de negocio una tienda virtual en la que todo es atractivo, rápido y sencillo, que una página web tradicional.

El CloudComputing será un referente muy a tener en cuenta, si el modelo de negocio se basa en el uso de aplicaciones Web. Esta tecnología permite a los usuarios utilizar aplicaciones en cualquier parte (algo así como Google Docs). A las empresas les supone un ahorro muy importante de servidores, de recursos manteniendo los sistemas y los programas. Tan sólo necesita conectarse y usarlo.

Las bases de datos relacionales seguirán siendo usadas, y las no relacionales irán ocupando un nicho específico, el cual irá ganando más importancia y relevancia.

El software libre será clave para la reducción de costes de los proyectos. No creo que exista un mundo con software totalmente libre, ni tampoco totalmente propietario. En la actualidad, empresas como Microsoft u Oracle, están apoyando las iniciativas de software libre, ya que la contribución altruista de desarrolladores permiten crear nuevos productos a un menor coste, y así ser competitivos. Casi el 70% del software libre que existe está promocionado y pagado por empresas que creen y están convencidas por este movimiento. El resto es la contribución altruista de desarrolladores. El software libre se está convirtiendo en un modelo competitivo para generar negocio y ganar presencia en el mercado. Asimismo, las empresas que innoven con tecnologías nuevas, es muy posible que patenten o licencien estas tecnologías, para aprovecharse de la escasez y de la exclusividad durante algunos años, y en cuanto empiecen a tener competidores serios, liberarán dichas tecnologías para aprovecharse el movimiento.

Los dispositivos móviles serán productos más que cotidianos. Actualmente tienen una gran penetración en nuestras vidas, pero evolucionarán convergiendo sinergias. El iPad ha iniciado esa senda, concentrando en un dispositivo un ordenador portátil, un eBook, un reproductor de vídeo, de MP3, de fotos y teléfono. Android ha iniciado una revolución en cuanto a sistema operativo e interfaz de estos dispositivos, abaratando mucho el producto final. Creo que habrá un dispositivo que haga todo y no ocupe mucho, y cuyo precio final sea un gran atractivo. El que pueda ser un ordenador donde se puedan instalar todo tipo de gadgets, plugins y aplicaciones será determinante.

Tras este repaso a los desarrollos software, el vaticinio de nuevas y excitantes tecnologías será una realidad en breve. Ante estas oportunidades, no queda si no actualizarse y vivirlas.

lunes, 22 de febrero de 2010

Neutralidad en la red

Ahora, más que nunca, compártelo y movilízate



Stiuación actual de la informática en España

Ayer tuve un interesante debate con una buena compañera de batallas, acerca de la situación actual de la informática en España. Ella lleva casi dos años en el paro, y desde hace tiempo se está replanteando abandonar este honorable oficio. Este planteamiento tiene detrás muchas deliberaciones y reflexiones, cada cual más convincente.

Comenzó exponiendo que la situación actual en España de la informática, y más concretamente, del desarrollo de sistemas (lo cual puede extrapolarse a otros campos), ya puede decirse que generalmente no es digna. Aunque se vean muchas ofertas en los portales de empleo, te percatas que éstas están repetidas por distintas consultoras, las cuales pujan en la adjudicación del mismo proyecto. En las ofertas puedes ver centenares de personas inscritas, con lo que uno puede darse perfecta cuenta de que hay mucha más demanda que oferta, y que son las empresas las que realmente tienen la sartén por el mango a la hora de imponer las condiciones de la contratación. Te inscribes a todas las ofertas que puedes (ya no seleccionas, pues hay que trabajar, no andarse con remilgos), y tan sólo una ínfima parte de las empresas anunciantes te llama. Tras la entrevista telefónica, te das cuenta de que el puesto para el que te llaman no encaja con tu perfil y que la persona de recursos humanos no ha mirado tu currículum, si no que ha hecho una búsqueda por un determinado conocimiento (por ejemplo "Java", ".NET", etc.) sin tener en cuenta si eres programador, analista, jefe de proyectos o director.

Otro punto que irritaba a mi compañera (así como a muchos amigos míos en su situación), es que casi todas las personas de recursos humanos no les basta tu currículo, te mandan una plantilla de currículo para que la rellenes, en formatos en algunas ocasiones incoherentes, y en donde se redunda toda la información de tu currículo. Para una, dos o tres empresas, puede pasar, pero te empiezas ya a cansar de esto, y al final lo aborreces y terminas rechazando las oportunidades que te ofrecen, pues estás haciendo el trabajo de esa persona, a la que pagan por gestionar tus datos y presentarlos a sus clientes, dedicando el tiempo y el esfuerzo para una posibilidad, ya que, como indiqué al principio, se presentan más empresas para pujar por el mismo proyecto. Y, curiosamente, a veces te encuentras haciendo la entrevista con el cliente, y te encuentras tu currículo presentado por varias empresas.

Si lo anterior es irritante, más frustante aún es que en la pregunta "¿cuánto quieres ganar?", al responder, se echan las manos a la cabeza, como si les estuvieras atracando, argumentando, tal feriante, que los arruinas y que el cliente está dispuesto a pagar mucho menos que lo que tú dices, y que ellos, al intermediar, tienen que sacar un beneficio mínimo, pues no trabajan gratis. La mayor parte de la veces, se indica una cantidad incluso inferior a lo que se estaba ganando hasta ese momento, pues mis compañeros en paro quieren trabajar, aunque sea por menos dinero, pero trabajar, pues tienen familia, hipoteca y gastos fijos. No están pidiendo las cantidades de un Beckham o un Cristinano Ronaldo, si no lo mínimo para sobrevivir y entrando en los límites que ha impuesto el mercado laboral. Pero cuando ves que muchas ofertas tienen una cantidad de 18000 euros o inferiores a 24000 euros, para puestos de responsabilidad, con idiomas y multitud de conocimientos especializados, uno se viene abajo, pues si bajan los sueldos, los pisos no bajan, ni la alimentación.

Y aquí, en este último punto, es donde mi compañera y muchos de nosotros nos planteamos el seguir o no adelante con este oficio. ¿De qué sirve estar cinco o siete años de estudios en la Universidad, con los gastos que conllevan? ¿De qué sirve después casi pagar por trabajar como becario? ¿De qué sirve pagar por cursos especializados sobre alguna tecnología nueva? ¿De qué sirve estar cada año actualizandote en alguna nueva tecnología, porque si no lo haces estás condenado a morir? ¿De qué sirve estar asumiendo cada vez más responsabilidades y terminar trabajando sin horario, ni pagado ni agradecido? ¿De qué sirve trabajar en una profesión que en su joven trayectoria ha sufrido dos grandes crisis? ¿De qué sirve esta profesión, que depende exclusivamente de la adjudicación de proyectos y no de productos propios (en la inmensa mayoría de los casos)? ¿De qué sirve ser un mercenario explotado, en la que eres un simple número que cambia del verde al rojo, y en ese momento se prescinde de ti? ¿De qué sirve años y años enfrentándote a problemas nuevos, con tecnologías nuevas, y siendo la punta de lanza para vencerlo, si luego no se acuerdan de esos esfuerzos, de esa dedicación, de ese sacrificio robado a tu familia (en tiempo y en peloteras se traduce)? ¿De qué sirve entrar en una empresa en la que en cualquier momento puedes ser retirado, como si fueras un mueble, y en cuanto tú te mueves te acusan de no ser leal a la empresa? ¿De qué sirve durar en la empresa durante años, si se valora el amiguismo y no la profesionalidad? ¿De qué sirve ser leal a la empresa si, además de ser sustituible en cualquier momento, te encuentras con un techo de cristal, al que acceden solamente desconocidos recién contratados, y que tu única posibilidad de promoción es cambiarte a otra empresa? ¿De qué te sirve ser un superdotado, si otros con menos valía se aprovechan de tus habilidades y se llevan la gloria y el mérito? ¿De qué te sirve toda esa preparación, dedicación, sacrificio, responsabilidad y habilidades, cuando te das cuenta de que te van a pagar lo mismo o menos que en otra profesión en la que no se requiere más que el EGB, en la que no necesitas responsabilidades y en la que tienes al menos un horario?

El número de preguntas puede extenderse mucho más, pero queda claro que esta profesión se ha devaluado mucho, y la dignidad ha desaparecido. Pero detrás de esta devaluación hay una historia y un por qué.

Una tesis que lanzó mi compañera es que se ha vivido las punto com, una época de burbuja en la que las empresas nacían a la tecnología, en la que la forma de hacer negocios cambiaba, y que si no estabas al día perdías la ventaja competitiva en un mundo cada vez más globalizado. Las empresas no tenían personal informático, ni cultura informática. Se dejaron contagiar por un optimismo enardecido, y terminaron engañadas y estafadas. Ahora, las empresas tienen cultura tecnológica, y tienen responsables con grandes conocimientos y que gestionan los proyectos con mano férrea, sopesando qué proyectos realmente son necesarios, cuáles pueden acometerse y cuándo, así como la capacidad de negociación.

Si bien esto es cierto en muchos casos, también hay que añadir que muchas empresas han sabido ver en la crisis una oportunidad idónea para hacer más caja, y hacer más negocio a costa de abaratar hasta lo insultante las tarifas por los proyectos. De esta manera han nacido mesas de compras, cuyo principal objetivo es obtener el mayor ahorro para la empresa, sin importar si los proveedores con los que se había trabajado hasta ahora habían dado una calidad o una satisfacción extraordinaria. Ahora todo pasa por una subasta, en la que se puja por la tarifa más baja, sin importar si se va bajo costo, con tal de obtener posición en esa empresa con respecto a la competencia. Esta práctica denigrante es la que está abaratando también los sueldos, aprovechándose de la lastimera situación laboral. Al final, por desesperación, el proyecto lo debe acometer o un trabajador muy nuevo y sin experiencia, o bien alguien realmente desesperado, con el consiguiente resultado: calidad ínfima y ambiente muy malo, sin contar con que ese personal puede dejar el proyecto en cualquier momento en cuanto tenga una oportunidad mejor.

Un punto realmente clave en este panorama es que en este país se ha potenciado el sector "Servicio". Esto es una buena práctica para generar empleo y para que las empresas se dediquen principal y especialmente a su nicho de negocio, y contraten a empresas de servicios aquellas tareas que no son su especialidad. Una teoría que conlleva a prácticas muy diversas. La primera de ellas es lo que hemos vivido durante los últimos años, al igual que en la burbuja inmobiliaria. Al final termina habiendo mucho intermediario, se engorda demasiado el coste, y termina habiendo un servicio pobre, y deficitario (para lo que se paga por éste). La Administración Pública terminó imponiendo en sus cláusulas de contratación y homologación, que sólo habría personal del proveedor, prohibiéndose las subcontrataciones. Y es que los intermediarios son una verdadera lacra, que anteriormente han devastado y devaluado otros mercados como, por ejemplo, el de la agricultura.

Todo lo anterior nos lleva a un replanteamiento serio. Yo, con casi cuarenta años, me veo ya en un punto de no retorno, en un mercado laboral muy competitivo por un mísero jornal, en donde la nueva sangre es la que accede a dicho mercado por las exigencias descritas, y en donde la experiencia, el conocimiento y la calidad ya no son valores imprescindibles para las empresas, llegándonos la prejubilación incluso antes que en otras profesiones. Las empresas piensan que a los jóvenes se los puede moldear con mayor facilidad que a los veteranos, cuando es, en la mayor parte de las veces, al revés. Un joven sin emancipar puede prescindir, sin ningún problema, de un trabajo, dejando colgado un proyecto. Un veterano, con una familia y una hipoteca a las espaldas, ante un mercado laboral donde hay pocas oportunidades para el cambio, aguantará y llevará el trabajo acorde a las exigencias de la empresa, y con mucha mejor calidad, debido a su experiencia y a sus habilidades.

No es de extrañar, pues, que lleguemos a una situación laboral en informática que empieza a ser insostenible, donde los profesionales de este sector ven que no merece la pena seguir, migrando a otras profesiones menos exigentes y más agradecidas, o migrando a otros países donde su trabajo es mejor recompensado en todos los sentidos, tal y como ha sucedido con médicos e investigadores.