Cuando Double.MaxValue, no es Double.MaxValue

Creo que es uno de los primeros post que voy a escribir por absoluta desesperación. Y el título lo dice todo.

Estamos desarrollando una aplicación en mi empresa, donde usamos un librería “open source” construida de manera intachable. Bien estructurada, con sus clases, con sus interfaces, y todo en NET 2.0.

Ahora viene lo bueno, dentro de la librería, hay un:

public const double Missing = Double.MaxValue;

Esta línea, parece encarnar el mal, y tiene el número #630 dentro del sistema de bugtracking del proyecto (a partir de ahora el número del mal). En ciertos equipos (si, en ciertos, sin diferenciación mayor que ser otro equipo), provoca que el programa se salga (mejor dicho: explote), sin generar ninguna excepción (lo que implica un error por debajo incluso del NET) y sin dejar ningún registro de error. En cambio, si ponemos:

Si hacemos una asignación quitando el alias:

public const double Missing = 1.7976931348623157E+308;

Tenemos otro crash silencioso al ejecutar el programa. Incluso rebajando el exponente, tenemos el mismo fallo. Pero esperen, que viene lo mejor:

public const double Missing = 999999999999999999;

Entonces, todo el felicidad, los pájaros cantan y las nubes se levantan… No falla.

¿¿¿Porqué???. De verdad que no lo entiendo, y los oscuros mundos del NET me tienen frito.

Pues no termino de entender el porque. Puedo conjeturar que viene por la representación que le da .NET, no es representable por algún nivel más bajo de la máquina, o algún redondeo que implique un overflow. Pero la verdad que no he encontrado nada por la red, y menos aun por los foros de la librería. Pueden ser muchos factores, y me estaré dejando muchos sin tener en cuenta, pero desde luego ahora mismo estoy falto de ideas.

Please follow and like us:

Migrar una empresa a Software Libre, ¿es posible?

Antes de nada, una aclaración: Este artículo, no es una guía con verdades fundamentales, solamente son unas breves notas sobre todo lo aprendido a lo largo de mi experiencia tratando de ir migrando al software libre los servicios que ofrecemos internamente y luego externamente en mi actual empresa (a lo largo de unos cinco años). Existen puntos que son cosas muy obvias para algunos, pero que para otros puede costar entender, por eso lo incluyo.

Si tuviera que dar una respuesta rápida, sería: tal vez. Depende de las decisiones que tomes. Y en este post voy a ir tratando de darte consejos que he aprendido a lo largo de los años, y espero que te ayuden a lograr tal empresa, que es muy titánica, te lo aseguro.

Logo linuxImaginemos un escenario demasiado recurrente. Un nuevo informático, entra en una empresa que no tiene nada que ver con la informática (pero muy dependiente de la tecnología), donde los usuarios suelen ser personas alejadas del mundo informático salvo por sus tareas diarias, y solo quieren que todo funcione.
En esta empresa se encuentra con el clásico panorama: Una red completa de Microsoft, donde todo tiene instalado un Windows XP, mal administrada, y encima abandonada a su suerte en cuanto al crecimiento de necesidades. Sin darse cuenta, este nuevo informático, se marca como objetivo mejorar dicha infraestructura pero intentando no hacer nunca mucho ruido, ofrecer nuevas funcionalidades a los usuarios y siempre sin gastar un duro, en licencias y posiblemente en hardware. Pero, ¿como se puede hacer esto?.

