domingo, julio 05, 2009

Mi libro sobre SPI comentado por el doctor Beltrán

El afamado Doctor Bartolomé Beltrán, famoso por su espacio en televisión hace unos años, dedica un artículo a mi libro y sobre el SPI en su espacio.

http://www.bartolomebeltran.com/ver_publicaciones.php?id=310

Richard Stallman bailando con GNU

lunes, junio 15, 2009

Software por la patilla

Opera 9.6: Fantástico navegador web, que cuenta entre sus ventajas el tener el motor javascript más rápido que existe, y la mejor compatibilidad entre todos los navegadores existentes. Asimismo, cuenta con multitud de funcionalidades innovadoras, como búsqueda predictiva, correo, lector de noticias, previsualización de noticias, página de favoritos con miniatura, gestos de ratón, personalización del navegador, soporte para gráficos vectoriales SVG, Widgets, etc. Para Windows, Linux, MaC OS, BSD, Solaris, QNX y BeOS.


Safari 4: Excelente navegador web de Apple, que incorpora uno de los motores javascript más rápidos del mercado y un gran abanico de funcionalidades (150 prestaciones) que harán de tu navegación una experiencia única. Para Windows y Mac.


Pictomio: Espectacular visor y reproductor de fotografías, completamente multimedia e interactivo, con multitud de funcionalidades, como crear presentaciones con las fotografías. Para Windows.


XBMC: Excelente centro multimedia, con una interfaz muy sencilla e intuitiva. Para Windows, Linux, Mac OS y XBox.


Blender 3D: El programa de diseño y animación 3D por excelencia, que además es libre y gratuito. Gracias a este programa se han desarrollado muchos juegos y películas de gran calidad. Para Windows, Linux, MacOS X y Solaris


XMind: Fantástica aplicación para diseñar mapas conceptuales. Para Windows, Linux y Mac OS


Google Translate Client: Sencilla pero utilísima aplicación que permite tener un traductor en 40 idiomas, que hace uso de Google Translator. Puede traducir palabras, frases, textos o páginas web enteras. Para Windows.

Notepad ++: Excelente editor de textos en crudo, que reconoce hasta 50 lenguajes de programación, con multitud de funcionalidades: numeración de líneas, múltiples documentos organizados por pestañas, zooms, búsquedas avanzadas, coloreado de sintaxis, plugins, sincronización con servidores ftp, control de cambios, autocompletado, etc. Para Windows


Tweak Now Power Pack: Conjunto de utilidades para el mantenimiento y la optimizaci´no de tu sistema operativo Windows. Incluye un limpiador de registro, un optimizador de uso de la memoria RAM, un programador para hibernar, suspender o apagar el PC; un gestor de escritorios virtuales, un analizador de los recursos (memoria, CPU, discos, red, tarjeta gráfica, placa madre...), etc.


Auslogic Disk Defrag: Potentísima utilidad que permite defragmentar tus discos. La defragmentación permite unir los trozos de archivos en el disco, de forma que incrementa considerablemente el acceso al disco. Auslogic, además, es muy rápido y te permite usar el PC mientras trabaja. Para Windows.


PeaZip: Excelente herramienta para compresión y descompresión de archivos. Los formatos soportados son: 7Z, 7-Zip sfx, ACE, ARJ, BZ2, CAB, CHM, CPIO, DEB, GZ, ISO, JAR, LHA/LZH, NSIS, OOo, PAQ/LPAQ, PEA, QUAD, RAR, RPM, split, TAR, Z, ZIP. Para Windows y Linux.

GFI Backup: Utilidad sencilla y potente para realizar copias de seguridad, que además permite comprimir y cifrar los datos. En inglés. Para Windows.


Diskcryptor: Utilidad que permite encriptar discos, CD's, DVD's, particiones y volúmenes de datos, usando los mejores algoritmos de encriptación.

TrueCrypt: Permite crear unidades virtuales donde encriptar tus ficheros. Para Windows, Linux y Mac OS


GParted: El gestor de particiones por excelencia. Puede con cualquier partición, permitiendo su creación, edición, redimensionamiento o eliminación. Para Linux. También disponible en live CD.