Si tuviera que destacar algo que he aprendido a fuego a lo largo de los años es que no se puede imponer, si no que hay que convencer al usuario, y si no es posible… se puede ocultar al usuario. Parece una frase muy extraña y malvada, digna de cualquier BOFH, pero me explicaré mas adelante para ver que es mucho más inofensiva de lo que parece. Ahora os voy a exponer mi resumen mental de todo lo que he vivido:

  • Windows/Mac no es un enemigo. No lo trates como tal. No tiene que ser erradicado de tu red, simplemente hay opciones mucho mejores y mucho más “baratas” a largo plazo. Ese es el mensaje que tienes que trasmitir, ya que si no, la gente pensará que haces las cosas porqué eres un miembro de alguna secta “informática”.
  • Nunca vendas el software libre como algo “gratuito”. Aunque parezca algo increíble, hay gente que se resiste a admitir que algo gratis puede tener la calidad de algo que se paga. Es asombroso la cantidad de gente que aun mantiene esa idea en sus cabezas. De hecho, no es cierto que el software libre sea gratis, ya que tendrás que aprender a montar correctamente las cosas, y eso cuesta dinero (es decir, tu tiempo).
  • La resistencia al cambio siempre es tu peor enemigo. Durante mis años de estudiante, un concepto que me parecía ridículo al estudiar “Ingeniería del Software” era la resistencia al cambio, ¿cómo alguien se puede negar a mejorar?… Eso pensaba, hasta que me encontré la resistencia al cambio frente a mis narices. Si algo funciona, nadie quiere cambiarlo. Si no funciona bien, pero con ciertos pasos medio funciona, la gente seguirá usando esos pasos. La palabra “cambio” no gusta, tendremos que evitarla.
  • Eres informático, no eres de fiar. Por norma general, tus motivos no son lo suficientemente válidos por si mismos. Una frase típica es: “Es que a los informáticos os gusta hacer las cosas difíciles y cambiar todo“. No trates de imponer tus razones, aunque sean correctas.
  • No trates de cambiar algo implantado. De hecho esta frase usa la palabra maldita “cambio”. Si tu empresa tiene un IIS con una web desde hace 3 años, y funciona, simplemente es bueno dejarlo. Esto tiene relación con el primer punto, ya que tienes que mantener todo y hacerlo convivir con tus nuevos sistemas o servicios.
  • Mezclar filosofías es una solución perfectamente válida. No es un sacrilegio usar Apache sobre Windows, o Filezilla como servidor de FTP sobre un viejo XP. Es parte de la transición.
  • Permite excepciones. No siempre todo se puede migrar, o no con la sencillez que todos quisiéramos. Por ejemplo la integración de Windows Mobile con Outlook o de iPhone con Mac. Quizás sea mejor dejarlo como está.
  • Tú eres tu mejor cliente. Todo puede comenzar instalando un pequeño servidor, para tus necesidades propias de un departamento informático, luego ir explorando soluciones, según las necesidades que se te presenten. No trates de buscar necesidades donde no las hay frente a tus usuarios finales, si no necesitan tal cosa/servicio (es decir, no te lo han pedido, ya que puede que simplemente no sepan que existe la posibilidad) no trates de crear la necesidad, no suele funcionar.
  • Aprovecha las oportunidades. Cuando se requiera algo nuevo (una nueva necesidad), es un buen momento de ofrecer la solución libre como alternativa a lo que todo el mundo esta pensando (Windows). Normalmente, si tratas el tema económico (más barato ya que no tiene licencias, menores requerimientos de máquina, …) suelen ser argumentos de peso.
  • Conoce las posibilidades que ofrece el software libre. Esto es muy importante. Cuando se te pida un servidor web, si no te piden uno en concreto, busca el que mejor se adapte a tus necesidades. No sólo existe Apache, ni Debian, ni MySQL. Lee y aprende las miles de posibilidades que podemos usar. Por ejemplo soluciones como eBox, OpenFiler, Mantis, Cacti, Subversion, GeoServer, Samba, Likewise, etc… son cosas que se pueden usar en casi cualquier empresa.
  • Implanta, en paralelo. Si vas a quitar un sistema antiguo, nunca desenchufes el anterior. Simplemente hazlo en paralelo mientras todo el mundo usa el anterior sistema.
  • Si puedes dejar al usuario final en la oscuridad, mejor. Ser totalmente transparente es una gran medida, trata de evitar por todos los medios que un usuario tenga que hacer algo para realizar un cambio. Si puede usar un proxy transparente, mucho mejor que tener que configurar en cada usuario un proxy.
  • Si necesitamos un cambio, busca un “grupo de valientes” que difunda la buena nueva. Por ejemplo, un ejemplo real en mi empresa, fue la transición de Outlook express a Thunderbird. No voy a contar las innumerables mejoras que tiene Thunderbird sobre Outlook (sobre todo al recuperarse de errores), pero un usuario final no entendería estos motivos. El método fue ir instalando el cliente de correo a un grupo de valientes convencidos, estos a su vez fueron portavoces del cambio, y poco a poco la gente fue más receptiva al cambio ya que “fulanito” dice que funciona muy bien (no un informático).

Como reflexión final, decir que, personalmente, soy un defensor de Software Libre, porque me ha demostrado que puedo confiar en él. Uno de mis primeros proyectos con software libre fue un proxy/balanceador de carga que lleva 5 años funcionando sin tocarse para casi nada, y en cambio, no creo que ninguna máquina Windows lleva 5 años instalada. Luego vino el cambio de Oracle a bases de datos como MySQL y PostgreSQL. Más tarde un servidor de ficheros montando con Samba… y sinceramente, en ningún momento me he arrepentido de ningún cambio hacia el software libre.