TCP-Z: Extraña y venerada utilidad que permite romper el límite de diez conexiones TCP que tienen los sistemas operativos Windows. Eso es de agradecer para usar programas de descargas, tales como los P2P.


WinDoors: Permite de forma sencilla y amena utilizar Wine, con el que podrás instalar y ejecutar aplicaciones de Windows en Linux.

Play on Linux: Increíble utilidad que te permitirá jugar a los juegos de Windows en Linux, basada en Wine.



- RECOPILACIONES DE SOFTWARE -
OpenApps: Estupenda colección de software libre, en castellano, muy organizado por secciones:
Educación
- Stellarium
- Scratch
- XLogo
- GXCompris
Diseño
- Inkscape
- Gimp
- Scribus
- Blender
- GPL Ghostcript
Infantiles
- Tux Type
- Tux Match
- Tux Paint
Multimedia
- Audacity
- VLC Media Player
- Songbird
- Avidemux
Internet
- AMSN
- Pidgin
- Frostwire
- Firefox
- Thunderbird
- Free Download Manager
- VUZE
Ofimática
- OpenOffice.ORG hojas de cálculo, presentaciones, bases de datos y dibujo
- Sumatra
- Sunbird
- OpenProj
- WorkRave
Utilidades
PDFCreator
PeaZIP
- InfraRecorder
- ClamWin
- KeePass
- KDE
- Launchy
Redes
- Filezilla
- WinSCP
- Real VNC
Web
- WAMP
Desarrollo
- MYSQL Workbench
- Notepad++

Recuperación del arranque con Windows Vista

A veces, probar cosas puede pasar una factura indigesta. En mi caso, estuve probando la última distro de Fedora 11 Leónidas, en modo live. Mi equipo, un portátil Compaq, tenía instalado Windows Vista, y siempre he tenido el impedimento de usar el driver WiFi del equipo (una Broadcom) con Linux. Al final tuve que comprarme un "pincho" USB con otro dispositivo WiFi, y por fin, con Fedora, podía conectarme a Internet. Entonces decidí instalar desde la sesión live, el Fedora 11 en mi ordenador (había reservado unos 35GB para un Linux), pero mi sorpresa la llevé cuando el gestor de particiones no me deja hacer una partición clásica, si no que automáticamente me monta un LVM (volumen lógico), y el decir qué tipo de extensión, el tamaño y el punto de montaje, no le gustaba y no me dejaba hacerlo, por lo que no pude instalarlo de ninguna manera.

Mi sorpresa llegó después, cuando intenté arrancar el equipo de forma normal, donde aparecía el siguiente mensaje tras el chequeo de la BIOS: "Missing operating system". La partición de Windows Vista se había visto afectada.

Obviamente, eché pestes, porque no pude instalar Fedora y encima perdí Vista.

Lo siguiente fue arrancar en live con la última versión de Ubuntu (la 9.04), que también me reconocía el "pincho" Wifi, y gracias al cual pude consultar a diestro y a siniestro, cómo poder recuperar Vista. El administrador de archivos de Ubuntu reconocía la partición de Vista, y pude acceder al sistema de archivos y poder hacer backup de casi todo.

Una vez salvados los archivos, me puse a la tarea de poder recuperar Vista. La cosa no fue fácil.

En primer lugar, es necesario reestablecer el boot del sistema. Para ello, hay que arrancar con el disco original de Windows Vista. En la instalación, en el primer paso, hay que seleccionar la opción de la consola de comandos. Una vez en MS-DOS, hay que acceder a la unidad del CD/DVD, acceder al directorio /boot y escribir el siguiente comando:

bootsect /nt60 c: /force

La operación se realizó con éxito, pero seguía sin sistema operativo. La razón era que la partición no estaba activa.

Probé con una distro para recuperar sistemas basada en gparted, pero este gestor de particiones no me dejaba activar la partición, como haría el fdisk de Windows. Lo que sí me permitió fue descubrir que el LVM de Fedora se había creado, cosa que me molestó mucho, pues si Fedora no podía crear las particiones y la instalación, no debería dejar este cambio hasta que se pudiera hacer. Este fue el motivo por el que Vista no funcionaba.