http://subversion.tigris.org/
Please follow and like us:

Buscar alternativas a programas de forma sencilla

No sé vosotros, pero yo he tenido que buscar muchas veces una alternativa gratuita (o no) a un software para sustituirle. El típico: “¿un programa gratuito que sea igual que…?” o el más complejo: “¿y para mi Mac/Linux donde encuentro un programa igual a este?“. Esto realmente, es un verdadero quebradero de cabeza para muchos de los que nos dedicamos a esto de la “infosmática”.

Pero en mi noches en vela, buscando un buen sustituto para Autocad, o para el Acrobat, he encontrado unas cuantas web que pueden ofrecer soluciones:

  • Alternative To” a mí me ha solucionado muchas de esas preguntas con un solo click. Solo en su buscador, escribimos la aplicación, y nos devolverá un listado de aplicaciones que pueden sustituir a la que has elegido. Pero lo mejor, es que puedes filtrar por sistema operativo y por tipo de licencia (gratuito, open source o de pago). Otro punto a favor, es que han incluido un sistema de “votos” donde la gente vota la mejor alternativa, para no perdernos en la larga lista que nos suele ofrecer. Por ejemplo, hace no mucho busqué alternativas a “Microsoft Visio”, y me encontró alguna que no conocía, y que ahora estoy testando.
  • CD Libre” es una recopilación hecha sin ánimo de lucro hecho por un profesor de un instituto de Valencia. Un crack. Aunque últimamente no amplia mucho su catálogo, hay que reconocer que hay un montón de aplicaciones ordenadas.
  • Alternativas Libres“. No está mal, pero tiene ciertas lagunas en programas claves. Es bastante sencillo de buscar ya que saca tablas en donde se ve que programa de pago tiene alternativas. Lo usé mucho un tiempo, cuando comencé a luchar con estos temas. Me han comentado que está algo parado.

Bueno, espero que os sea de ayuda.

Please follow and like us:

Wave Secure para Android, un seguro anti-robo

Wave SecureAunque aun estoy empezando en esto de Android, tengo que reconocer que ya voy teniendo varias aplicaciones que considero totalmente imprescindibles para este sistema operativo, y una de ellas nos da una funcionalidad muy interesante, y es de la que voy a hablar.

Wave Secure, nos ofrece basicamente un “anti-robo” para el movil. Más concretamente, te permite

  • localizar tu teléfono móvil mediante su GPS integrado para darte una ubicación de donde se encuentra
  • sacar toda la información de él (en la versión Android, la agenda de contactos, el registro de llamadas y los SMS) que nos pueda interesar
  • subir tus fotos y vídeos que estén contenidos en tu teléfono
  • restaurar tu teléfono desde el contenido que hayas subido a la web anteriormente con la opción de backup
  • bloquear el teléfono con un código PIN que impide su uso (aunque no es un bloqueo total). Aparte de bloquear si se cambia la SIM
  • ver que hace la persona que tiene nuestro teléfono
  • y lo más divertido incluso borrar completamente el contenido del teléfono si lo das por perdido totalmente

Pero lo interesante es que todo esto lo puedes hacer desde la pagina web, mediante tu usuario y contaseña, pero además dar otro numero de teléfono donde puedes también controlar el teléfono remotamente. ¿Increíble?. Pues a mi me a dejado bastante sorprendido.

¿Y cuanto cuesta?, pues por ahora y para Android, no vale nada. Hay que decir, que el programa se llama “Wave Secure Beta”, lo cual nos puede dar una pista de que nos usan como conejillos de indias y por eso es gratuita. Pero solo hasta el 31 de enero parece que se nos dará una licencia gratuita de por vida, ya que luego habrá que pagar.

Corre, a tu market y no dudes en instalarla.

Please follow and like us:

Google Wave… ¿para que sirve?

Logo Google WaveLlevo casi un mes con Wave, y ahora mismo no tengo ni idea de para que sirve para el público general. Como siempre Google va un paso por delante, tanto en tecnologías como en ideas. Y aunque es duro decirlo, ir un paso por delante de la masa, no siempre es bueno.

Tras usarlo, me he dado cuenta que aunque tecnológicamente es genial, y asombroso, no termino de saber que utilidad darle en mi vida diaria, salvo, para ciertas tareas de mi empresa y sin estar muy convencido de su utilidad real. Me explico, ya que quizás sea muy confuso todo lo que estoy escribiendo.

Wave tiene muchas cosas geniales, que hay que destacar:

  • Como trabajo colaborativo es la herramienta ideal.
  • Drag & Drop, o arrastrar y soltar. Sencillamente es genial, y funciona a la perfección. Aunque creo que requiere Gears instalado en tu máquina.
  • Los Bots y Gadgets varios, es decir, que puedes extender esto hasta el infinito ya que añaden funcionalidades a nuestro Wave. Estos Bots/Gadgets se incluyen en cada Wave que crees y no a todos. He de decir que no he probado muchos gadgets para Wave, pero hay un montón de gadgets para muchas cosas. Como por ejemplo, el que nos permite usar la Wikipedia (Wikify) dentro de una Wave, publicar a twitter (twittergadget), etc…
  • Interfaz limpio, típico de Google, que personalmente me ha facilitado entenderlo. Aparte, y como en el resto de sus productos de la gran G, hay atajos de teclado para ser más productivos.
  • En una empresa, puede ser la herramienta de trabajo colaborativo por excelencia, pero no tiene todas las herramientas necesarias ya que se necesitaría varias mejoras como para la edición de código fuente, por ejemplo.

Cosas que no me quedan claras, y como ya he comentado, son más bien filosóficas, ya que técnicamente es genial:

  • ¿Hacia donde se orienta este desarrollo?… ¿Para quién esta destinado?. No lo veo como un reemplazo para el correo electrónico, ni la mensajería instantánea, ni para casi nada. ¿Es un producto nuevo?, ¿se necesita ahora mismo?, ¿hay una demanda de este producto o hay que crearla?.
  • No esta orientado a nada. Muy generalista, pero sin centrarse en nada. Es decir, cuando te pones delante de el, no ves ninguna herramienta que te indique hacia que va destinada.
  • Lento. Requiere de un navegador con un buen motor javascript. Firefox va justito, y como no, va muy bien en Chrome (obviamente).

Y después de todo esto… ¿Qué opináis vosotros?. Por cierto tengo 2 invitaciones para vosotros, por si aun no conocéis este servicio, dejar un mensaje con vuestro correo (no en el cuerpo si no en el campo del comentario) para que os la envié.

Please follow and like us:

XviD2PSP el mejor amigo de tu iPod

XviD4PSPHace mucho que hice un artículo sobre como meter subtítulos en los vídeos para poder verlos en el iPod Classic. Os recomendé el programa XviD4PSP para “quemar” los subtítulos en los vídeos para poder verlos en mi iPod. Y este post es para volver a recomendarlo encarecidamente.

La verdad que con el tiempo desde que escribí la entrada anterior, le vi algunas deficiencias, y probé muchos otros programas para este menester, ya que este programa no permitía encolar el trabajo (no puede meter muchos vídeos, había que ir uno a uno) además intente buscar una mejor solución, y desgraciadamente no lo encontré (quizás GOM Encoder, pero, no lo uséis ya que trae un spyware de regalo según han comentado, además ahora es de pago, aunque como siempre otras web niegan esta posibilidad). Así que tras mucho buscar por la red, he vuelto al mismo programa, y tengo que reconocer que estoy encantado.

Es un software gratuito, y el autor esta permitiendo que la gente le eche una mano con el tema, por lo que el programa esta mejorando muy rápido, y añadiendo muchas nuevas funcionalidades. Sobretodo, desde la versión que utilicé, se han añadido muchos nuevos perfiles (o opciones pre-configuradas para codificar para diversos reproductores).

Pero hay que remarcar un par de problemas, que me he encontrado que son muy sencillos de arreglar:

  • Uno de los problemas que he visto es que en la pantalla donde se visualiza el video, nos encontramos un error referente a “VSFilter.dll“, no hay problema ya que en foro del autor nos podemos encontrar la solución.
  • La fuente que utiliza en los subtítulos, quizás peca de ser muy pequeña, pero hay un pequeño manual de como hacerlo, pero tienes que tener instalado los codecs que ellos recomiendan en su web.

Si a alguien le sirve de ayuda, me alegraré mucho 🙂

Please follow and like us:

iTunes descarga lento los podcast, ¿por qué?

Llevo unos días maldiciendo cada vez que me bajo un podcast a través de iTunes, y pensaba que era por usarlo desde Windows, donde francamente va de pena en general, pero tras bucear un poco por la web, me doy cuenta que hasta los usuario de iTunes de Mac se están quejando del mismo problema con las descargas de podcast, que inician muy rápidas para luego ir bajando en velocidad hasta unos miserables 20-25 kbs.