Una vez eliminé el LVM de Fedora, seguía sin poder arrancar Vista. GParted no me permitía avanzar.

Lo siguiente que hice fue descargarme Partition Logic, una alternativa gratuita a Partition Magic, y que tenía un disco de rescate. Sin embargo, Partition Logic no reconocía el disco duro.

A continuación encontré un disco de rescate de Partition Magic 8, que apenas ocupaba 5MB, y que está basado en MS-DOS (de Windows 98). Arranqué este disco, ejecuté Partition Magic, quien detectó que el tamaño de la partición de Vista no era el adecuado y no coincidía con el tamaño que debía tener. De ahí los problemas de reconocimiento de esta partición. El propio Partition Magic permitía reparar esta incongruencia con éxito, y después pude establecer la partición de Vista como activa.

Arreglado el problema de la partición, al arrancar el ordenador ya estaba funcionando con normalidad.

lunes, abril 13, 2009

10 habilidades para los desarrolladores del futuro

Leo en dosideas.com un interesante artículo escrito por Leonardo de Seta, donde analiza las habilidades que más van a ser demandadas en los próximos cinco años y que aseguran un currículum con porvenir.

La verdad es que coincido plenamente con casi todas ellas, a no ser que descubramos una nueva revolución y las tendencias cambien. Aunque tal y como están las cosas y con esta crisis va a ser difícil, pero quien lo haga, desde luego, cambiará las reglas e impulsará nuestro estancado mundo.


1. Uno de los "3 Grandes" (Java, .NET, PHP)

A menos que ocurra algún cambio radical en el mundo del desarrollo (como ser un asteroide que caiga sobre Redmond), la mayoría de los desarrolladores van a necesitar conocer alguno de los Tres Grandes sistemas de desarrollo: Java , .NET (VB.NET o C#), o PHP. Y tampoco alcanza con conocer al lenguaje principal. A medida que los proyectos crecen y van acaparando más funcionalidad, vamos a necesitar conocer los frameworks y librerías asociadas con profundidad.


2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications)

Lo pueden amar u odiar, pero en los últimos años Flash se está usando para algo más que animaciones graciosas. Flash también obtuvo funcionalidad adicional en la forma de Flex y AIR. Los competidores de Flash, como JavaFX y Silverlight, también están mejorando en caracerísticas y performance. Los navegadores están mejorando sus motores JavaScript, el cual se perfila como una plataforma de aplicaciones web. Para hacer las cosas más complicadas, HTML 5 va a incorporar montón de funcionalidad RIA, incluyendo conexión a la base de datos, poniendo así el sello formal de la W3C a AJAX. En el futuro cercano, tener experiencia en RIA va a ser un factor determinante en nuestro currículum.


3. Desarrollo web

El desarrollo web no va a desaparecer en el futuro. Muchos desarrolladores hasta ahora estuvieron felices ignorando la web, o sólo quedándose con "lo básico" que les brindaba su framework. Pero las empresas están demandando más y más a quienes realmente conocen cómo trabajar con las tecnologías subyacentes. Así que deberemos mejorar nuestros conocimientos de JavaScript, CSS y HTML para tener éxito en los próximos cinco años.


4. Servicios web

¿REST o SOAP? ¿JSON o XML? Aunque las elecciones y las respuestas dependen del proyecto, cada vez es más dificil ser un desarrollador sin tener que consumir Servicios Web (incluso aunque nuestro desarrollo no sea una aplicación Web). Incluso las área que solían ser terreno de ODBC, COM o RPC ahora están avanzando hacia Servicios Web de algún tipo. Los desarrolladores que no puedan trabajar con Servicios Web van a terminar relegados a tareas de mantenimiento en código legacy.
5. Habilidades humanas

Hay una tendencia que viene ocurriendo hace ya un tiempo: la creciente visibilidad de IT dentro y fuera de la organización. Los desarrolladores están participando más y más de reuniones que no son de desarrollo y de procesos para obtener feedback de ellos. Por ejemplo, el CFO no puede cambiar las reglas de contabilidad sin trabajar junto a IT para actualizar el sistema. Y un gerente de operaciones no puede cambiar el proceso de los call caenter sin que IT actualice el workflow del CRM. De la misma forma, los clientes a menudo necesitan trabajar directamente con los equipos de desarrollo para asegurarse que se cumplan sus necesidades. ¿Va a ser necesario que todos los desarrolladores estudien Cómo hacer amigos e influenciar personas? No. Pero los desarrolladores que lo logren van a ser mucho más valiosos para sus empleadores - y serán muy buscados en el mercado.


6. Un lenguaje de programación dinámico y/o funcional

Los lenguajes como Ruby, Python, F# y Groovy todavía no son muy populares - pero si lo son las ideas detrás de ellos. Por ejemplo, el sistema LINQ en .NET es un descendiente directo de las técnicas de programación funcional. Tanto Ruby como Python son cada vez más populares en algunos sectores, gracias al framework Rails y Silverlight respectivamente. Aprender uno de estos lenguajes no sólo va a mejorar nuestro currículum, sino también que va a expandir nuestro horizonte. Todos los grandes desarrolladores recomiendan aprender al menos un lenguajes dinámico o funcional para lograr aprender nuevos formas de pensar.


7. Metodologías ágiles

A medida que pasa el tiempo, las ideas detras de Ágil se vuelven más definidas y mejor expresadas. Muchas organizaciones están adoptando Ágil o haciendo pruebas de concepto con Ágil. Aunque Ágil no es la bala de plata para evitar fracasar en un proyecto, definitivamente tiene su lugar en muchos proyectos. Los desarrolladores que tengan experiencia en trabajar y comprender los ambientes Ágiles van a ser cada vez más demandados en los próximos cinco años.


8. Conocimiento de dominio

De la mano con las metodologías ágiles, los equipos de desarrollo son cada vez más vistos socios en la definición de proyectos. Esto significa que los desarrolladores que comprendan el problema del dominio van a poder contribuir al proyecto de una forma muy visible y valiosa. Con Ágil, un desarrollador puede decir "Desde aquí, podemos agregar esta funcionalidad muy facilmente, y obtendremos mucho valor", o "Hey, este requerimiento no está acorde al patrón de uso que muestran los logs". Por más que muchos desarrolladores resistan la idea de conocer nada sobre el problema de dominio, no puede negarse que cada vez más organizaciones prefieren (si no incluso requieren) a desarrolladores que al menos comprendan lo básico sobre el negocio.


9. "Higiene" de desarrollo

Hasta hace pocos años atras, muchas (si no todas) las organizaciones no tenían acceso a sistemas de bug tracking, control de versiones y otras herramientas; todo se resumia a los desarrolladores y su IDE preferido. Pero gracias a la creación de nuevos entornos integrados de desarrollo y la explosión de entornos de software libre de alta calidad, ya casi no existen organizaciones sin estas herramientas. Los desarrolladores tienen que conocer mucho más que sólo hacer un checkout del código. Necesitan tener un hábito riguroso de higiene para asegurarse que están correctamente coordinados con el equipo. Los "programadores solitarios" que guardan todo local, que no documentan los cambios y demás, no van a ser bienvenidos en las organizaciones tradicionales, y van a a quedar directamente fuera de lugar en los entornos Ágiles, en donde se utiliza una coordinación fuerte entre los equipos para operar.


10. Desarrollo móvil

Durante los fines de 1990 el desarrollo web creció y ganó adopción general, para así comenzar a desplazar a las aplicaciones tradicionales de escritorio. En 2008, el desarrollo para dispositivos móviles despegó finalmente, y en los próximos cinco años va a crecer de forma constante. Por supuesto, existen varios enfoques al desarrollo móvil: aplicaciones web diseñadas para funcionar en dispositivos móviles, RIAs apuntadas a este mercado, y aplicaciones que se ejecutan directamente en los dispositivos. Sin importar qué camino elijamos, nos va a servir agregar el desarrollo móvil a nuestro grupo de habilidades.