descargabliptv¿Cuál es el problema?. Para averiguarlo use Wireshark para ver realmente de donde se bajaba un podcast cuando lo pedía atraves de iTunes (sinceramente no sabía muy bien de donde se bajaban los podcast cuando usas iTunes). Curiosamente, lo suelen hacer a un hosting externo a iTunes donde se almacena el mp3, en muchos casos a blip.tv ya que es un hosting de ficheros muy extendido (y gratuito).
Tras esta prueba me baje directamente un podcast desde blip.tv (Kafelog, un gran podcast de referencia) y vi que tras unos 3 minutos a buena velocidad, bajaba hasta los 25 kbs, como podéis ver en la imagen que os adjunto. Luego baje un podcast extranjero con server distinto y vi que iba a una velocidad aceptable.

Ese es el problema, blip.tv, que debe tener problemas con su ancho de banda. ¿Puede significar que blip.tv este en problemas?, esperemos que no (no he encontrado ninguna información al respecto), ya que ha dado un gran servicio a la comunidad podcastera desde hace mucho tiempo y sería una pena su desaparición.

Please follow and like us:

Como generar un XSD desde un XML

Sin duda es una tarea bastante ardua y coñazo, generar el XML Schema con el cual validar un XML. Aunque uses un buen editor, siempre te costará tiempo y esfuerzo hacerlo. Hay muchos software por la red que hace lo que pedimos, de un XML genere XSD con el cual poder validar al XML. Hay opciones de pago, como Oxygen XML Editor (de pago), o el Altova XMLSpy (de pago), que son básicamente editores de XML que te permiten generar el XSD. Incluso una solución que viene integrada con el las librerias de .NET v2.0 (xsd.exe solo tienes que buscarlo por tu ordenador, y casi seguro que lo tienes).

¿Qué problema tenían?. Los XSD que generaban son muy complejos, quizás lo suficiente para que un novato como yo, no tengo ni puta idea de como hacer pequeñas modificaciones siguiendo algún manual de XML Schema.

Así que tras buscar mucho por internet, me he encontrado esta sencilla web, donde les mandas el XML y ellos te responden con el Schema, y suele ser bastante genérico y sencillo de entender.

Me imagino que para alguno también será de utilidad.

Please follow and like us:

El misterioso caso del “crontab -l” vacío

Os pongo en situación: equipo linux, con una Ubuntu para ser más precisos. Mágicamente, las tareas programadas en el cron, no se ejecutan. ¿El síntoma?:

nas001@nas001:~$ sudo crontab -l
no crontab for root

Como no expresar, ante esta situación, en un grito al cielo: “¡Me cago en tó…!”.

Tras leer y leer, y que mi amigo (y el de todos) Google, me lanzara muchas soluciones que no me funcionaban, lo encontré yo mismo:

crontab: usage error: unrecognized option
usage:  crontab [-u user] file
        crontab [-u user] { -e | -l | -r }
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)

¿Qué ven mis ojos?… se le puede indicar cual es el fichero que quiero que cargue. Pues nada, manos a la obra:

nas001@nas001:~$ sudo crontab /etc/crontab

Mano de santo, oiga.

Please follow and like us:

Sale la versión 3.1.0 de OpenOffice… ¿Incluso con Oracle?

openoffice-logoTras la compra de Sun por parte de Oracle, todo el mundo del software libre se tambaleo, pensando en que iba a ocurrir con el apoyo al software libre que estaba realizando Sun. Sobre todo por MySQL y OpenOffice. Solo hay que ver que Oracle (Ooooracol! :P), se está comiendo medio mercado a base de comprar y comprar, mirar la lista para alucinar.
La respuesta es que parece que todo, por ahora sigue en su cauce, con la salida de OpenOffice 3.1.0 (en castellano, en la web aún no aparece), con ligeras mejoras, sobre todo visuales, y algunas mas que os paso a resumir:

  • Uso general de Anti-Aliasing.
  • Mejor manejo de los bloqueos de ficheros si las maquinas tienen diferente sistema operativo instalado.
  • Comentarios al texto en el Writer y un corrector gramatical completo (ya era hora).
  • Mejoras en el listado, y su mezcla con las cabeceras en el Writer. ¿Hacia falta?.
  • Al fin, digo, al fin. Impress permite cambiar el tamaño del texto con dos botones. Esto si que hacia falta.
  • Resaltado de sentencias SQL en Base, y la inclusión de macros y scripts dentro del fichero .odb

A mi me va ha venir muy bien, ya que tengo que terminar una cosilla en Impress y el cambio introducido me va a facilitar la vida.

Please follow and like us: