Índice

|2018 |2017 |2016 |2015 |2014 |2013 |2012 |2011 |2010 |2009 |2008 |2007 |2006 |

IPv6: ¿Estamos preparados?

Hace unos días publiqué un juego de conceta cuatro en un servidor de Vultr. Daban una opción económica de publicar el servidor solo con IPv6 y decidí probar porque su implantación comenzó en 2011 (hace ya 7 años), ¿crees que nuestros ISP están preparados para IPv6?

Leer más →

Java: 8, 9, 10 y 11

Dejer de ser fanboy de Java hace mucho tiempo por diferentes motivos pero aún así he ido siguiendo de cerca los progresos y tras un par de años de desconexión total encuentro un artículo anunciando algo extraño con la licencia de Java 11. ¿Sabes de qué va la noticia?

Leer más →

Catalogación de Bichos

Revisando una lista curiosa de catalogación de bichos (entendido como bugs, o errores informáticos), me he topado con una clasificación que viene de bastante tiempo atrás. Parece que hay gente que se encargó de catalogar los tipos de errores informáticos según su dificultad para ser resueltos o naturaleza. ¿Quieres saber más de estos bichos?

Leer más →

Libro de Elixir: ¡Ya queda menos!

En la web de libros de Altenwald y más concretamente en la página dedicada al libro de Elixir podéis ver que desde que hablé de su salida he mantenido la fecha de diciembre de este año y sí, voy a poder cumplir mi promesa. Solo falta acabar de escribir dos capítulos y la revisión. ¿Quieres algo que regalar estas navidades?

Leer más →

¿Cómo estimar un Proyecto de Software?

Hace unos días pregunté a unos amigos ¿cómo estimáis un proyecto de software? queriendo saber no las tarifas, precios o costes específicos a tener en cuenta sino el proceso y los factores a tener en cuenta y comprobar si lo hacía bien o mal, ¿cómo lo estimáis vosotros?

Leer más →

Montículos con Elixir

Hace 7 años escribí una entrada mientras estudiaba los montículos para la asignatura de Programación y Estructuras de Datos Avanzadas de la UNED. Al revisar la entrada y ver que aún hay mucha gente consultando he decidido retomarla y actualizarla pero además he creado esta entrada para ver cómo se haría en Elixir, ¿te animas a ver los montículos en Elixir?

Leer más →

Una semana con Golang

En 2012 escribí un artículo sobre el lenguaje Go y desde entonces no me tomé mucho en serio esa plataforma. Esta última semana después de 6 años y viendo el auge que está teniendo me he propuesto hacer un proyecto. ¿Lo revisamos?

Leer más →

Programación Orientada a Ferrocarril

La programación orientada a ferrocarril (o Railway oriented Programming, RoP en inglés) es una nueva forma de orientas nuestro software para conseguir mejor legibilidad y entendimiento ante situaciones de error, ¿sabes cómo funciona?

Leer más →

PostgreSQL BDR: Cómo mantener un servicio

Recientemente cambié de proveedor de servidores de Hetzner a una mezcla entre Scaleway y DigitalOcean. La ventaja ha sido disponer de muchos servidores pequeños por la mitad del precio de uno grande pero, ¿cómo conseguir que una base de datos como PostgreSQL trabaje en multi-datacenter?

Leer más →

Altenwald Books: Cómo se hizo

A principios de junio publicamos la web de Altenwald Books para la venta de libros técnicos en castellano y aprovechando la salida del segundo volumen de Erlang/OTP. Esta web ha sido creada desde cero en Phoenix Framework hasta conseguir tener un sitio ecommerce completamente funciona, ¿quieres saber cómo se hizo?

Leer más →

Lenguaje Elm: Código Cliente sin Errores

El lenguaje Elm es una de esas joyas que encuentras en el mundo de la programación y una vez lo aprendes te preguntas porqué no llegó antes. Las promesas del lenguaje son impresionantes y el hecho de desarrollar en el navegador web solo empleando el lenguaje da muchas ventajas sobre JavaScript y sus frameworks, ¿sabes por qué?

Leer más →

Holacracia: Reuniones en Holacracia

El libro Holacracia de Brian Robertson no solo aporta una visión diferente a la forma de organizar la empresa sino también a la forma de realizar las cosas por parte de cada trabajador y la interacción entre los mismos. En este artículo voy a centrarme en las reuniones. En Holacracia estas interacciones son las más beneficadas, ¿sabes por qué?

Leer más →

Competiciones y Programación Funcional: Ahora en Elixir

El mes pasado hice algo de programación funcional usando Erlang y me quedó pendiente mostrar cómo se vería desde otro lenguaje con una sintaxis un poco más simpática como Elixir. Vamos a verlo.

Leer más →

Competiciones y Programación Funcional

Tras ver la definición de la función global:random_exit_name/3 la cual sugiere la eliminación de un proceso y la asignación de otro a un nombre para evitar colisiones, ¿qué pasaría si la elección estuviese en más de dos elementos?

Leer más →

Fish Shell: La shell de los noventeros

Hace poco encontré por casualidad esta nueva shell: fish. Según su web y slogan es una consola de línea de comandos de los 90s. ¿Le echamos un vistazo?

Leer más →

Computación Cuántica

La programación cuántica es un concepto de hace bastante tiempo pero aún en gestación. Algunas empresas como IBM o D-Wave Systems han construído sus procesadores cuánticos, han aparecido los primeros lenguajes pero, ¿qué significa todo esto para nosotros? ¿qué ventajas e inconvenientes tiene esta tecnología?

Leer más →

Julia: Lenguaje para Alto Rendimiento

Mi especialidad son los lenguajes de alta concurrencia y distribución principalmente, pero a veces me planteo agregar un poco de alto rendimiento también a mis desarrollos y pensando, ¿cómo podría hacerlo sin necesidad cambiar todo de lenguaje o emplear código difícil de leer?

Leer más →

Bragful: Un PHP escalable y confiable

PHP no ha evolucionado como otros lenguajes para cubrir la necesidad de sistemas reactivos puesta de moda y necesaria en los nuevos tiempos de la informática. Afortunadamente Bragful ha llegado para ayudar. ¿Quieres saber qué es y cómo funciona?

Leer más →

Yaws: Probando el Servidor Web de Erlang

En mis charlas sobre Erlang/OTP siempre hablo de lo bien que se comporta Yaws frente a otros servidores web en lo referente a carga. La cantidad de llamadas entrantes soportadas frente a otros sistemas, pero nunca me había animado a repetir el experimento de Joe Armstrong, ¿probamos un poco?

Leer más →

Ian Murdock y Debian 9 Stretch

El pasado 17 de junio de 2017 salió la última versión de Debian, Debian 9 Stretch. Hasta aquí todo normal, pero la noticia acompaña un suceso trágico sobre Ian Murdock. ¿Quieres saber más sobre Debian y Ian?

Leer más →

Haciendo Whatsapp (III): Mensajes y Recursos

Al construir nuestro sistema de chat nos encontramos ante un problema: los dispositivos móviles no son confiables. No mantienen una conexión constante a Internet y pierden la conexión fácilmente. Por otro lado XMPP está ideado para conexiones permanentes y confiables a Internet. ¿Cómo podemos usarlo sin perder información?

Leer más →

¿Qué son los Sistemas Reactivos?

En cada una de mis charlas sobre Erlang siempre comienzo explicando el cambio sucedido hace bastantes años de programación secuencial a programación paralela y concurrente. Un cambio que significó repensar el software de otra forma. Un grupo de programadores escribió el Manifiesto de Sistemas Reactivos para indicar pautas a seguir, ¿aún no lo has firmado?

Leer más →

Viber y Couchbase

Viber es una de las compañías de mensajería que ha abrazado Erlang/OTP a través de uno de sus productos destacados: Couchbase. En 2014 cambió todos sus MongoDB y Redis por Couchbase, ¿sabes los beneficios que obtuvo?

Leer más →

El Final de la Causalidad

Pasó en agosto de 2016. Un grupo de persona decidió poner fin a un proyecto que duró algo más de un año abanderados por el conocimiento de crear un lenguaje de vanguardia y el apoyo de una comunidad creciente. Finalmente los contratos no llegaron y tuvieron que echar el cierre a su empresa Causality Ltd. ¿Quiénes eran?

Leer más →

El Teorema CAP

De estas tres características: consistencia, disponibilidad y tolerancia a particiones, el teorema CAP nos dice que tan solo es posible seleccionar dos. Esta elección deben realizarla todos los sistemas que trabajan en cluster compartiendo información. En bases de datos cada sistema hace su propia elección, ¿sabrías decir cuáles eligieron los diseñadores de la base de datos que usas?

Leer más →

Redis 3.0 Cluster: Mayor Disponibilidad para Redis

El desarrollo de Redis ha sido dirigido siempre hacia la velocidad. Cada comando en la página de ayuda tiene la medida de la complejidad en base a poder medir rendimiento. Sorprende que finalmente hayan decidido lanzar la configuración en cluster pero, ¿qué ventajas y desventajas tiene?

Leer más →

¿Cómo funciona el Servidor de Nombres (DNS)?

Tras hablar hace tiempo del sistema web y del sistema de correo veo fundamental y complementario a estos abrir un nuevo cómo funciona para hablar del sistema de nombres (o DNS) que permite traducir nombres como altenwald.com en direcciones IP a través de una consulta a un servidor. ¿Sábes cómo funciona?

Leer más →

Scrapy: Gateando por Webs

Uno de los trabajos que he estado realizando últimamente es la captura de información de diversas webs (productos y artículos) a una base de datos. Al principio hacía pequeños scripts, pero esta vez quise probar algo más estructurado y profesional. Scrapy. ¿Sabes lo fácil que es hacer scraping de una web con él?

Leer más →

Introducción a Docker

Para mi Docker es a los administradores de sistemas como git es a los desarrolladores. Un sistema perfecto para mantener un control de cambios y versiones de máquinas. ¿Te interesa saber qué es Docker y cómo funciona?

Leer más →

Servidores: Ganado vs Mascotas

En la administración de sistemas aprendemos a poner nombre a los servidores. Es necesario para poder acceder a ellos no solo por una dirección IP sino también a través de un nombre que es más fácil de recordar y que permita a nuestros scripts una mayor abstracción. ¿Estos nombres deberían asignarse amistosamente como si fuesen mascotas o deberían ser secuenciales como se asigna al ganado?

Leer más →

¡Décimo Aniversario de BosqueViejo/Altenwald!

¡10 añazos! Aún recuerdo cuando me propuse comenzar a escribir el blog, después de volver de Madrid del primer trabajo que tuve fuera de mi ciudad. Ahora ya he estado en Helsinki, París, Rotterdam, Milán, Estocolmo, Londres, Lisboa, … y lo que aún queda por venir. Vamos a repasar en breve resumen para qué dan 10 años.

Leer más →

ephp y los Analizadores Sintácticos

Estos días me he propuesto seguir mejorando ephp, mi pequeño proyecto para poder incrustar código PHP dentro de aplicaciones hechas 100% en Erlang/OTP aprovechando las capacidades de Erlang/OTP y la facilidad de escribir código en PHP. El problema está en poder parsear ciertos aspectos de PHP que son un poco extraños, ¿adivinas cuáles?

Leer más →

Haciendo Whatsapp (II): Servidor y Autenticación

Uno de los grandes problemas al hacer una aplicación de chat para el móvil es la poca fiabilidad de las redes móviles. XMPP no fue diseñado para este tipo de escenarios pero las últimas versiones de ejabberd y MongooseIM vienen a darnos la solución, ¿implementamos nuestro chat?

Leer más →

Koans, Katas y Études

El pasado 22 de julio estuve dando una charla a un grupo de estudiantes de un curso de programación dado por Fernando de Sopinet y surgió la pregunta de ¿cómo mejorar en la programación? ¿qué podemos hacer para mejorar nuestra forma de programar?

Leer más →

Ansible: Automatización de otra Galaxia

Llevo años queriendo escribir sobre herramientas de automatización desde hace tiempo, el problema no es no haber encontrado tiempo sino considerar las herramientas de control de configuración o demasiado manuales (como Fabric) o demasiado dependientes de una estructura cliente/servidor… ¿En qué se diferencia Ansible?

Leer más →

¿Por qué el Modelo Educativo Actual no funiona?

Me resisto a hablar de temas fuera de la informática en el blog, considero que la temática del blog está limitada a la informática pero, en este caso merece la pena saltarse un poco la temática porque el modelo educativo impuesto en España y otros países merece un análisis. ¿No crees lo mismo?

Leer más →

Erlang/OTP 19.0

Justo ayer, 22 de junio, fue liberada la versión 19.0 de Erlang/OTP. En principio me ha decpecionado no encontrar en la distribución las herramientas rebar3, hex y relx tal y como se prometió hace tiempo, pero posee interesantes mejoras, ¿lo revisamos?

Leer más →

Haciendo Whatsapp (I): Eligiendo Protocolo

Este mes he revisado las empresas a las que he ayudado a implementar sistemas de chat basados en ejabberd o MongooseIM, son ya 9 las empresas que han confiado en mi para ayudarles en España, Francia, UK, Luxemburgo, Finlandia y Estados Unidos. Todos intentan copiar los pasos de WhatsApp, ¿cómo montan sus sistemas?

Leer más →

Twelve-Factor App: Construyendo Servicios

De vez en cuando la gente se reune y medita sobre las acciones que se están llevando a cabo para el desarrollo de software. Esta actividad de reflexión es muy positiva y nos proporciona estudios o manifiestos muy interesantes. En este caso quiero hablar de uno llamado The Twelve-Factor App para aplicaciones web que se ofrecen como servicio (Software as a Service, SaaS), ¿de qué se trata?

Leer más →

Rebar3 (I): Primeros Pasos

La versión de Erlang OTP 19 ya está cada vez más cerca y una de las principales características es la inclusión de rebar3. Esta herramienta ha cambiado mucho desde su versión 2 influenciada por mix. Sus creadores dicen que se trata de una herramienta completamente diferente. ¿Le echamos un vistazo?

Leer más →

Introducing Elixir

En la pasada Erlang User Conference (2015) nos regalaron un libro en O’Reilly en formato digital. De entre las opciones disponibles se encontraba Introducing Elixir de Simon St. Laurent y J. David Eisenberg. Lo puse en mi lista de libros por leer y este fin de semana finalmente lo leí. ¿Le echamos un vistazo?

Leer más →

Exrm: Liberando Proyectos Phoenix

Hace unos días comencé a realizar un par de páginas web en Phoenix Framework para tomar un poco más de soltura en el sistema. Son las páginas corporativas de altenwald.com y origamicall, no hay mucho código realmente, pero aprovecho el código para dejar el HTML algo más pequeño y poder realizar la i18n más fácilmente. ¿Cómo realizamos la liberación a producción?

Leer más →

Vagrant: Recursos en Red

Hace dos años escribí sobre Vagrant. Desde entonces se ha convertido en mi herramienta favorita para el desarrollo de software. No solo permite construir una máquina a medida del entorno donde correrá la aplicación, también permite la construcción de un entorno de trabajo incluso publicando las máquinas en la red local. ¿Has pensado en tener tu propio CPD en tu red local?

Leer más →

VerneMQ: Internet de las Cosas (IoT) y Mensajería (IM)

Hace unos días una persona me preguntó, ¿cuál es el mejor sistema y protocolo para crear un chat para aplicaciones móviles? Le hablé de XMPP por supuesto, pero también de MQTT. Hace un par de años hice una comparativa entre estos protocolos y determiné que había mucho por hacer en MQTT como para tenerlo en cuenta. Sin embargo, útlimamente los contras sobre XMPP me hacen replantearlo.

Leer más →

Phoenix Framework: Un Rails sobre Erlang/OTP

PHP, Rails, Django, Catalyst, ChicagoBossPhoenix Framework. Después de muchos framework llegamos a Elixir y encontramos este trabajo impecable de José Valim y Chris McCord, ¿por qué está teniendo tanta fama?

Leer más →

Pony: Actores, Objetos y Alto Rendimiento

De vez en cuando me gusta estudiar nuevos lenguajes de programación, ver para qué han sido desarrollados, las tareas que mejor pueden resolverse en esos lenguajes y comparar con otros que tengan una misión similar. En este caso he topado con Pony, un lenguaje basado en Modelo Actor, con Orientación a Objetos y Alto Rendimiento. ¿Qué es realmente el lenguaje Pony?

Leer más →

ING Direct y sus inoperatividades

Que una banca online a día de hoy cometa los errores de la inoperatividad es bastante grave. Puedes saltarse si esa inoperatividad es solo algunas noches, pero no cuando hoy jueves, el sistema lleva caído más de 7 horas. ¿Es debido a una mala gestión?

Leer más →

Balanceo con Hash Consistente

Últimamente he estado trabajando en sistemas que requieren de un sistema de balanceo ciego. Esto quiere decir que no conocemos el número de carga soportada en cada sistema, lo hacemos a través de un algoritmo matemático basado en la probabilidad, e incluso parece fácil, muchos lo usan en aplicaciones: cliente para memcached, o como el CEO de Travis-CI. ¿Conocías este sistema?

Leer más →

Publicación y Subscripción en PostgreSQL

De aquí a un tiempo he encontrado muchas empresas solicitando integrar el sistema de Pub/Sub de Redis en su arquitectura para conseguir agregar capacidades de chat. ¿Sabías que esto mismo podía hacerse en PostgreSQL?

Leer más →

La Hora en Erlang

Cuando hablamos de Erlang y enumeramos sus características entre ellas aparece el tiempo real blando (soft realtime). Erlang se ejecuta en una máquina virtual que tiene una gestión de procesos, memoria y acceso a recursos, pero lo que no había citado hasta el momento es su capacidad para controlar los eventos horarios. Sí, tiene gestión horaria dentro de su máquina virtual también, ¿para qué?, ¿cómo funciona?

Leer más →

Conectores de Mysql en Erlang

Si te encuentras en la necesidad de conectar tu proyecto de Erlang/OTP con Mysql y tienes dudas de cual es el mejor driver para utilizarlo te comentamos algunas de las especificaciones, ventajas y desventajas de cada uno de los controladores que se han desarrollado y que se encuentran disponibles en Internet.

Leer más →

Horario del Gerente, Horario del Programador

Hoy he tenido una reunión en la que me han mencionado el problema de la planificación del tiempo. El problema parte de cómo se gestiona en sí el tiempo disponible y cómo lo hacen dos perfiles dentro del mismo entorno, un manager, gerente o directivo por un lado y un programador, creador o fabricante por otro lado. ¿Cuál es la diferencia?

Leer más →

Industrial Erlang Users Group

Este año hemos comenzado con fuerza. Volví a España para dedicarme más de lleno a Altenwald, haciendo nuevos contactos, más clientes en el extrangero y para afianzar el compromiso adquirido con Erlang/OTP, Altenwald Solutions ha pasado a formar parte del Industrial Erlang Users Group.

Leer más →

Virtualizando: Xen vs KVM

Uno de los últimos proyectos que he realizado últimamente ha tenido como punto fuerte y principal las estadísticas (usando graphite y collectd principalmente) y paravirtualización empleando Xen (a través de los servicios de Amazon). De pronto un problema de rendimiento. ¿Por qué un incremento en E/S eleva tanto el uso de la CPU en Xen?

Leer más →

Graphite: Monitorizando Servidores

En 2014 uno de los principales problemas que surgió en el proyecto que estuve realizando en Finlandia fue la poco o nada visualización que teníamos de los servidores, la carga de trabajo, los usuarios en cada momento del día, … Estábamos ciegos. Cuando un sistema se caía, monit se encargaba de levantarlo pero, ¿por qué se caía?, ¿podemos adelantarnos o saber cuándo podría suceder?

Leer más →

RabbitMQ In Action

Este año he comenzado leyendo. Al igual que muchos, me he propuesto aprender nuevos conocimientos y los elegidos para este mes de enero han sido RabbitMQ, Elixir y FreeBSD. El primero lo hago de la mano de Álvaro Videla y Jason J.W. Williams, a través de su libro RabbitMQ In Action. La primera pregunta a resolver: ¿Para qué necesitamos un sistema de encolado de mensajes?

Leer más →

Hack: Facebook conquista PHP

Hoy en PHP-Classes he leído un artículo en el que se menciona una posible pugna entre el equipo de desarrollo de PHP y Facebook. Todos saben que Facebook fue construido empleando este lenguaje de programación y que ha invertido tiempo y dinero en desarrollar herramientas que lo mejorasen como HipHop (o HHVM), ¿Quiere Facebook hacerse con el control de desarrollo de PHP?

Leer más →

Qué, Cómo... mejor, ¿Por qué?

Uno de los avances más grandes en el desarrollo del software fue el intento de estandarizar, industrializar o sistematizar el proceso de creación del software. Este esfuerzo nos ha llevado a disponer de técnicas de gestión del tiempo, procesos y tareas. Ha evolucionado la generación de software. ¿Qué debemos hacer? Indica el análisis. ¿Cómo lo hacemos? Indica el diseño… pero, ¿Por qué lo hacemos?

Leer más →

Bootstrapping o Los Duros Inicios

A lo largo de los últimos meses he aceptado muchos proyectos. Todos los proyectos estimados según la forma de hacer de cada empresa y según sus necesidades. No importa. Pero, ¿qué sucede cuando una empresa solicita una tecnología nueva, en la que no tiene experiencia y necesitan aprender?

Leer más →

Motivación y Trabajo

Llevamos 12 horas de caída del sistema, al final la copia de la base de datos se realizó, 45 millones de registros activos y una tabla de 20 GiB, vamos a reunión con la dirección y al entrar nos aplauden, abrazan y nos dan un café para comenzar una retrospectiva sobre qué hemos conseguido y qué podemos conseguir la siguiente vez, ¿no hay enfado, reprimendas ni sermones de horas? ¿Por qué?

Leer más →

¿Reinicio ahora?

De repente un servidor se apaga, se enciende la alarma en Nagios, nos preocupamos y al poco rato los mensajes de monit y por Skype una explicación: He visto que teníamos una versión comprometida de OpenSSL para el heartbleed, he actualizado y reiniciado; ¿y por qué has reiniciado?

Leer más →

Software: Libre o Propietario

En proyectos actuales como Android donde Microsoft ha perdido terreno contra este sistema operativo abierto deja presente que el software desarrollado por una comunidad activa suele tener una calidad y un ritmo de crecimiento mientras que el software propietario crece únicamente según la inversión económica que se le destine. ¿Aún piensas que hay ventajas en el software propietario?

Leer más →

Erlang 17.0

El día 9 de abril recibimos la noticia de la liberación de Erlang 17.0. Esta nueva versión marca un hito en Erlang por tres motivos fundamentales: una nueva nomenclatura en el número de versión, la adición de mapas como tipo básico y clausuras con nombre. ¿Qué relavancia tiene esto realmente?

Leer más →

TODO, FIXME, DEPRECATED... ¡Marca tu código!

Si programas con frecuencia y lees código de software libre, sabrás o te habrá llamado la atención el uso de ciertas etiquetas dentro de los comentarios del código que comienzan por TODO, o FIXME, o XXX… estas etiquetas se conocen con el nombre de codetags, ¿sabes para qué sirve cada una?

Leer más →

We.Developers 031: Erlang

El pasado día 7 de abril se publicó el último episodio de we.developers hasta la fecha titulado Erlang. La entrega número 031 según indica la propia web. Ha sido un placer participar en transmitir más sobre Erlang de una forma distendida y abierta con José Antonio Blanco. ¿Quieres saber de qué hablamos?

Leer más →

Heartbleed: El Gran Bug de Seguridad

Se ha destacado como uno de los mayores peligros para la seguridad de Internet que ha afectado, según unos a dos tercios de todos los servidores de la red, y según otros solamente al 17%. Lo que sí es seguro es que este error ha afectado no solo a sitios pequeños y desarrollos aislados, sino a todos los usuarios y a todos los desarrollos. ¿En qué consiste el corazón sangrante?

Leer más →

DSL: Lenguaje de Alto Nivel

Las siglas DSL tienen como signficado domain-specific language (lenguaje específico del dominio). La construcción de un lenguaje específico es algo natural en el ser humano, el lenguaje se adapta al entorno en el que vivimos y al uso que de él hacemos. ¿Sabías que esto mismo es extrapolable a los lenguajes de programación?

Leer más →

Diferencia entre Startup y Empresa

La mentalidad del empresario respecto a la visión de la empresa, la monetización de la misma y el conseguir más clientes, más valor y menos competencia es algo que me ha fascinado al verlo en diferentes entornos dentro y fuera de España. Pero desde que Internet llegó se ha acuñado a otro tipo de empresarios el nombre de emprendedores y a sus empresas el nombre de startup, ¿en qué se diferencia?

Leer más →

Nivel 30: Maestro Desarrollador

Una de las cosas que más parecidas puede tener un juego de rol con la actividad de un programador son las destrezas. En los videojuegos, las destrezas básicas de un personaje suelen ser: velocidad, fuerza, agilidad e inteligencia. ¿Cuáles serían las destrezas a medir entre los desarrolladores y administradores de sistemas?

Leer más →

Piensa en el !11

Hace unos días Marga estaba enfrascada en el desarrollo de una solución para web basada en JSON-RPC y surgió la frase, por parte del cliente (Nothmann Research): piensa en el !11. Cuando me lo comentó no lo entendí de primeras. El factorial de 11, ¿por qué?

Leer más →

Fabric: despliegues en cadena

El objetivo de cada programador es llevar a producción el código que escribe. En los tiempos que corren, este código se suele preparar para estar disponible para ejecutarse como servidor, dentro de un servidor o como paquete para descarga desde la nube. ¿Pero cómo podemos hacer que ese código llegue a estar preparado sin convertir esta tarea en épica?

Leer más →

MQTT vs XMPP

Una de las curiosidades de las aplicaciones de que dispone Facebook hasta la fecha es sus protocolos para el chat. Mientras que Whatsapp y la mayoría de sus competidores (salvo Telegram), emplean el protocolo XMPP, el chat de Facebook emplea el protocolo MQTT, ¿por qué?

Leer más →

Erlang y Whatsapp

En estos últimos días no deja de repetirse la misma noticia en los medios. La compra por Facebook de Whatsapp. Pero hay un medio de comunicación que ha preferido poner un títular diferente en la noticia haciendo referencia al éxito conseguido por Whatsapp haciendo énfasis en el tamaño de la empresa y la elección del lenguaje de programación para el desarrollo de su solución a nivel de servidor: Erlang.

Leer más →

¿Consultora o Agencia de Contactos?

Aunque este blog trata más de los aspectos técnicos de la profesión informática, de nuevas tecnologías, herramientas, lenguajes y otros temas relacionados con todo esto, hay momentos en los que me gusta salir un poco de este tema tan técnico y tocar un poco más los temas más organizativos y en este caso, temas algo más espinosos y controvertidos como son: las consultoras.

Leer más →

Betabeers Córdoba X

En diciembre de 2013 asistí para conocer a la gente de Betabeers Córdoba a una reunión en la que me ofrecí para hablar un poco de Erlang y más concretamente sobre ChicagoBoss. Hacía tiempo que quería mostrar un perfil más útil del lenguaje y de la plataforma mostrando algo como ChicagoBoss y no ceñirme simplemente a hablar de las bondades del lenguaje y las ventajas de su plataforma y/o máquina virtual.

Leer más →

Vagrant: construye tu entorno de trabajo

De siempre me he dado cuenta de que muchas veces intento modificar algún proyecto, algún entorno que requiere de un entorno de trabajo muy específico y me paso unas cuantas horas rehaciendo ese entorno en mi PC a través de técnicas como rvm, kerl o más llanamente con el update-alternatives de Debian. Pero, ¿cómo podría tener un entorno de trabajo desde cero y en muy poco tiempo funcionando?

Leer más →

Octavo Aniversario de BosqueViejo

Más de 250 artículos escritos, más de 400 comentarios y ya 8 años desde esa bienvenida a bosqueviejo. BosqueViejo antes y ahora Altenwald. Wordpress antes y ahora Octopress. ¡8 años! Número mágico y número cordobés. Número de la suerte en China. Canon leonardino de 8 cabezas. Tanto el día en que nací como la década del siglo de mi nacimiento.

Leer más →

LevelDB en Mnesia

Entrando en la página de Erlang Central en su chat había un mensaje que decía literalmente: mnesia_ext_eleveldb ,how to download? (mnesia_ext_eleveldb, ¿cómo lo descargo?). La alusión de que Mnesia pueda trabajar con LevelDB me resultó curiosa, tanto que he decidido investigarlo y dedicarle una entrada en el blog.

Leer más →

Skulpt: Python en el navegador web

Viendo un curso de Introduction to Interactive Programming in Python que está siguiendo Marga en el que está programando algunos videojuegos como el Pong. En la página web de Coursera me ha llamado la atención de que todo el código escrito en Python se ejecuta y lo hace en el navegador web. Viendo la firma de la página, veo que se basan en algo llamado Skulpt, ¿Qué será…?

Leer más →

CodeMotion 2013

El pasado sábado 19 de octubre de 2013 tuve el honor de participar en las pistas de conferencias del evento CodeMotion 2013 que se celebraba en Madrid.

Leer más →

De Wordpress A Octopress

Después de unos 7 años utilizando Wordpress he decidido comenzar a utilizar Octopress por varios motivos. El principal es que últimamente y gracias a github prefiero emplear Markdown en lugar de HTML (la interfaz WYSIWYG de Wordpress nunca me gustó y terminaba escribiendo en HTML), los enumero a continuación:

Leer más →

SOA 2.0: XMPP como ESB para el IoT

Hace tiempo escribí una entrada sobre la posibilidad de utilizar XMPP como elemento para SOA (service oriented arquitecture, arquitectura orientada al servicio), hoy vuelvo de nuevo con la idea y amplio un poco más gracias a este artículo (en inglés) que me ha llamado la atención sobre el hecho, ya no solo como sistema SOA, sino también como ESB (enterprise service bus, bús de servicio empresarial), para mantener comunicación entre todos los recursos de un sistema de la información.

Leer más →

V Taller de Programación Funcional

Dentro de unos días, el 17 de septiembre de 2013 se celebra en la Universidad Complutense de Madrid el V Taller de Programación Funcional al que he sido invitado para dar una charla aplicada sobre el uso de Erlang (programación funcional propiamente dicha) en proyectos en empresas. El motivo que llevó a emplearlo y el resultado obtenido (éxito o fracaso) y las mejoras y/o deficiencias que conllevó su uso.

Leer más →

Erlang: Volviendo a la Incrustación

A través de twitter me llega la noticia de que en la Erlang Factory de San Francisco se ha presentado una charla sobre La vuelta al incrustado (embedded) de Erlang. Esta vuelta se ha realizado de la mano de Erlang Solutions y su proyecto Erlang Embedded. La charla corrió a cargo de Omer Kilic. Se puede ver el vídeo en Youtube.

Leer más →

Movimiento en Elixir

En estos últimos días ha habido un gran revuelo en el mundo Erlang con respecto a Elixir. Ha habido varios detonantes, pero el que los ha unificado todos y los ha comentado desde su experiencia, tras una semana de hacer pruebas con Elixir ha sido Joe Armstrong, padre de Erlang, en un artículo denominado A week with Elixir.

Leer más →

IEEE Developer Days

Este jueves y viernes se celebra en Elche, en la Universidad Miguel Hernández el IEEE Developer Days 2013.

En esta entrega habrá charlas sobre Android, Windows Phone, Linux, Arduino y… Erlang/OTP. En nombre de Yuilop, la empresa en la que trabajo, voy a dar una charla sobre las posibilidades de Erlang como lenguaje para backend y soporte para aplicaciones móviles y web. Además aprovecharé para dar un poco de publicidad sobre el libro Un Mundo Concurrente (Volumen I).

Leer más →

ErlangCamp 2013 en Amsterdam

Este año se vuelve a celebrar la ErlangCamp a manos de Martin Logan, Eric Merritt y Jordan Wilberdng en Amsterdam. Dos días intensivos para aprender Erlang y OTP de manos de los profesionales de Erlware y autores del libro OTP in Action.

Leer más →

¡Debian Wheezy 7.0 liberada!

El pasado sábado 4 de mayo se liberó la última versión de Debian hasta el momento: Wheezy; o 7.0. Esta versión contiene versiones actualizados de los paquetes principales como el núcleo de Linux, Apache, GIMP, MySQL o Asterisk, además de nuevas características como disponer de soporte multiarquitectura, herramientas para despliegue de nube privada, instalador mejorado y un conjunto de codecs de audio y vídeo para eliminar la necesidad de instalar paquetes de terceros.

Leer más →

Erling: Erlang on Xen

Después de la noticia en la revista Forbes acerca de la computación en la nube y la solucion de Cloudozer llamada Erlang on Xen, se hace más patente la repercursión de Erlang en la evolución de la computación en la nube y sus siguientes pasos.

Leer más →

Hacker Cup 2013 en La Ventana, Cadena SER

Ayer recibí una llamada de la cadena SER en la que me proponían entrar en antena sobre las 20:00h para hablar un poco sobre la participación en la Facebook Hacker Cup 2013. La verdad es que mi participación no fue digna de mención ya que me quedé en la segunda ronda de seis, pero me motivó a aprender más y probablemente el año que viene quede en mejor posición.

Leer más →

Études para Erlang

Étude es una palabra francesa que se traduce como estudio, pero se relaciona con un estudio específico que tiene como objetivo mejorar las destrezas del estudiante. Así, en música se toma como una pieza musical que permite al que la ejecuta mejorar el dominio de una técnica específica y en programación se puede tomar como un algoritmo o trozo de código que el alumno puede analizar, probar y modificar para mejorar su entendimiento sobre la forma en la que está desarrollado.

Leer más →

Programación Funcional, ¿una moda?

Después de 20 años programando en diversas metodologías y lenguajes, me doy cuenta de que muchos de los lenguajes que he aprendido y muchas de las metodologías en las que me he visto sumergido han sido protagonizadas por una moda.

Leer más →

Erlang R16B liberada

El mundo Erlang se va moviendo cada vez más rápido, además de tener cada vez más presencia en más eventos del mundo del desarrollo, escalabilidad y sus propias convenciones, la liberación de nuevas versiones va a un buen ritmo, entregando recientemente la versión R16B el día de hoy.

Leer más →

Erlang y Microsoft Axum

Tras la noticia de la celebración de la Erlang DC en la que uno de los principales patrocinadores es Microsoft.

Leer más →

OpsCode y Chef 11 en Facebook

Una de las noticias que más eco se han hecho en Internet y sobretodo en la comunidad Erlang es el cambio estratégico de la compañía OpsCode de su producto Chef que han reescrito íntegramente con Erlang, estando escrito anteriormente en Ruby.

Leer más →

Evolución de LAMP

Hace ya más de 10 años que surgió la pila de programación web denominada LAMP en honor de las siglas que formaban los 4 principales elementos que conforman esta tecnología: Linux, Apache, MySQL y PHP. Hay otros que intercambiaron las páginas hechas en PHP por Python o incluso por Perl, pero no fueron tan populares y terminaron por dar paso a frameworks que hacían mejor ese trabajo, como por ejemplo [Django en Python][1] y [Catalyst en Perl][2].

Leer más →

Hacker Cup 2013: Cadenas Bellas

¡Que empiecen los juegos! … bueno, ya hace 72 horas de eso, pero ha sido emocionante. Este es el primer año que me ha dado por participar en la Facebook Hacker Cup y tengo que decir que me ha fascinado. No recuerdo haberme enfrentado a problemas tan complejos desde mi época de programación en la universidad, en las asignaturas de Programación III o más recientemente en Programación y Estructuras de Datos Avanzadas.

Leer más →

Tipos de Datos en Erlang (IV): Pilas y Colas

Después de revisar los arrays, diccionarios y los conjuntos llegamos a las pilas y a las colas. Estos tipos de datos son complementarios y tienen una forma muy parecida de trabajar. Sin embargo, los algoritmos internos para su funcionamiento difieren.

Leer más →

Certificación en Erlang, Examen de Ejemplo

El sábado a través de twitter me enteré de que Erlang Solutions ha puesto a disposición una [maqueta del examen de certificación en Erlang][1] que realizan ellos mismos a los alumnos que realizan sus cursos para otorgarles la certificación.

Leer más →

Tipos de Datos en Erlang (III): Conjuntos

Siguiendo con el repaso de los tipos de datos que se pueden representar en Erlang a través del uso de los módulos que integra su librería estándar (stdlib) llega el turno de los conjuntos. Los conjuntos son una agrupación de elementos con ciertas propiedades, la que más cabe destacar es que en un conjunto no pueden existir dos elementos idénticos, es decir no existe repetición.

Leer más →

Elementary OS

Hace unos meses me pasaron este enlace de una nueva distribución de Linux llamada Elementary OS. Gracias José Luis Navarro por la info.

Me fascinó bastante que a diferencia de otras distribuciones que las que se cuidan aspectos de instalación y distribución, Elementary OS iba un poco más allá diseñando su propia interfaz de escritorio muy al estilo Gnome, su propio gestor de ficheros, editor de textos, calendario, navegador web, … en esencia es un sistema ligero que integra la mayoría de aplicaciones que incluye cualquier otro sistema operativo.

Leer más →

Tipos de Datos en Erlang (II): Diccionarios

Siguiendo con la edición de tipos de datos en Erlang vamos a repasar en esta entrega los diccionarios. Los diccionarios son conocidos genéricamente como hash. A diferencia de los arrays vistos en la entrega anterior en este caso se permite emplear un texto, número o átomo en lugar de restringirse a un índice numérico.

Leer más →

Libro en papel

Al fin ya llegó, la primera impresión del libro en papel de la editorial Lulu. Me ha animado tanto que realicé un par de cambios para la aprobación de la edición en papel y renegociar el precio. Ahora está disponible al precio de 12 €.

Leer más →

Tipos de Datos en Erlang (I): Arrays

Todos los que llevamos un tiempo con Erlang conocemos los tipos de datos que provee (listas y listas binarias, tuplas, registros, enteros, decimales y átomos). En herencia de los tipos de datos imperativos y como modelos de datos que tienen sus propios algoritmos de acceso y son muy empleados en programación imperativa y sin embargo quedan fuera están los diccionarios, los arrays, los conjuntos, los árboles… estos tipos de datos no están presentes en la base del lenguaje, pero sí que están presentes en la librería estándar de Erlang.

Leer más →

Libro de Erlang en castellano liberado

Al fin se acabó el proceso que conlleva escribir un libro dando su fruto final, el libro. Ha sido un largo recorrido, mucho tiempo escribiendo y muchos amigos que me han motivado y ayudado para seguir escribiendo este manuscrito hasta su final. De entre ellos, agradecer sobre todo a Juanse y a José Luis sus revisiones, consejos y correcciones. Sin ellos el texto no habría alcanzado el nivel mínimo de calidad para poder ser considerado un libro.

Leer más →

La lista negra

Después de mantener fail2ban activo y con restricciones muy altas en mi servidor, comencé a poner a los sospechosos habituales en la lista negra permanente. Estas direcciones IP pertenecen a empresas o particulares a las que es muy difícil localizar y/o no disponen de dirección abuse a la que poder informar de que están incurriendo en actos delictivos o acciones no muy éticas, como ataques de fuerza bruta vía SSH.

Leer más →

Erlang shell con historia

Una de las características de que disponen las consolas de usuarios como bash o zsh es que tiene histórico. Cuando cierras la consola y abres una nueva, puedes recurrir al histórico para ver qué comandos habías ejecutado momentos antes o incluso días antes.

Leer más →

Betabeers Murcia V

El pasado miércoles, 21 de noviembre de 2012, asistí a la reunión periódica que se celebra en Murcia (aunque existe en muchas ciudades más) llamada Betabeers.

Leer más →

Erlang/OTP Volumen I: Un Mundo Concurrente

Desde que escribí la primera palabra, esbocé el primer contenido o la primera idea de qué iba a ser este libro ya ha pasado mucho tiempo. Han sido muchos cambios durante el proceso de escritura, tanto en lo concerniente al propio libro en sí como a nivel personal y profesional.

Leer más →

SOA con XMPP

Al entrar en mi nueva empresa me topé con un cambio drástico en la forma en la que los elementos de la infraestructura se comunican entre sí. Para entenderlo mejor, mi compañero Iván me dejó el libro XMPP: The Definitive Guide, escrito por Peter Saint-Andre , Kevin Smith y Remko Tronçon.

Leer más →

HackHistory

En el pasado verano se cerró la segunda ronda de financiación del proyecto Hackstory de forma satisfactoria por lo que Mercè Molist habrá comenzado ya su tarea junto con muchos más colaboradores de realizar el trabajo de materializar, en un libro físico, la historia Hacker hispano hablante.

Leer más →

Gitflow: trabaja mejor con git

Hace poco que comencé a trabajar de forma activa con git. Antes había tenido algunas incursiones para saber qué era, pero sin quedarme del todo claro hasta entrar en la práctica con proyectos como ecomponent u otros internos que desarrollo dentro de la empresa en la que trabajo.

Leer más →

Definición de Terminado

Una de las bases de las metodologías de desarrollo de software es definir cuándo una tarea ha sido realizada o terminada. Parece algo obvio pero muchas veces se fracasa debido a una mala estimación a causa de estimar tareas basadas en el tiempo medido entre su inicio y cuando se dice que se ha terminado.

Leer más →

Erlang, XMPP, ejabberd, ... Yuilop!

Hace algo más de dos meses, desde el 20 de agosto, que soy yuiloper, tal y como me dijo la chica de recursos humanos cuando terminamos la negociación de mi contrato. En este tiempo, muy corto y a la vez muy intenso, he podido disfrutar de una nueva ciudad, de nuevos compañeros y muchos nuevos conocimientos. En cierta forma me siento como de vuelta al colegio, ya que el ambiente es más distendido y he tenido que ponerme las pilas con temas que no tenía tan al día como XMPP, git o rebar.

Leer más →

eJabberd 3 y MongooseIM: dos puntos de vista

El proyecto ejabberd es de los más grandes y populares de los realizados en Erlang. Muchas empresas, con la salida de la web interactiva, la aparición cada vez más grande de sistemas de chat en la propia web, e incluso a través de dispositivos móviles, se ha propagado gracias al uso que han hecho empresas como Tuenti, Facebook, Whatsapp, Yuilop, etc. de esta herramienta.

Leer más →

Vulnerabilidad grave en Java 7

Hoy me ha llegado una noticia de una vulnerabilidad de Java 7, en los tan famosos applets (aunque ya apenas se usan, realmente) que podría inyectar el código binario de un ejecutable de windows, macos o incluso hasta gnu/linux, lo que constituye una de las más graves vulnerabilidades descubiertas.

Leer más →

Adiós y Buen Viaje

Se cierra un capítulo. Un largo capítulo esta vez que ha durado unos 4 años. Alegría. Tristeza. Superación. Aprendizaje. Maduración. Hay muchas cosas que he aprendido en este tiempo y de las que me he podido beneficiar mientras he estado trabajando en la empresa Jet Multimedia. Esta entrada me puede servir como reflexión a todas esas cosas que considero han sido muy provechosas, y un recuerdo al trabajo conjunto con personas con las que he compartido una pequeña porción de mi vida profesional.

Leer más →

ErlangCamp en A Coruña

Este año, tenemos el privilegio de contar en la ErlangCamp con unos excelentes profesores, nada más y nada menos que los escritores del libro OTP in Action: Martin Logan, Eric Merritt y Richard Carlsson. Además, estará presente también Laura Castro, que gracias a ella esto es posible. Desgraciadamente este año no podré asistir, ya que tengo otra cita profesional para ese mismo fin de semana, pero os lo recomiendo encarecidamente a todos los que queráis aprender íntimamente un lenguaje que está en boga y que poco a poco va conquistando cada vez más mercado, en lo que respecta la programación del lado del servidor.

Leer más →

REPL en Erlang

Leyendo el blog de Verdi, me encuentro con un artículo muy interesante sobre los REPL (Read-Eval-Print… and Loop), vamos la forma de crear consolas de interacción básicas. El hecho de escribir acerca de ello no es solo copiar, sino ampliar un poco más donde Verdi se quedó, agregando el soporte para que esto, dentro de Erlang/OTP, sea un behaviour.

Leer más →

¡Estamos en Guerra!

Así proclama una iniciativa de la Bonilista hecha artículo dentro del blog de bonillaware: We are at war; y la cual han apoyado cada vez más personas en la red a través de blogs, twitter, facebook, etc. Desde este mismo blog, debido a que la propuesta tiene su lógica y está dentro de lo que siempre he defendido, proclamo, igualmente, ¡estamos en guerra!.

Leer más →

Rust: Otro más para Concurrencia

Tras llevar ya la friolera de casi cuatro años con Erlang, y analizar el lenguaje Go, otro que se perfila con lenguaje para desarrollo de sistemas con alto grado de concurrencia es Rust.

Leer más →

Premio Calidad para la Optimización de Recursos

Ayer por la noche (21 de junio de 2012), se celebró la [III Edición de Premios Contact Center][1], a lo largo de las últimas semanas, nos habían avisado de que habíamos entrado en el proceso de selección, entre los nueve primeros y, en esta semana, que estábamos entre los tres nominados. La empresa para la que trabajo no ha recibido, al menos que sepamos los que lo hablamos, ningún premio hasta el momento, por lo que los directivos fueron al evento, pero con la idea de que los habían invitado y nada más. No obstante, de entre los tres nominados, en la sección de Optimización de Recursos salió el nombre de Jet Multimedia, y entre asombro general y alegría, se recogió el premio.

Leer más →

Redis: NoSQL de alto rendimiento

Después de haber dado un repaso a Riak, MongoDB y Cassandra, ya era hora de hacer algo con Redis.

Leer más →

Websocket y Erlang

Hace un tiempo (ya unos años), escribí algo que había leído del blog de Joe Armstrong acerca de websocket, hoy retomo el tema después de leer un email de la lista de ErlAr, de un mensaje de Mariano Guerra en el que nos da estos datos sobre un banco de pruebas realizado con varias librerías, en varios lenguajes, sobre el uso de websocket:

Leer más →

Jingle: el paso a VoIP de Google

El protocolo XMPP se caracteriza porque se establece sobre una conexión TCP, sobre la que se comienza un documento XML que van completando las dos partes, tanto el cliente como el servidor, de modo que al finalizar la conexión (de forma correcta), se obtiene un documento único de todo lo transmitido entre las dos partes.

Leer más →

Lenguaje Boo y Mono para videojuegos

Cada vez más, hay una tendencia clara de los fabricantes de engines a fabricar entornos en los que otros desarrolladores, diseñadores y animadores, puedan crear juegos tanto para PC, como videoconsolas, móviles, etc.

Leer más →

Behaviours: la potencia de OTP

Una de las potencias de Erlang y el framework OTP, son los comportamientos (o behaviours), estos se basan en la [Inversión de Control][1], es decir, que existe un código base que se autocompleta a través de la implementación de unos callbacks definidos en la plantilla, que deben de ser implementados para que todo funcione correctamente.

Leer más →

ErlDev 0.2 liberada

Ha sido liberada finalmente la versión 0.2 de ErlDev. Esta versión trae consigo algunas mejoras sustanciales para la programación en entornos de Erlang, así como nuevas plantillas, más paquetes disponibles, etc.

Leer más →

cowboy: servidor pequeño, rápido y modular

Hace poco que le llevo siguiendo la pista a este framework para desarrollo en Erlang. cowboy se ha convertido, para mi, en una referencia a nivel de sistemas de inversión de control en Erlang, ya que son los únicos que he visto, hasta el momento (aparte de ciertas partes de código dentro de ejabberd) que usan los behaviours para extender funcionalidad.

Leer más →

Juggernaut: Invirtiendo el paradigma Cliente/Servidor

Juggernaut, además de ser un personaje del universo Marvel, es un servidor escrito en Node.JS, que permite su integración con Ruby on Rails para realizar el intercambio de mensajes en dirección del servidor hacia el navegador.

Este esquema permite al servidor poder enviar mensajes al navegador en cualquier momento, de modo que se mantiene una actualización mucho más precisa que con refrescos esporádicos del navegador web hacia el servidor.

Leer más →

Estructura Líder/Trabajador en Erlang

Erlang es muy bueno para programación distribuida, y paralela, y concurrente, así mismo se hace muy simple la creación de servidores, tal y como he mostrado en entradas anteriores (servidor UDP y servidor TCP), pero nos queda una tipo de comportamiento que es algo complejo llevar a la práctica. Me refiero al paradigma de Maestro-Esclavo.

Leer más →

UUID: Identificador Único Universal

Últimamente, cada más sistemas, y cada más sitios emplean algo llamado UUID, cuyas siglas vienen a decir: Universally Unique ID; aunque suene algo arrogante, el cálculo de un UUID casi que podríamos decir que garantiza el que sea único. Es más, su grado de colisión es tan bajo que si lo colocásemos como identificador de clave primaria de una tabla que alberga elementos recogidos aleatoriamente de otras tablas de bases de datos de todo el mundo, que hayan empleado este tipo de dato, garantizamos que no habrá repetidos.

Suena excitante, pero…

Leer más →

Cassandra: la NoSQL de Facebook

Tras haber visto Riak un poco más de cerca, ahora le toca el turno a Cassandra. Esta base de datos NoSQL fue desarrollada en el seno de Facebook, como una de sus 7 tecnologías clave. En 2008 fue donada a Apache y desde entonces su popularidad ha ido creciendo cada vez más.

Leer más →

Riak: Revisando y Practicando

Después de la introducción que hice ya hace unos meses sobre la teoría en la que se fundamenta esta base de datos, me he dispuesto a someterla a unas pruebas de funcionamiento, para así aprender a manejar de forma apropiada esta herramienta.

Leer más →

No, Erlang no es eso

Vale, después de leer varios artículos que llevan a lo mismo, intentar meter la orientación a objetos en Erlang (y como estos otros ejemplos más que no citaré de momento).

Leer más →

Go: El lenguaje de Google

Hace un par de años que escuché que Google trabajaba en un lenguaje, y hace poco que ya había visto la luz una versión estable, la primera. ¿La has probado ya? ¡Demos un repaso!

Leer más →

Erlang: Servidores Concurrentes TCP

Para la programación de elementos que requieran concurrencia, Erlang, es una de las mejores elecciones que se puede tomar. El hecho de construir servidores UDP con los mecanismos que nos ofrece OTP es algo trivial, muy simple de conseguir, tal y como se puede ver en este otro artículo, pero la cosa se complica, cuando lo que queremos obtener es una conexión, o un conjunto de conexiones concurrentes para TCP.

Leer más →

Clean Code: para ser mejor programador

Dando un repaso a mi biblioteca he vuelto a topar con un libro que me llamó la atención antaño, leí aunque muy por encima y, hoy dándole otro repaso he pensado, ¡qué razón tiene!

Leer más →

Erlang: Servidores UDP

Una de las grandes potencias de Erlang es su capacidad para construir servidores. A través de OTP, esta tarea se convierte en algo tan sencillo, que asombra ver con qué pocas líneas de código se crea un servidor.

Leer más →

Charla: Gestión de Llamadas con Erlang/OTP

Este será el título de la charla, dentro de la erlounge de mañana, que daré en la [Universidad Complutense de Madrid][1], organizado por el [grupo de usuarios de Erlang de Madrid][2]. Hace tiempo que no doy una charla y la verdad, ya lo echaba de menos, sobretodo de este tema que me tiene tan motivado últimamente.

Leer más →

¿Qué es el Código Ravioli?

Leyendo un documento sobre Erlang, en el que introduce el concepto de módulos parametrizados, encuentro un aviso que dice (traducido): cuidado con el código Ravioli. Por lo que llego a preguntarme… ¿qué es el código Ravioli?

Leer más →

V8: Extendiendo PHP

Hace prácticamente un año escribí un artículo denominado Spidermonkey: extendiendo PHP, donde comentaba como emplear Spidermonkey para poder emplearlo como lenguaje de extensión a un núcleo sencillo hecho en PHP.

Leer más →

En Busca de la Excelencia del Código

Así se titula el primer libro de Raúl Herranz, uno de los profesores acreditados de Scrum Manager. El documento es libre y gratuito y puede descargarse de la siguiente dirección:

Leer más →

Montículos

Pues sí, otra vez de exámenes, otra vez estudiando, y llego a un apartado, en el que lo que decía el libro me sorprende y, al implementarlo, me confirmo. La teoría o lo que viene en los libros no es 100% fiable, en caso de teorías matemáticas, físicas, … o de computación, hay que comprobar lo que nos indican los libros, porque podemos encontrarnos con una errata.

Leer más →

Erlang y OTP en acción

El pasado lunes estaba camino del dentista cuando, dejando el coche, topé con la librería Cocodrilo Libros. Entré y pregunté por libros de Erlang, y como ya sabía, me mostraron el de O’Reilly de Francesco Cesarini y el de Pragmatic Programmers de Joe Armstrong… pero además, una editorial de la que aún no había leído ningún libro, Manning, tenía un libro con el título Erlang and OTP in action, la curiosidad me pudo y lo compré.

Leer más →

Una clase/objeto/proceso, Una responsabilidad

Una clase, una responsabilidad, fue uno de los textos que se me quedó grabado tras la lectura del libro Diseño Ágil con TDD de Carlos Blé.

Leer más →

Redirigiendo tráfico

He estado revisando para cambiar el servidor a otro nuevo, con una versión limpia y actualizada de Debian (la nueva versión Squeeze), por lo que, toca migrarlo todo.

Leer más →

NodeJS: el servidor JavaScript

El servidor Node.js vió la luz de manos de Ryan Dahl en 2009, la motivación, según la entrevista que BostInno le realizó en enero de 2011, es la arquitectura de E/S orientada a eventos.

Leer más →

Las gemas de Ruby

Tengo a Ruby un poco abandonado, por lo que me he decidido a escribir un poco acerca de él, al igual que hice con Python, para detallar un poco cómo son los paquetes de código (o librerías) de Ruby: las gemas.

Leer más →

NewSQL: dos vías para mejorar SQL

Últimamente hay muchos medios (como SDJournal) que van haciendo eco de una nueva versión, según algunos más fácil, de SQL.

Según vemos en la página oficial del proyecto, NewSQL dispone a día de hoy de dos posibles gramáticas a implementar. Una de ellas está basada en la Java Database (JDB) y otra sería la evolución propia de SQL (SQL II, o S2). Aún no se ha decidido qué versión será la empleada como newSQL, por lo que, podemos decir que es un proyecto a futuro y no hay implementación real de momento.

Leer más →

Selenium: probando aplicaciones web

Bueno, ya tocaba, después de dedicar varios apartados al desarrollo web, toca dedicarle un pequeño, aunque importante apartado a una herramienta de comprobación (tests) como es Selenium.

Leer más →

Zotonic: CMS en Erlang

En mi búsqueda de material (software sobre todo) realizado en Erlang para poder aprender mucho más sobre este lenguaje, sus virtudes, carencias y potencias, he topado con otra muy buena pieza de software: Zotonic, un CMS hecho en Erlang.

Leer más →

Túneles con SSH

Hace tiempo que empleo túneles para poder acceder a ciertos servicios inaccesibles desde Internet, o para agregar seguridad a un acceso determinado. Esto es posible gracias a los túneles que se pueden crear con la herramienta OpenSSH.

Leer más →

Prefijo Binario: mebibytes, kibibytes, etc.

Estudiando la asignatura de sistemas operativos, en un repaso a los sistemas de numeración, se nombraban a las unidades con kibibyte, mebibyte, gibibyte, … en lugar de los prefijos griegos de siempre (kilo, mega, giga, …). ¿Qué es esto?

Leer más →

DJJob: Trabajos en background para PHP

Hace tiempo que vamos encontrándonos de forma recurrente con este problema… ¿cómo conseguir que PHP realice un trabajo en background e ir consultando cuánto le falta o cuando ha terminado dicho trabajo?

Leer más →

Catalyst: Framework web para Perl

Justo cuando colgaba la encuesta sobre: Si tuvieses que hacer un sitio web dinámico, ¿en qué tecnología lo harías?; busqué un framework en los lenguajes más populares de desarrollo web y, topé con Catalyst, un framework en Perl para el desarrollo de aplicaciones web.

Leer más →

DynHost: nombres DNS para todos

Después de un par de semanas de trabajo, ya está disponible el sistema de DynHost, aún falta retocar algunas cosas, pero la base funciona.

Leer más →

Cron: programando tareas

Una de las cosas que siempre me ha gustado de Unix, es lo que siempre reseña Eric S. Raymond a través de la archiconocida filosofía Unix: la interfaz universal son los flujos de texto; y eso posibilita que los comandos se puedan programar en el tiempo y realizar tareas no atendidas que nos faciliten la vida.

Leer más →

PHAS-JS: Servidor de Aplicaciones

Después de bastante tiempo de trabajo, al fin, conseguí liberar la primera versión estable de PHAS-JS, un servidor de aplicaciones JavaScript con base en PHP e interfaz de administración en Django.

Leer más →

haXe: metalenguaje para todos

Hace tiempo que vi este lenguaje de pasada y no le presté mucha atención, pero hoy, revisando algunas cosas, he vuelto a él y he visto algo que, antes quizás me habría parecido ridículo, pero ahora, después de ciertos acontecimientos, comienzo a verle mucho sentido.

Leer más →

RSS: Leyéndolos desde PHP y Rails

Hace un tiempo hice un lector de RSS para poner noticias en una web, en Ruby on Rails, y me gustó la simpleza con la que se parsean los códigos y se pueden presentar las noticias, sin mucho esfuerzo, y apenas líneas de código. Unos días más tarde, me tocó hacerlo también en PHP… e aquí un ejemplo de simpleza de un framework, frente a un lenguaje.

Leer más →

Un nuevo tipo de phishing

Viendo la web, acerca de ataques de tipo phishing, me encuentro que hay una web en la que exponen un tipo de ataque que sigue aún siendo vulnerabilidad en ciertos navegadores, como Google Chrome (probado en las versiones 13, 14 y 15). Donde lo he visto ha sido aquí (en inglés).

Leer más →

Python: La Elegancia

Siempre he dicho que cada lenguaje tiene su potencia, si PHP son sus estructuras de datos (arrays) que permiten formas heterogéneas y de fácil administración y presentación, Perl es la versatilidad y potencia que proporciona su sintaxis escueta y orientada al resultado, Ruby es la reescritura en tiempo de ejecución… Python, sin duda, es la elegancia.

Leer más →

De MySQL a MariaDB

O del delfín a la foca, o de lo privado a lo público, … mucho ha llovido desde que MySQL salió y con su versión 3.23 recorrieran el mundo instalándose de los primeros en soportar la mayoría de sitios web en Internet a través de la idea LAMP.

Leer más →

Muere el padre de Lisp

No nos recuperamos de una y llega otra. Ahora le ha tocado el turno al mundo de la inteligencia artificial, nada más y nada menos que John McCarthy, el padre del lenguaje de programación Lisp y del término Inteligencia Artificial, murió el pasado martes, 25 de octubre de 2011.

Leer más →

MongoDB: Base de Datos Heterogénea

Hace tiempo que tenía pendiente dar una vuelta a las base de datos NoSQL para mostrar un poco el cómo funcionan, qué se puede hacer con ellas y cómo se comportan en ciertas situaciones específicas.

Leer más →

PHP: Convirtiendo Fatal Errors en Excepciones

Uno de los problemas que surge cuando se usa PHP, es que muchas veces, se programa pensando en orientación a objetos y, de repente… un Fatal Error, algo tan ligado a la programación estructurada o incluso spaguetti nos ronda en un esquema que intentamos que sea lo más POO (u OOP) posible.

Leer más →

South: Migraciones en Django

Cuando escribí el artículo sobre Django, fui bastante positivo con respecto al sistema de llevar los modelos a la base de datos, ya que, según parecía, el sistema propuesto por syncdb era automágico, pero realmente, lo único que se encarga de realizar es la creación de nuevos modelos que estén en el fichero de models.py.

Leer más →

CoffeeScript: Haciendo fácil JavaScript

Después de leer la liberación de Rails 3.1, me topé con que trae por defecto este sistema para facilitar la escritura de código JavaScript. Es curioso que lo traiga activo por defecto, ya que hay muchos a los que les gusta el lenguaje JavaScript y pueden haberse tomado mal esta decisión… no obstante yo lo veo bastante acertado, más que nada porque el código de CoffeeScript me resulta muy claro y limpio, en comparación con JavaScript y, lo mejor de todo, es que resulta incluso hasta más fácil de portar entre navegadores.

Leer más →

Egg: Huevos de Python

Tal y como Ruby tiene sus gemas, PHP su PEAR y PECL, PERL su CPAN, … pues Python, tiene huevos… vamos, extensiones a las que llama egg.

Cuando un desarrollador realiza un desarrollo que quiere compartir con el mundo, normalmente, lo empaqueta de alguna forma y lo sube a Internet de alguna forma. A día de hoy, es muy común ver mucho código subido a sitios como PHPClasses, PEAR, RubyGems, Cheese Shop, SourceForge, GitHub, BitBucket, etc.

Leer más →

Rails 3.1: Mejorando las Vistas

Puf, no sé ni por donde comenzar, han sido tantas cosas las que he visto en el cambio de la versión de Rails 3.0 a esta nueva liberación… pero no solo por las mejoras que conlleva o tiene esta nueva liberación, sino más bien por esa cantidad de elementos que se anexan y que no conocía… ya me vale :-P

Leer más →

Django: Web muy fácil y muy sencilla

En estos días he estado más volcado en Python y Django. Quizás sea por acercar un poco más y mejor a lo que hace gente como Demoware, o quizás sea por puro vicio… ya eso lo dejo a opinión popular :-P

Leer más →

Adiós a Dennis Ritchie

¿Qué podemos decir?, en poco tiempo, hemos perdido a dos figuras bastante importantes dentro del mundo de la informática. Si hace unos días nos encontrábamos de lleno, sobretodo al entrar en la web de Apple, con la muerte de Steve Jobbs, ahora nos llega la noticia de la defunción de otro de los grandes de la informática, Dennis Ritchie.

Leer más →

La carrera de los navegadores

En este año estamos viviendo el desenfreno que han puesto dos de los grandes navegadores, en sacar cuantas más versiones mejor. En principio, la celeridad con la que Google Chrome ha ido llenando el mercado con sus versiones. Recordando que Google Chrome vió la luz (en principio solo en Windows) a mediados de 2008, ha ido a una velocidad tal que, en 3 años ha sacado nada más y nada menos que 15 versiones ya (de versionado mayor, y otras pocas de pequeños cambios).

Leer más →

Demonware: Videojuegos y Erlang

Demonware es una división de Activision y Blizzard, encargada de desarrollar la parte de cliente-servidor para que los jugadores online puedan echar sus partidas con los amigos.

Leer más →

Celluloid: Concurrencia en Ruby

Profundizando un poco en el Modelo Actor, en el que se basan lenguajes como Scala, Erlang o Reia, pero que también está disponible a través de frameworks para otros muchos lenguajes, como .NET, Java, Ruby, Python, etc.

Leer más →

Java 7, ¿qué nos trae?

Vale, lo sé, algo tarde porque salió en julio de este año… pero más vale tarde que nunca, ¿no?

El hecho, es que se ha lanzado una nueva versión de este tan afamado lenguaje. Oracle ha preparado su SDK y, según Mark Reinhold (Arquitecto Jefe de Java en Oracle), se han corregido 9494 errores, se han incluido 1966 mejoras, 9018 cambios, 4 JSRs y 147 builds hasta llegar a esta versión, que ha tardado unos 4 años en ver la luz.

Las mejoras que implementa Java 7 son las siguientes.

Leer más →

Grafos (I): Fundamentos Básicos

Comenzamos el curso de nuevo. Ya hace unos nueve años que conozco lo que son las estructuras de datos avanzadas para la programación, pero no obstante, qué le vamos a hacer, hay que sacarse los estudios y me toca profundizar un poco en este tipo de datos. He pensado que, para hacer más llevadero el estudio, voy a comenzar a publicar aquí mis apuntes, así, además de tenerlos siempre disponibles, los comparto.

Leer más →

¿Eres adicto al trabajo?

El término workaholic (o adicto al trabajo, o trabajólico) viene a reseñar una enfermedad que comienzan a sufrir, cada vez más y en mayor medida, los trabajadores de la profesión informática (aunque es extensible a la mayoría de trabajadores de oficina).

En mi caso, puedo decir que desde 2004 he sido bastante workaholic (ya nos lo llamó a mi y a unos compañeros una chica irlandesa sobre el año 2005), y al final, con el hecho de formar familia, he acabado dándome cuenta de que, ciertamente, si lo que estás haciendo no lo consigues acabar en ese mismo día… mañana habrá más tiempo. ¿Corre prisa?, quizás habría que haber invertido previamente más tiempo, dinero, esfuerzo, dedicación… porque si era importante, lo sería entonces también, ¿no? Al final, todo se reduce en más planificación y anticipación a los hechos.

Leer más →

Triángulo del éxito o del fracaso

Hace unos días, rondando una librería con mi mujer, topé con un libro que me llamó mucho la atención, por su título directo y su color amarillo chillón de la portada. El libro: Pensar es gratis; parece como un desafío en sí, desde el propio título. Leyendo un poco por encima me convencí de que podía ser un buen estímulo para andar siempre en el buen camino.

Tras casi la mitad de lectura, en un solo día, puedo decir que, bueno, hay de todo un poco, Lorente da unas buenas clases de experiencia en algo que ha visto y vivido tanto como es la vida, y deja sus conclusiones, acerca de situaciones vividas que, ante los ojos de algunos pueden ser irrelevantes, y ante otros ojos, pueden ser la respuesta a muchas dudas que se planteaban. En mi caso, después de otras lecturas, encontré algunas ideas muy buenas, y otras, pues lo normal.

Leer más →

Riak: Base de Datos sin SPOF

Dando una vuelta por Internet, buscando información sobre base de datos NoSQL, topé con una (u otra) hecha en Erlang/OTP, al igual que CouchDB, pero que se basa en las mismas directrices para lo que fue desarrollado Erlang/OTP. Esta base de datos es Riak.

Leer más →

Prácticas: Código y Memoria del Tetris

Lo prometido es deuda, por lo que, aquí está la práctica completa, código y memoria, de la asignatura de Programación Orientada a Objetos ofrecida por la UNED. La práctica corresponde al curso 2010/2011, y consta de la creación de un Tetris.

Leer más →

Erlang, ¿realmente lo entienden?

Después de leer varios artículos sobre Erlang, algunos defendiéndolo y otros criticándolo, me doy cuenta de que, realmente, no todo el mundo entiende lo que es y significa este lenguaje. En sí, no es el lenguaje, sino la metodología que hay detrás la que está moviendo el hecho de que los lenguajes funcionales sean como son y sirvan, de la forma correcta, a los propósitos para los que fueron creados.

Leer más →

Recursos humanos con garantía

Las garantías que existen hoy en día de que un aspirante, en una entrevista de trabajo, tiene unos conocimientos concretos, es a través de títulos y certificaciones. La entidad que emite estos títulos y estas certificaciones influye también, ya que el nivel de conocimientos y el nivel de exigencia al entregar las certificaciones o los títulos conlleva el nivel de conocimiento y experiencia de los aspirantes.

No obstante, hay personas que no pueden permitirse esas certificaciones o no han podido obtener ningún título concreto y, sin embargo, podrían tener el nivel de experiencia y conocimientos requeridos, es el ejemplo de los autodidactas. ¿Cómo podemos evaluar a unos y a otros en igualdad de condiciones?, ¿cuál es el más adecuado para el puesto?

Leer más →

FSM: Máquina de Estados en Erlang

FSM o Finite State Machine, lo que podríamos traducir como máquina de estados finitos, es una de las potentes herramientas que nos proporciona OTP para el desarrollo de aplicaciones y soluciones.

Las máquinas de estados finitos se pueden emplear para definir los elementos con los que debe de interactuar una aplicación, y que puede darse el caso de iniciar su existencia (por llamarlo de alguna forma) en un estado definido, y mediante una sucesión ordenada o específica de eventos, ir realizando las transiciones específicas, hasta su finalización.

Leer más →

PHP 5.4: ya queda menos

Hoy me ha llegado una noticia sobre la liberación de las alpha de PHP 5.4 y, buscando en Internet y en la propia página de PHP, veo que ya se tiene un plan para lanzar esta nueva versión de PHP.

Como cuando hablé sobre la liberación de PHP 5.3, esta nueva versión de PHP se va acercando un poco más al ideal de Programación Orientada a Objetos que ya se tiene en otros lenguajes como Python, Ruby, Java, C#, etc.

En esta nueva entrega, como en otras, hay cambios o mejoras sobre algunos elementos, cosas que se agregan al lenguaje y a la biblioteca de funciones (y objetos) y cosas que definitivamente se eliminan.

Leer más →

Elixir, Reia, Efene, LFE: Lenguajes sobre Erlang/OTP

Llevo un tiempo interesado en los analizadores léxicos y sintácticos para poder crear ficheros de configuración más amigables o sistemas de interfaces de usuario basados en consola que puedan emplear un formato libre de construcción de instrucciones (algo más complejo que el típico comando y argumentos). Eso sumado a mi afición por Erlang dio como resultado el encontrar: leex y yecc; un analizador léxico y sintáctico respectivamente.

Estas búsquedas, igualmente, dieron con una serie de lenguajes nuevos, que han sido desarrollados usando estos analizadores, sobre Erlang, por lo que aprovechan sus ventajas, y salvan algunos de los inconvenientes que tienen algunas personas al ver Erlang por primera vez, con respecto a la sintaxis del lenguaje y la asignación única de variables.

Leer más →

Perl::Critic: Un crítico para tu código en Perl

Echando un vistazo por Internet, topé con esta curiosa página, que tiene como misión criticar el código que hayas escrito en Perl, a través de las buenas prácticas escritas en el libro Perl Best Practices, de Damian Conway.

En la web se puede subir cualquier fichero, código en Perl, y el sistema internamente analiza el código conforme a las reglas específicas de un buen programador de Perl. Tiene cinco niveles de gravedad: gentle (gentil), stern (severo), harsh (duro), cruel y brutal.

Leer más →

Buenas Prácticas en Perl

Repasando un poco la bibliografía básica para el lenguaje Perl, topé con este libro, que tienen muchos programadores como base para la escritura de código en este lenguaje. El libro tiene una extensión considerable, pero se hace bastante ameno. Insta a escribir el código de una forma ordenada y que se refactorice todo lo que huele para mejorar el mantenimiento del mismo.

Leer más →

Otro Modelo de Retribución, ¿mejor o peor?

Hace tiempo que llevo pensando que quizás, la retribución de un programador por horas, sea tirar el dinero. Esto no quiere decir que sea algo bueno o malo, ya que hay programadores de todo tipo, de los que cada hora que se les paga es muy invertida de forma muy provechosa para la empresa, y otros que es todo lo contrario.

Leer más →

Opa: El lenguaje de la Nube

Tal y como reza su web The Cloud Language (el lenguaje de la nube), este lenguaje sale como una solución a la programación de sitios web cumpliendo con unas necesidades concretas. La empresa MLState ha puesto como su bandera a este lenguaje, sobre el que está orientando toda su actividad comercial.

Leer más →

¡Hacking ético liberado!

Hoy leo, del propio autor, Carlos Tori, una noticia en la lista de NNL Newsletter sobre Seguridad y Redes, en la que dice, literalmente:

Estimados, he decidido liberar la obra para que los interesados puedan disfrutarla de modo libre y distribuirla.

http://www.hackingetico.com

Espero que la disfruten, saludos.

Leer más →

Afinidad y Perfiles

Leyendo, siempre me encuentro con cosas que me hacen pensar, les doy vueltas e intento plasmarlas de la forma más correcta posible. Hoy voy a plantear algo que me pareció muy importante a la hora de realizar contrataciones: afinidad y perfiles.

Cuando se contrata a una persona, en principio, hay que pensar en el entorno donde se va a ubicar. No solo son sus aptitudes profesionales, que esas son muy importantes, sino también sus actitudes, ideologías, cultura, todo aquello que conforma a su persona. Esto también es importante porque puede decidir el nivel de trabajo en equipo que podemos llegar a alcanzar.

Leer más →

Vulnerabilidades y Exploits

A petición de los que participaron en la encuesta, escribiré algo sobre seguridad, hacking y cracking, que es un tema que tenía algo dejado y olvidado.

En principio, para los más neófitos del tema, y que no tengan ni la más remota idea de cómo lo hacen los hackers (y en peor caso los crackers), para entrar en un sistema remoto sin que nadie se percate de ello, vamos a dar alguna que otra luz sobre el asunto.

Leer más →

La importancia de los planes

Tener un plan, ya se llame roadmap, planning u objetivos, es algo muy importante, de cara al negocio propio de una empresa. Una empresa, como bien saben muchas personas que desarrollan planes de negocio, tiene, entre sus objetivos, definir a qué se va a dedicar la empresa, sus clientes potenciales (o reales si ya los tiene), sus proveedores, su marco social, cultural… etc, etc.

Esta información, no solo constituye un modelo formal que define a la empresa, sino la mentalidad propia de la empresa a la hora de tomar decisiones, que la hagan acercarse aún más a sus objetivos. Por ello, un plan es importante, nos hace centrarnos en un objetivo concreto, conocido y alcanzable mediante una serie de pasos. Esos pasos se pueden complicar generando otros menores que necesiten ser abarcados antes de proseguir, pero el objetivo, en ese momento sigue siendo el mismo.

Leer más →

ChicagoBoss: Web y Erlang cada vez más cerca

Hace un tiempo, Juanse, un compañero de trabajo, me envió un enlace de un framework desarrollado por Evan Miller que se llama ChicagoBoss. Este framework ha sido concebido con Ruby on Rails en mente, no es de extrañar cuando a lo largo de toda la documentación, se hacen referencias a cosas de Ruby on Rails, y las similitudes son tan extraordinariamente grandes, para ser dos lenguajes bastante diferentes.

Leer más →

¡Libros para todos!

Hará unos días, mi amigo Dani, me envió el enlace a una web repleta de material bibliográfico… en principio pensé… qué de material… a ver cuánto dura ahí porque debe ser pirata… pero dando un vistazo más en profundidad, vi que todas las obras publicadas eran de libre difusión, con lo que, es una página que, espero, dure muchos años.

Leer más →

Optimismo e Ilusión

Hace tiempo un compañero de trabajo, Juanse, me recomendó un vídeo de una persona que comentaba algunos conceptos algo alocados sobre la vida. En un mensaje de un compañero de la UNED esta semana he recibido un enlace al mismo vídeo por lo que aunque al principio me echó para atrás hay comentarios muy buenos en el vídeo que merece la pena ver.

Leer más →

Prácticas curiosas: Tetris

He estado en esta semana santa haciendo una práctica del Grado en Ingeniería Informática, para la asignatura de Programación Orientada a Objetos, en la UNED.

En la práctica, y la asignatura, se hace bastante énfasis en Java. A mi Java me parece un buen lenguaje, pero no es totalmente orientado a objetos, por lo que, te permite hacer cosas que, estando bien escritas (porque funcionan) en lenguaje Java, pueden no ser, en absoluto, orientadas a objetos.

Leer más →

Xdebug: Depurar y optimizar código PHP

Hay momentos en los que vemos que la carga de una página tarda demasiado, o que el uso de un recurso, que en principio habíamos creído que era menor, sube y su tiempo de ejecución hace que nuestro servidor sufra. Trazar estos problemas a simple vista o a través de trazas no es más que complicar el código y hacer que varíe su línea de ejecución y, con ello, el rendimiento en sí del mismo, por lo que, nos hace falta una herramienta a alto nivel, que no implique cambiar el código, que nos permita realizar este tipo de comprobaciones sobre el código. Esta es Xdebug.

Leer más →

El Problema de Aprender

Después de revisar lecturas tan interesantes como el libro de Ramón Campayo, Aprende un Idioma en 7 días; Introducción a PNL de Joseph O’Connor y John Seymour; los 7 hábitos de la gente altamente eficiente de Covey, así como los libros de las reglas del management y otros de Richard Templar; en todos ellos se pone de manifiesto algo bastante interesante, que conforma los mitos y las inexactitudes de hoy en día.

Leer más →

Reuniones Eficientes

Durante años, en las empresas en las que he estado siempre ha existido el mismo problema: las reuniones se eternizan. Se habla de muchos temas misceláneos y tras horas no se tiene la información clara sobre el tema principal y motivo por el que se organizó la reunión. ¿Cómo podemos mejorar esta situación?

Leer más →

Ruby: Reescritura y yield

Durante unas pruebas en el trabajo, enseñando a mi mujer (Marga), cómo funciona Ruby con su mayor potencia, la reescritura de código y los yield, pensé: con lo que me ha costado… mejor lo guardo en el blog. Y esto es :-)

Leer más →

Inversión de Control: El Patrón de los Frameworks

Leyendo un artículo de Martin Fowler, sobre el tema Inversión de Control (en inglés), comenzando por el final, la etimología de la frase (entendido como el origen del concepto), se comenta que, en un principio (sobre los años 80) la gente se refería a una nueva forma de hacer las cosas como el Principio de Hollywood, teniendo presente la famosa frase de los cineastas: “no nos llames, nosotros te llamaremos”.

Si pensamos en las librerías, en cualquier lenguaje, ya sean módulos, paquetes u objetos, siempre alcanzamos una funcionalidad encapsulada dentro de una forma específica a la que se la puede llamar para realizar una acción. Pero esto cambia radicalmente en los frameworks, u entornos de desarrollo, ya que estos entornos, normalmente, realizan un cierto trabajo, y te permiten extender esa funcionalidad base, con ciertas reglas, a través de código que se escribe.

Leer más →

Bundler: Despliega fácilmente Rails

Después de haber dado una vuelta por la versión estable de rails, he reparado en que, por defecto, se instala bundler y un fichero llamado Gemfile en la raiz de cada proyecto rails que se genera nuevo.

La verdad es que, en el momento que vi el fichero de Gemfile, queda clara la misión de dicho fichero, ya que viene con una colección básica de gemas que se suelen instalar de forma base cuando se trabaja con rails (out of the box) y unos comentarios de gemas que aconsejan para ciertos usos cotidianos (opcionales).

Leer más →

Rework: Trabaja de forma Eficiente

Dando una vuelta por el sitio web de Ruby on Rails, he topado con la página de 37 signals, donde se podía ver la portada de un libro que han escrito y que se titula Rework.

Jason Fried; Crown Business 2010
Leer más →

SpiderMonkey: Extendiendo PHP

Hay muchas veces que nos encontramos con el problema de que queremos extender la funcionalidad de nuestro programa por extensiones, plugins, addons o como los queramos llamar. Estas extensiones tienen el problema de que pueden afectar al funcionamiento del resto del programa si lo ejecutamos directamente desde el core del programa que estemos haciendo, quedando el mismo en una situación inestable o nada funcional.

Leer más →

Apache: Módulo Status Server

El otro día me acerqué a ver qué hacía un compañero de trabajo (Fermín), ya que estábamos teniendo algún que otro problema con los servidores web, y veo que en su pantalla tiene una ventana abierta con los procesos internos que está gestionando Apache, así como información de memoria, el uso de los hilos disponibles, etc.

Le pregunté inmediatamente qué era esa pantalla, ya que me impresionó de sobremanera que una pantalla así pudiese estar disponible para los servidores web (hay mucho que indagar y descubrir aún en Apache y otros grandes servidores ;-).

Leer más →

¡Debian Squeeze 6.0 liberada!

Hace aproximadamente una semana se liberó la nueva versión de una de las distribuciones de GNU/Linux más usadas y respetadas del sector: Debian 6.0 Squeeze.

La nueva versión viene con un instalador mejorado, la instalación gráfica recuerda a las primeras instalaciones de RedHat, tiene un buen acabado y es bastante rápida, además de configurable. Destacar que esta versión está disponible en soporte Blu-Ray (además de DVD y CD-ROM, como siempre), y USB.

Leer más →

FTS (I): Búsqueda de Texto Completo en PostgreSQL

Al final me dió por actualizar los PostgreSQL a la nueva versión 9.0, junto con el pgadmin3, y al entrar a la aplicación (versión 1.12.1) me encuentro que hay unos cuatro iconos nuevos: Configuraciones FTS, Diccionarios FTS, Analizadores FTS y Plantillas FTS. ¿y qué es todo esto?

Leer más →

Procesos en GNU/Linux

Me he dado cuenta de que, hace bastante tiempo que aprendí cómo se gestionan (sobre todo desde la consola) la creación, parada, paso a segundo plano y cambio de prioridad de los procesos de los sistemas tipo Unix, pero, que es algo no tan trivial para la gente que comienza a usar este tipo de entornos, y sobretodo los que vienen de sistemas con Windows.

Por ello, voy a explicar lo que son los procesos de este tipo de sistemas operativos (sobre todo orientándome en GNU/Linux).

Leer más →

Carta de Solicitud de Participación en Definición de Proyectos

En estos últimos días, hablando con colegas del tema de realizar proyectos/productos en los que pudiésemos tener mayor visibilidad, mayor participación, ya que somos la mano de obra que se encarga de su realización, llegamos a la redacción de esta carta:

Leer más →

¿Cómo funciona el sistema web?

Hace ya tiempo escribí una entrada parecida basándome en el sistema de correo, hoy el tema que nos ocupa es la web. El sistema web es el medio más usado por todos los usuarios de Internet, constituyéndose como el sistema asociado por defecto a la idea preconcebida que se tiene sobre Internet: páginas web.

Leer más →

Banco de Pruebas (I): Velocidad

Hace tiempo hice algo parecido con los lenguajes de programación que entonces conocía, probando aquellos que eran de scripting, compilados y probando sobretodo, lo que tardan en levantar y hacer una operación tan simple como enumerar 100.000 números sacando por pantalla el número con un elevado a 2 de la posición en el que sale la impresión. Por ejemplo:

Leer más →

Lua: el lenguaje de los videojuegos

Echando un vistazo a los lenguajes de programación, me llamó la atención un lenguaje que había visto desde hace tiempo y al que cada vez se le está dando más protagonismo: el lenguaje Lua.

Hay muchos lenguajes extensibles que se emplean para poder desarrollar addons, plugins, de modo que cualquier desarrollo se pueda aprovechar de las ventajas de tener un lenguaje liviano y potente para su extensión, sin necesidad de tocar, ni conocer, el código fuente con el que se realizó.

Leer más →

Shell In A Box: Administración Remota en HTTP

La mayoría de los sitemas de tipo Unix (GNU/Linux, BSD, Darwin, Solaris, …) tienen sistema de acceso vía consola a través de herramientas como telnet o SSH.

Estos elementos de conexión usan unos puertos específicos para la conexión, pero el primero no es nada seguro (todo se transmite en plano, tal y como se ve en pantalla, a través de la red) y el segundo requiere de la apertura de un puerto, que en muchas redes está filtrado o es inaccesible.

Leer más →

Erlang Develop: Apoyo al desarrollo en Erlang

Llevo algún tiempo trabajando con Erlang/OTP y con sus facilidades a la hora de realizar prácticamente cualquier cosa. En lo que respecta al desarrollo de servicios concurrentes, de alta disponibilidad y sistemas críticos, es ideal.

Lo único que ha sido una piedra en el camino, es la curva de aprendizaje y la cantidad de código a modo de plantilla que hace falta para poder programar de forma rápida.

Por todo esto, decidí hacer un sistema de scripts (para Mac OS X y GNU/Linux, en principio, aunque en sistemas Solaris, HPUX, AIX, BSD, y demás sabores de Unix pueda funcionar sin cambios, e incluso en Windows a través de Cygwin), que faciliten la creación de proyectos y módulos de tipo OTP dentro del proyecto que se quiera desarrollar.

Leer más →

XSLT (II): Descubriendo XPath

Hace unos días escribí un artículo sobre XSLT a modo de introducción sobre esta tecnología. El artículo era muy simple, ya que solo pretendía mostrarse como introducción y mostrar lo que, en sí, el sistema XSLT puede llegar a hacer.

Ahora, vamos a completar un poco más esa visión adentrándonos en el uso de XPath.

Leer más →

ETL: Revisando el Software

Hace ya más de un año que escribí una entrada sobre ETL, donde comentaba los principios que lo fundan y algún que otro software disponible para realizar ETL. Revisando la entrada, me he dado cuenta de que el software que entonces encontré, ha cambiado bastante, incluso uno de ellos ha desaparecido como tal.

Leer más →

XSLT (I): Hojas de Estilos para Transformación

Hace cuatro años que comencé a utilizar esta tecnología para el desarrollo web. Al principio como una forma de realizar una vista aislada del código base de la aplicación web, después como un metalenguaje más simple que el HTML y más enfocado a la presentación de formularios y datos específicos (semántica) en lugar de presentación.

Por último, hace poco, lo he visto muy útil para crear metalenguajes que simplifiquen cosas como VoiceXML. Este sistema y/o lenguaje que se basa en el uso de etiquetas XML, así como el uso de plugins a través de la etiqueta object (al igual que en HTML) y ECMAScript (o JavaScript) para agregar aún más dinamismo (y complejidad), supuso un reto.

El trabajo de XSLT, en todos estos escenarios fue la confección de un lenguaje intermedio (un metalenguaje) que se pudiese traducir de forma inmediata al lenguaje destinatario o esperado por el navegador o cliente que lo solicitara.

Leer más →

Propiedad del Código

Cuando comencé a leer libros sobre Extreme Programming, me llamó la atención una de las propiedades de esta metodología de desarrollo, que era la propiedad del código.

Por mi parte he sido siempre muy comunista con respecto al código, no tengo el menor reparo en mirar, ampliar y corregir código de otras personas y dejo que los demás vean, opinen y corrijan y/o agreguen cosas a mis códigos… es la mentalidad del software libre.

Pero en las empresas ocurre lo contrario. Es muy normal, yo diría que incluso enfermizo, llegar a ver cómo cuando entras en una empresa en la que hay más de tres programadores, cómo cuando algo falla, cuando hay que hacer una nueva mejora, ampliación, adaptación, siempre dice uno en voz alta: ese código es de fulanito; indicando que ni lo va a ver, ni lo piensa modificar.

Leer más →

Permisos en GNU/Linux

Nota: Realmente, es la declaración de permisos en sistemas Unix, BSD, Solaris, GNU/Linux y derviados, pero pongo el título principal como GNU/Linux, porque realmente es el único entorno en el que doy fe de que todo lo que hay escrito en este artículo funciona al 100%.

El sistema GNU/Linux, al igual que su inspiración Minix, y la raíz de estos sistemas, Unix, se basan en ficheros. Todo es un fichero. Por ello, la seguridad de acceso a este tipo de información es muy importante.

Leer más →

Patrones de Análisis

Una de las personas que más ha aportado al mundo del desarrollo de software es, sin duda, Martin Fowler.

Analysis Patterns
Martin Fowler; Addison-Wesley Professional 1996
Leer más →

Resolviendo Shikaku

Esta es una práctica que realicé (y comenté) en diciembre de 2008 para la asignatura de Programación III de la UNED.

La práctica se basaba en realizar un sistema para resolver tableros de shikaku, mediante el algoritmo de vuelta atrás. Mi solución es óptima pero no del todo correcta desde un punto de vista académico, ya que el uso del algoritmo (de backtracking) es menos usado de lo que debería.

Leer más →

Clojure: Más sobre Concurrencia

El término closure (clojure en francés y cláusula en castellano) se emplea en informática (según la wikipedia) como: una función que es evaluada en un entorno conteniendo una o más variables dependientes de otro entorno.; o dicho de otra forma, lo que se conoce como un código evaluado, es decir, procesado y/o compilado en caliente o tiempo de ejecución.

¿Por qué una introducción acerca de closure?, pues porque uno de los lenguajes que comienza a ser muy usado, es precisamente este: clojure.

Leer más →

Calidad Interna

El tema de la calidad ha llenado páginas y páginas de la literatura informática en todos los idiomas. Es tal la necesidad de la búsqueda de la calidad, que hay estudios, técnicas y departamentos dentro de empresas e incluso empresas dedicados a establecer parámetros de calidad a los productos y proyectos que se realizan en las empresas de desarrollo de software.

Dentro del tema de la calidad, visto como un amplio abanico de elementos que la conforman, nos topamos con uno bastante confuso y complejo al principio: la calidad interna.

Leer más →

Deuda técnica

Mi amigo Guillermo me remitió un email hace poco en el que detallaba un concepto que ya conocía hace tiempo, pero que no había visto tan bien explicado hasta el momento (sí, tenía que haber leído antes a Cunningham), el tema era: La deuda técnica en scrum, ¿lo revisamos?

Leer más →

Lógica de negocio en la base de datos

Desde mi punto de vista, esto puede suponer una locura total y una falta de forma en lo que respecta al uso de un almacén de datos visto como tal. No obstante, hay sistemas de base de datos que implementan una capa de negocio bastante interesante, donde otros sistemas solo dan una opción de scripting que da algo de miedo.

En postgresql, por ejemplo, el sistema de lenguajes que se pueden usar e implementar para la creación de funciones: PL/pgSQL, PL/Tcl, PL/Python, PL/Perl, PL/PHP, PL/Java, PL/Ruby, …; todos ellos se pueden ver en la página de documentación de PostgreSQL.

Leer más →

SIP desmitificado

Desde que comencé a trabajar en esto de la informática, hace ya seis años, me he dedicado a entornos que tienen que ver con la VoIP (Voz sobre IP) tocando los protocolos típicos de VoIP como son: SIP, H.323, MGCP (o megaco) y IAX; pero también con interconexiones de tipo RDSI (o ISDN en inglés) a través de BRI, o de E1 a través de PRI.

Leer más →

NoSQL: sistemas de almacenamiento en lugar de bases de datos

Hace poco me topé con una definición que me causó un poco de desconcierto, no llegaba a entender bien el porqué había muchas empresas y profesionales que comenzaban a usar el NoSQL.

Leyendo el blog de dos ideas con referencia a un artículo que publicaron llamado NoSQL: el movimiento en contra de las bases de datos, se comenta una conferencia en la que grandes profesionales del sector de los sistemas, con necesidades de escalabilidad y alta capacidad de almacenaje, mencionaban sus soluciones NoSQL.

Leer más →

Pretty URLs

Muchas veces hemos visto las URL de algunos sitios que tienen, tras una interrogación de cierre (?) una hilera de valores con iguales (=) separados por ampersand (&). No obstante, hay otros muchos sitios que sus URLs, más específicamente sus URIs, son palabras en minúscula, con algunos guiones y números escasos, separados por barras inclinadas (/). Este último método es conocido con pretty urls.

Tener este tipo de URLs, o URIs en nuestro dominio, se puede hacer mediante la creación de directorios y especificando los ficheros dentro de los mismos que tengan los nombres (sin extensión) que queremos que se visualicen en la barra del navegador… pero no es nada útil y es complejo, sobre todo cuando se usan entornos como WordPress o similares, donde el contenido de la base de datos dicta lo que aparece en la página, y es totalmente dinámico.

Leer más →

Modelo de Dominio: La importancia de los nombres

Actualizado: se ha corregido el concepto, ya que se confundía con la definición de glosario, cuando se quería detallar que era algo más que un glosario.

En todas las empresas en las que he trabajado, siempre surge el problema de que, cuando sale algo nuevo o se crea un cierto programa, un sistema o una forma de trabajo, si la persona que la ha motivado no sabe su nombre: se la inventa.

Leer más →

El futuro de la web: HTML 5

Con este título he encontrado una presentación de Derek Bender, gracias a un artículo en la web del IES Gran Capitán de Córdoba (España), en el que se presentan datos significativos de cómo será la programación web a partir del año que viene, que es cuando ya todos los navegadores más importantes, tendrán soporte para HMTL 5.

No obstante, los equipos antiguos que aún manejan navegadores antiguos, no podrán visualizar estas mejoras, pero al menos, ya se habrá iniciado una mejor forma de realizar páginas web.

En principio, Derek, nos introduce en la historia de esta nueva liberación. Los grupos de trabajo principales: Apple, Mozilla y Opera (y muchos otros menos conocidos); se reunen para trabajar en una nueva liberación de este lenguaje de etiquetas basado en el uso cotidiano que se le da en estos momentos.

Leer más →

Gestión Documental en Blog

Hace tiempo, en reuniones mantenidas por todo el departamento técnico, sobre todo la parte de I+D, de la empresa en la que trabajo, mi compañero Juan Sebastián me comentó: podemos hacer la documentación en un blog.

Leer más →

Kanban y Scrum

En este blog he escrito bastante sobre estos temas, y ahora, después de haber terminado de leer un gran libro, escrito sobre uno de los autores que más ha aportado a estas metodologías con su trabajo incansable, hablo de Henri Kniberg, me complace poder aconsejar la lectura de este libro, que se puede descargar libremente.

Leer más →

La duplicación en Ruby

Durante el día de hoy, hemos estado dando vueltas, tanto Daniel como yo, para ver si encontrábamos alguna forma de solucionar este problema que se nos había cruzado:

Leer más →

¡Shoes vive!

Hace tiempo escribí una entrada sobre este entorno de programación para GUI de Ruby, desde ahí a unos meses después, el creador del entorno, denominado why en la red, cerró todo su material en la red, eliminó su twitter, sus webs y dominios, eliminó sus códigos de github, etc.

Leer más →

Haciendo buen software

Hoy he reparado en una web (que he agregado a mis enlaces) que trata sobre temas de la programación y, en definitiva, se centra en hacer buen software.

Es algo complejo determinar qué es buen software y qué no lo es, por lo que estos siete consejos pueden ayudar a detectar lo que se puede considerar buen software y lo que no. En definitiva y después de muchos años desarrollando, así como leyendo a gente que al igual que yo lleva también muchos años en esto, la clave para hacer buen software es programar lo único necesario para cumplir el objetivo marcado, ni una línea más. Y como dice Alberto: no hay problemas difíciles, solo soluciones difíciles.

Leer más →

Programación para Administradores de Sistemas

Cuando estuve estudiando el título de Administración de Sistemas Informáticos es cuando me acerqué a los lenguajes de scripting (por el año 2002), y fue cuando comencé a aprender lenguajes como PHP, Python, Ruby y Perl.

El lenguaje Perl me llamó la atención, sobre el resto, porque había sido un lenguaje creado por Larry Wall, un administrador de sistemas… ¡en un mes!, supongo que lo que creó fue la parte más básica del sistema, pero al mismo tiempo la más importante, ya que, como él mismo comenta, Perl fue la simplificación del uso de herramientas como awk, sed, shell script y C.

Leer más →

Conferencia: Metodologías Ágiles en la Práctica

Ayer dicté la conferencia con el nombre del título de este post en la Universidad de Córdoba ante unos 40 alumnos y algunos profesores de la misma universidad.

Las metodologías ágiles no es un tema muy de moda en los ambientes académicos y universitarios, puesto que el desarrollo de software no es algo que se haga de forma práctica en esos entornos (se realizan más actividades de tipo docente e investigación), por lo que el tema les sonó a todos nuevo y fresco.

Leer más →

Motivación, Estudios y Profesionalidad

Ayer, además de dar la conferencia que publiqué (en el post anterior), asistí a una conferencia denominada Y tras la Facultad ¿Ya soy Profesional?, impartida por Oshcar Vidal (no, no me he equivocado al escribirlo, la h es un valor añadido para crear branding).

En principio, supongo que por prejuicios (positivos) me hice espectativa de que la ponencia fuese como ir a un concierto, asistir a un evento ameno, entretenido y que se comentarían aspectos a tener en cuenta cuando se terminan estudios tales como son los facultativos o universitarios.

Leer más →

Scrum Casero

Vale, vale, lo sé, es un poco freaky, pero la verdad es que ayuda bastante en varios aspectos:

  • Por un lado, ayuda a interiorizar el sistema, usándolo fuera del contexto habitual, dándole un matiz más desenfadado a las tareas del hogar,
  • por otro lado, las tareas del hogar se hacen más dinámicas y divertidas… ¡los niños hacen lo que sea por mover ticket!
Leer más →

Programando en Ruby

Llevo tiempo escribiendo sobre este lenguaje de programación, como una joya redescubierta, ahora me gustaría centrarme en un libro que leí hace tiempo, pero que me resultó muy útil para comprender y adentrarme mejor en este lenguaje.

Programming Ruby
; Pragmatic Bookshelf 2008
Leer más →

Joe Armstrong y Erlang

Llevo bastante tiempo hablando de Erlang, y nunca había comentado la mejor fuente que había encontrado para descubrir el lenguaje y adentrarse en la programación concurrente de la mano de uno de sus creadores: Joe Armstrong. La fuente, referida como tal, es el libro que escribió Joe Armstrong por la editorial Pragmatic Programmers.

Leer más →

Extreme Programming Explained

Este es uno de esos libros pioneros que hacen que nos planteemos muchas de las cosas que hacemos y, sobretodo, el cómo lo hacemos.

Extreme Programming Explained
Kent Beck; Addison-Wesley Professional 1999
Leer más →

Scrum y XP desde las trincheras

Un año y medio después de haber comenzado con las tecnologías y metdologías ágiles, no tengo más que recomendar el libro que me ayudó a comenzar y que ha sido una guía durante todo este tiempo.

Scrum and XP from the Trenches
Henrik Kniberg; Lulu.com 2007
Leer más →

El futuro de MySQL

Desde que MySQL fuese vendida a Sun Microsystems, ha habido bastante gente que ha visto con otros ojos el proyecto, mostrándose algo escépticos a que MySQL pudiera seguir siendo lo que venía siendo, una base de datos libre sin mayores pretensiones. Pero siendo Sun Microsystems una empresa que ha realizado mucho código para la comunidad, pero también ha guardado mucho otro de forma recelosa, teníamos nuestras dudas.

El problema real vino cuando Sun Microsystems fue adquirida por Oracle. Esta adquisición puso a MySQL en la duda de si seguiría siendo lo que es, o pasaría a ser otro producto más recortado en su versión comunitaria y ofrecido por un precio medio/alto a empresas que se lo puedan permitir. Como si de una versión light de Oracle DB se tratase.

Leer más →

La importancia de la actualización

Desde hace años, me vengo encontrando con sistemas instalados que hay que mantener o sobre los que hay que desarrollar, que son instalaciones de hace 5 ó 7 años. Estas instalaciones suelen ser máquinas con RedHat 9, RedHat EL 2, 3 ó 4, o Fedora Core 2 ó 3. En esos años RedHat estaba muy metido en el entorno empresarial y Fedora Core fue una respuesta libre (totalmente) a la desaparición de RedHat Desktop.

El caso es que la empresa y la comunidad que soportan ambas distribuciones (incluso distros comos OpenSuSE o SuSE, Mandriva y otras similares) les pasa que desarrollan versiones de forma bastante rápida (una o dos al año), con lo que, pasando 5 años, pueden haber salido unas 10 versiones posteriores del producto.

Leer más →

WordPress y los ataques DoS

De aquí a un tiempo he visto algunos scripts bastante simples que, sorprendentemente, hacen bastante daño a malas configuraciones de sitios con wordpress. El sistema de DoS (Denial of Service, Denegación de Servicio) que se usa para el ataque es de tipo flood (inundación) enviando un número muy alto de peticiones. Por ejemplo: Under Security.

Leer más →

Spam por Relay

A la mayoría no solo le sonará este artículo, sino que lo habrá experimentado en propias carnes. Esto se detecta fácilmente, cuando comienzan a llevar emails que vienen con el remitente MAILER-DAEMON. En este momento puedes planteartes dos posibles escenarios:

  • han entrado en tu servidor y han comenzado a enviar un montón de emails desde tu cuenta de usuario, o
  • alguien ha comenzado a enviar un montón de emails a servidores mal configurados, con tu dirección de email como remitente, para hacerte llegar todos esos mensajes.
Leer más →

Los "sabores" de Windows

Las liberaciones de Windows, de Microsoft, suelen realizarse siempre por triplicado, es decir, de cada línea interesante que saca la compañía, hay tres versiones, después es abandonada por los motivos que se verán obvios.

La triada de Microsoft consiste en sacar una versión primera, una versión más elaborada gráficamente y mejor recibida por el público en general, y una última versión que termina siendo un fiasco, que dura poco en el tiempo y en la memoria de muchos usuarios, afortunadamente para Microsoft.

Leer más →

¿Qué se busca conseguir en un desarrollo?

La respuesta rápida y obvia podría ser: que lo desarrollado cumpla con los requisitos pactados.

La realidad, muchas veces, nos demuestra que esto no su cumple, ya que, o los requisitos pactados se engordan, o nos fijamos más en que se cumpla el tiempo pactado, lo cual realmente no es un requisito, en muchos casos. Al final, parece que premia más el tiempo invertido y el dinero gastado que lo que se ha adquirido.

Leer más →

TDD, ¡libro en castellano!

Ayer leí un email de la lista de TDD en la que se anunciaba el publicación del libro TDD de Carlos Ble.

Diseño Ágil con TDD
; lulu.com 2010

  Es de agradecer que se haya publicado en castellano un libro sobre esta metodología (o técnica) de programación que es el desarrollo dirigido por pruebas (o test driven development). Casi que puedo asegurar que es el único libro escrito hasta el momento en castellano sobre este tema, que ya abordaba hace muchos años Kent Beck, en su libro Xtreme Programming Explained.

Leer más →

Los sectores del software

De siempre, se va viendo que las empresas de software se decantan por una forma de hacer las cosas, mientras que otras eligen otro camino distinto y, muy pocas, mezclan elementos de doctrinas tan establecidas y dogmáticas como son: el mundo del software libre, el mundo java o el mundo .net.

Leer más →

Comet ha muerto, ¡larga vida a websockets!

Leyendo el artículo de Joe Armstrong, sobre este mismo título, comenta que con la aparición de websockets (una nueva característica que ha aparecido en HTML5), el sistema comet y otros derivados, están abocados a la extinción.

Desde siempre, el sistema HTTP, llamado también web, ha sido un sistema cliente-servidor, donde el cliente siempre ha sido el navegador web, o cualquier herramienta que pudiese hacer una petición HTTP hacia un servidor, y el servidor, un ente pasivo, se encargaba de procesar la petición y retornar una respuesta. Nada más.

Leer más →

Ruleta Rusa en Unix

Navegando por la red he topado con un blog en el que he visto la ruleta rusa de unix.

La idea es jugar, como si de una pistola se tratase, con el comando rm -rf / (lo cual elimina TODOS los ficheros del disco duro y unidades montadas que se tengan -si son accesibles-). El comando toma un número aleatorio y prueba si es divisible por seis. Si es así… ¡bang!, estás muerto, sino, puede volver a tirar :-D

Leer más →

La Regla de los Nueves

Esto es algo que aprendí, ahora hace ya unos 5 años, cuando comencé a instalar mi primer servicio de alta disponibilidad.

En un artículo sobre el tema, la alta disponibilidad, se decía que la disponibilidad de un servicio, servido únicamente por una máquina, normalmente es de un 90%, con lo que, a lo largo de un año (365 días) el servicio se ha mantenido en funcionamiento un máximo del 90%, aproximadamente, y ha tenido un tiempo de inactividad del 10% (más o menos unos 36 días).

Leer más →

Sistemas de Mensajes Encolados (MQ)

Hace poco me he encontrado con un problema. Tengo un entramado de servidores y comunicaciones entre cada uno de ellos. Cada servidor puede notificar, ya sea vía SOAP, HTTP, XMPP o mediante cualquier otro protocolo, un evento o una información a otro servidor del entramado, con lo que cada servidor se configura de una forma específica, con una serie de nombres de dominio o IPs.

El problema viene al querer aplicar escalabilidad al proyecto. Cuando no solo hay un equipo implicado, sino que existen dos o tres, los cuales hay que configurar bajo ciertas circunstancias.

Leer más →

La Técnica Pomodoro

La técnica de pomodoro al igual que GTD (getting things done) o ZTD (zend to done), son técnicas para realizar las tareas diarias de forma ordenada y evitando distracciones.

Esta técnica debe su nombre a un reloj de cocina con forma de tomate (pomodoro), ya que, la propia técnica se basa en la medición del tiempo con un cronómetro, como los utilizados en la cocina.

Leer más →

Entrenador (Coach) de Desarrollo de Software

El término de entrenador (coach) de desarrollo de software es un papel que suele ser muy importante en el quehacer diario de una empresa que tiene desarrollos de software, ya sean internos o para clientes externos.

Leer más →

La Historia de Erlang

He encontrado un documento (en inglés) que redacta la historia de Erlang contada por su desarrollador principal, en los laboratorios de Ericsson:

Leer más →

¿Cuánto cuesta un Proyecto de Software?

La empresa en la que trabajo hace unas semanas ha comenzado a moverse para obtener una medición del coste de los desarrollos realizados internamente en el departamento. Es positivo y sirve para obtener datos de costes útiles para el desarrollador, programador y obviamente para los directivos que podrán tomar mejores decisiones basados en estos datos.

Leer más →

PHP 5.3

Llego algo tarde, cosas del verano, pero voy a comentar algunas de las mejoras que vienen incluidas en la nueva liberación de PHP, la 5.3.

Para mi, esta versión, además de corregir fallos de la anterior, aporta características que le hacen acercarse aún más a la forma de programación profesional que viene dada con otros lenguajes como Java, C#, C++, Python, Ruby…

Leer más →

Manifiesto Ágil

El manifiesto ágil fue fruto de una reunión que se mantuvo en Salt Lake City en marzo de 2001. Diecisiete críticos de los modelos de mejora del desarrollo del software basado en procesos, convocados por Kent Beck, padre del Xtreme Programming, escribieron el siguiente manifiesto:

Leer más →

Lenguajes Funcionales para el Desarrollo Web

La web concurrente, a prueba de fallos y distribuida ya va siendo más fácil de desarrollar gracias a dos iniciativas paralelas. Una de ellas es Erlyweb, el entorno desarrollado por Yariv Sadan que permite realizar de forma fácil sitios web en lenguaje Erlang. La otra es Lift, un framework de desarrollo web para otro lenguaje funcional: Scala.

Leer más →

¿Ingeniería del Software?

El creador de menéame, Ricardo Gallí, escribió hace unos días un artículo en su blog bastante interesante sobre lo que respecta a la llamada Ingeniería del Software. Ricardo sostiene que el título de “ingeniería” ha sido dado de forma errónea al desarrollo de software y, en muchos aspectos, tiene razón.

Leer más →

Kanban: El Método Toyota Aplicado al Software

Después de haber aplicado un alto porcentaje de Scrum en los proyectos de software en los que trabajo, siento curiosidad por todas las demás metodologías ágiles que existen, sobre todo, para saber si hay alguna práctica que pueda emplear que me permita optimizar algún aspecto de la actividad diaria a desarrollar.

En este aspecto, he descubierto en Kanban un interesante aliado para aspectos de la metodología que quedaban algo descolgados, y son los procesos rutinarios, o solo tener presente la continuidad de las tareas, ya que las tareas que se realizan en Kanban pueden aparecer en el backlog en cualquier momento e ir haciéndose, según su importancia y/o prioridad.

Leer más →

Planificación de Póker

Leyendo un artículo de una página de una empresa suiza (Crisp), he visto a lo que se refiere la planificación de póker. Voy a traducir gran parte del artículo para explicarlo.

Leer más →

Lo justo y lo estándar

Desde hace unos meses, he estado envuelto en algunos proyectos, en los que he intentado dar un enfoque basado en patrones y estándares, para facilitar y simplificar los problemas. Solo que, hay patrones y sistemas, o frameworks, que son algo incompatibles entre sí.

Por ejemplo, el uso de un sistema BPM, puede ser compatible con un sistema REST como Ruby on Rails, mientras se mantenga la idea de REST… en cambio, si se modifica por intentar realizar un poco interoperatibilidad entre otros sistemas, a los cuales no se les quiere cambiar mucho la forma… se convierte en un infierno.

Leer más →

Escalado de Ruby on Rails

Después de liberar el primer proyecto escrito en Ruby on Rails, cuando lo pasamos a producción, nos dimos cuenta de que el sistema funcionaba realmente lento. En algunos casos, incluso, no respondía, con lo que buscamos información por internet y vimos:

Leer más →

Shoes: Programación fácil de GUI para Ruby

Actualización: ver nueva entrada.

Cuando se realizan scripts para ciertas tareas para automatizarlas, pero que tienen que tomar datos del usuario, así como los datos que se presentan son útiles, tanto para rápida consulta, como para dar dicha información por teléfono o usarla en el código, otra interfaz, etc. surge el problema de que la consola se hace un paso como a otro mundo y resulta incómodo.

Leer más →

De Programador a Desarrollador

Cuando tenía doce años, comencé a programar en Basic, en un ZX Spectrum de 128K… en esos momentos, y los años siguientes, hacer un programa, para mi, era sentarme delante de mi ordenador, durante unas cuantas horas, incluso echando noches en vela, para al final ver el resultado… un pequeño programa de gestión de contactos, un juego de puzzle, tetris, plataformas 2D… y eso, a lo largo de los años… y de los lenguajes, pasando por Basic, C, C++, Modula–2, Pascal, Java, Perl, PHP, Python, Ruby, Erlang…

La programación se convierte, en mi vida, en mi tiempo libre y, después, en mi trabajo, en una forma de realizar programas de ideas que me surgen, de forma heróica, y sin una fuerte organización que me permita ver el resultado de mi esfuerzo, ni las horas que voy a invertir, ni si merece la pena hacerlo de una cierta forma u otra.

Leer más →

El Principio de Peter

Hace tiempo ya escribí algo relacionado con esto, en el artículo despide a tu jefe. Hoy, después de haber leído la definición del principio de Peter en la wikipedia, se le puede dar más forma, precisión y color :-P

Leer más →

¿Cómo funciona el sistema de correo?

Esta es una pregunta que no todo el mundo se formula y, realmente, no es tan simple contestar. Quizás de todos los servicios de Internet, el sistema de correo es uno de los más complicados que existe. ¿Te has preguntado alguna vez cómo funciona?

Leer más →

CASE: Escribiendo código más fácilmente

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería del Software Asistida por Ordenador), son herramientas diseñadas para dar soporte al programador a través de una interfaz intuitiva y gráfica que le permita, mediante el posicionamiento de objetos gráficos concretos, relacionados entre sí siguiendo una nomenclatura específica, desarrollar la base de un programa automáticamente.

La programación siempre ha estado respaldada por el diseño de gráficos que, de un solo vistazo, den una imagen gráfica de lo que hace un programa, como se estructuran los datos que maneja, o cómo se organiza el código que se está escribiendo. Esto se hace mediante diagramas como los de flujo de datos, organigramas, entidad/relación, jackson, OMT y UML, entre otros.

Leer más →

La liebre y la tortuga

En este cuento voy a intentar explicar lo que significa programar rápido y lo que significa programar de forma ágil. La primera forma sería la que se considera comenzar lo antes posible, para terminar lo antes posible… pero ciertamente, sin planificación, dar palos de ciego a ciertos niveles de implementación, es más lento que planificar la estrategia de desarrollo a priori. Vamos a verlo con el cuento de…

Leer más →

Reia: Ruby sobre Erlang

Al igual que en Java se pueden ejecutar lenguajes scripting tales como Ruby (JRuby), Python (Jython), Groovy… es posible hacer esto mismo en otros lenguajes, como C y Erlang.

Leer más →

MVCC: Control de Concurrencia para Múltiples Versiones de PostgreSQL

El sistema de base de datos PostgreSQL integra un sistema de control de concurrencia para múltiples versiones, en principio. Esto no es más que un sistema que se encarga de mantener copias sobre los datos de forma paralela, para acelerar el sistema de escritura de datos a disco duro, haciendo un control de concurrencia entre las distintas versiones que se van escribiendo.

Leer más →

ETL: Extracción, Transformación y Carga

Este término, ETL, se acuña a la mayoría de transformaciones de datos que deben de realizar empresas para compatibilizar sus datos con los de sus proveedores y/o clientes.

Leer más →

Pruebas Unitarias

Después de haber estado adentrándome en TDD, muy poco a poco, he visto que el primer paso para hacer más fácil esta doctrina, son las pruebas unitarias.

Las pruebas unitarias son pruebas que se realizan sobre unidades aisladas de código, generalmente objetos, para asegurar que, con unos ciertos valores de entrada, siempre se reciben los mismos valores de salida, o los valores de salida que se esperan.

Leer más →

Scrum: 7 sprints y 3 proyectos después

Mi última entrada sobre Scrum, hablaba de la implementación del gráfico Burndown, de esto hace ya casi 3 meses, aunque realmente, comenzamos la andadura en algo antes.

En principio, tengo que tener presente que he estado usando algunas otras metodologías, como la Espiral de Boehm y Metrica–3, con lo que, he podido ver y sufrir en mis propias carnes, lo que significa e implica usar una metodología ágil, las ventajas que aporta y lo fáciles que tienden a ser, realmente.

Leer más →

CouchDB: REST y Base de datos documental

Tal y como comentaba en otro artículo anterior, el sistema REST permite un acceso a los datos basado en la mezcla entre localizaciones de elementos (URL) y verbos de HTTP para indicar lo que se desea hacer con ese elemento. Eso, agregando un almacén de datos que permita albergar elementos y otras características añadidas, nos dan como resultado CouchDB.

Leer más →

Debootstrap: Probar sin ensuciar

Desde hace tiempo, llevo usando esta herramienta para generar jaulas de modo que pueda probar nuevos sistemas, servidores y/o configuraciones, sin necesidad de desconfigurar mi sistema actual.

El sistema se basa en tener una copia exacta y nueva de un sistema operativo basado en Debian GNU/Linux, que se instala en un directorio específico de nuestro árbol de directorios. El comando que genera la jaula, que tiene el nombre de debootstrap, se encarga de realizar la instalación del sistema a partir del directorio solicitado y con las fuentes solicitadas, es decir, si queremos instalar un woody, sarge, etch, lenny… o un gutsy, hardy, ibex… pues solo tenemos que indicarlo, con la URL de donde conseguir los paquetes y listo.

Leer más →

PostgreSQL: Configuración de Acceso

Esto es algo que siempre me toca buscar en Internet, puesto que es algo que hago una vez cada tantos meses, y siempre se me olvida de cómo empezar, así que, para tener la chuleta a mano, he decidido escribir esta entrada que, además de servirme ahora, seguro que me servirá en el futuro para cuando configure más servidores de este tipo.

Aquí os dejo el PDF: PostgreSQL: Instalación, Configuración y Trucos.

Leer más →

Mentalidad de Suficiencia

Citando a Kent Beck, de su libro Extreme Programming Explained:

En La Gente del Bosque y La Gente de la Montaña, el antropólogo Colin Turnbull dibuja el contraste de dos sociedades. En las montañas, los recursos eran escasos y la gente estaba siempre al borde de la hambruna. La cultura a la que evolucionaron era horrible. Las madres abandonaban a sus bebés, los entregaban a hordas de niños salvajes errantes en cuanto tenían opciones mínimas de sobrevivir. Violencia, brutalidad y traición estaban a la orden del día.

Leer más →

REST: Representational State Transfer

Después de haber usado durante unos años sistemas RPC para la compartición de la información, XML-RPC, SOAP y Elm; llego a REST, un concepto que mencionó primero un compañero de trabajo, Juanse, y después vi en profundidad en un curso de Ruby on Rails que se organizó en la empresa en la que trabajo (gracias Dani por ese curso tan completo).

Leer más →

¿Informáticos en paro?: No en el Software Libre

Hay varios sitios en Internet, como Software Libre y Cooperación, El Blog de Juantomás García y el blog de La Pastilla Roja, en donde se habla de lo mismo. En el sector del software libre NO hay paro, sino que hay déficit.

Los que nos dedicamos a las tecnologías abiertas, libres e intentamos siempre poner algo estándar y abierto sobre otras soluciones propietarias, nos damos cuenta de que, aunque en temas de software libre se está haciendo mucho, hay mucha gente que estudia certificaciones y productos de compañías propietarias, cuya implementación en cualquier empresa, es más cara que el sueldo que se le pueda pagar, durante uno o dos años, al empleado que lo mantendrá.

Leer más →

¡Debian Lenny 5.0 ya es estable!

La liberación de etch se produjo el 8 de abril de 2007, ya hace 20 meses de eso, en informática es mucho tiempo, pero sin embargo, es un tiempo de liberación muy corto, teniendo en cuenta los lapsos a los que nos tenía acostumbrados Debian.

Leer más →

Documentos en bosqueviejo.org

Después de unos días desarrollando un sitio apto para incluir mis manuales y documentos más largos, puesto que considero que el blog está bien para vivencias y experiencias, descubrimientos y “recetas”, pero, para los manuales, tutoriales y documentos, en sí, de mayor calado, es mejor tener algo un poco más orientado a la gestión documental.

Leer más →

Ruby para programadores de PHP

Mi amigo Dani me indicó una página, ya que estamos más metidos en Ruby on Rails, que nos permitiría tener un sitio de referencia y comparación con las cosas, tal y como las hacíamos en PHP, cómo hacerlas ahora en Ruby on Rails.

Leer más →

Información y Formación

En los tiempos que vivimos, donde en todos los medios y las comidillas de cada calle y esquina la palabra crisis acecha como la mayor preocupación de esta época, el paro crece desmesuradamente y, curiosamente, la informática y el sector del software libre es el único que registra aumento de contratación.

Hay un déficit real, antes y después de la crisis, de profesionales de la informática. Se piden conocimientos específicos en ciertas áreas. En estos tiempos, la más demandada, el software libre. Las empresas quieren economizar y, encontrar gente que conozca y domine software libre es una ventaja, tanto competitiva por prestar más servicios, como económica, porque el precio suele ser muy bajo o nulo.

Leer más →

Bussiness Process Management (BPM)

Según se puede ver en la definición de la wikipedia BPM es una metodología empresarial cuyo objetivo es mejorar la eficiencia a través de la gestión sistemática de los procesos de negocio.

Cuando una empresa tiene una actividad comercial, por ejemplo, basada en un almacén, con varios sistemas que requieren acceder a la base de datos para su manipulación (administrativos, atención al cliente, empleados de almacén…), cada uno con una misión específica, se deben de centralizar esa actividad de alguna forma para no caer en el problema de repetirnos a nosotros mismos (incumplir DRY) codificando una y otra vez lo mismo en varios programas distintos.

Leer más →

JavaScript y CSS no intrusivo en HTML

Cuando se pensaba en MVC, la capacidad para dividir las tareas obvias de tratamiento de datos, en lógica de negocio (el modelo), control de flujo de ejecución (el controlador) y la presentación de datos (la vista), aún quedaban en el aire muchos problemas en lo que respecta a las interaces, propiamente dichas, entre estas tres capas.

Centrándonos en la vista, existen miles de soluciones, para alejar al diseñador del código y al programador del diseño, pero aún así, cuando se habla de AJAX y desarrollos específicos… el programador tiene que tocar diseño y el diseñador preocuparse de lo que hará el código de servidor.

Leer más →

Lenguajes: Nuevas Versiones

En estos últimos días he visto los nuevos lanzamientos, o lo que se espera lanzar en varios “mundos” del desarrollo del software. Por un lado, hay varios puntos donde la interfaz pasado-futuro corre bastante peligro.

Los desarrolladores de ciertos lenguajes han creído conveniente romper con el pasado de uso de dichos lenguajes para acogerse a los progresos y prácticas más usadas actualmente. Haremos repaso.

Leer más →

SQL Server vía ODBC en Debian Etch

Casi a punto de asistir a la liberación de lenny (la versión 5.0 de Debian), seguimos viendo que con etch, aún, tenemos lo suficiente para tirar perfectamente, y sin agregar paquetes de backport.

En este caso, voy a explicar como instalar y usar SQL Server vía ODBC desde cualquier aplicación en GNU/Linux, como pueden ser programas Java, Perl, PHP, Ruby…

Leer más →

Lenguajes de Programación

Revisando los tipos de lenguajes de programación existentes, llego a esta clasificación de los mismos:

  • Lenguajes imperativos
    • Lenguajes Spaguetti
    • Lenguajes Estructurados
    • Lenguajes Modulares
    • Lenguajes Orientados a Objetos
  • Lenguajes lógicos
    • Lenguajes declarativos
    • Lenguajes funcionales

Todos estos lenguajes de programación obedecen a una necesidad y/o ideología subyacente, que motivó el desarrollo del lenguaje con la metodología y sintaxis específica. A continuación describiré algo más en detalle cada uno de los anteriores.

Leer más →

Proxy: Patrón de Diseño para Seguridad

Entre los patrones de diseño que ya comenté en otro post, quiero agregar uno que dejé pasar, y al que he retomado hace poco, tanto de forma teórica, como para implementación en algunos desarrollos. Es el patrón de diseño Proxy.

Este patrón es usado para agregar una capa de seguridad sobre un sistema ya desarrollado y que es totalmente ajeno a este aspecto. Es decir, podemos desarrollar un sistema de control de almacén en el que solo tendremos en cuenta el stock en sí del almacén y, para agregar los usuarios, permisos y demás, entonces, agregamos el la capa proxy que se encarga de asegurar el acceso solo a los usuarios que deban de poder acceder.

Leer más →

Desarrollo Web

Hace tiempo, comenté acerca del desarrollo web en plataformas como Java, PHP, Erlang, Python… en ese momento, veía la maraña en la que está tejida la red de redes, el abanico de posibilidades a la hora de desarrollar una aplicación web y comenzaban a sonar términos como CRUD, SOA, MVC, ActiveRecord, Scaffolding…

Es una verdad que cada entorno, en cada lenguaje, ha ido implementando una serie de características que facilitasen y acelerasen la creación de entornos web, de toda índole, en poco tiempo y, una vez aislada la idea base, dado un nombre e incluso un acrónimo de tres letras (como el buen Jargon file manda :-) ), se convierte en un concepto de estudio e implementación en el resto de lenguajes.

Leer más →

Lenguajes esotéricos

Otro viernes… las oficinas a medio gas y toca trabajar… me da por buscar información, ahora que aprendo más sobre Ruby y Erlang y, topo con un lenguaje llamado [COW][1]. Un lenguaje esotérico.

Leer más →

Ruby: Esa pequeña Joya

El lenguaje de programación Ruby, creado por Yukihiro Matsumoto (a.k.a. Matz), fue ideado para ser un lenguaje que simplificara las actividades diarias y necesidades de programación de su creador, al igual que Perl (la otra joya) fuera creada por Larry Wall para cubrir sus necesidades como administrador de sistemas, Matz necesitaba un lenguaje que fuese igual o más potente que Perl, y con igual o mejor implementación de orientación a objetos que Python.

En su trabajo, Matz, usaba Perl, mientras desarrollaba Ruby en paralelo, hasta que fue lo suficientemente bueno como para reemplazarlo. El nombre de Ruby, por tanto, está motivado por la similitud, en simbología, con Perl. La primera liberación fue en 1995.

Leer más →

Sistemas de Control de Versiones: ¿Centralizados o Distribuidos?

Desde hace tiempo, la tendencia de uso de los sistemas de control de versiones, ha sido el uso centralizado mediante sistemas tan populares como CVS o Subversion. Ahora, desde que muchos grandes proyectos optaran por los sistemas de control de versiones distribuidos, cada vez hay más gente que se va cambiando a ellos y, sobre todo, proyectos grandes.

¿Será que es mejor el enfoque distribuido al centralizado?

Leer más →

Desarrollo Orientado a Pruebas (TDD)

El desarrollo orientado a pruebas (TDD, test driven development) es una forma de desarrollar basándose en que un cierto algoritmo responda de una forma específica a unos datos específicos. Para explicar mejor esto, voy a explicar primero el enfoque tradicional y luego expongo las mejoras que introduce esta forma.

Leer más →

Bases de Datos Relacionales: SQLite, MySQL y PostgreSQL

Sobre los SGBD, cabe destacar, entre los que son libres, estos tres motores, de los cuales, dos de ellos son sistemas servidores y gestores de base de datos relacionales (MySQL y PostgreSQL) y otro es tan solo un motor embebido para aplicaciones monousuario o de muy baja carga (SQLite).

Los sistemas libres han hecho gala del uso de LAMP (Linux, Apache, MySQL y PHP) para el desarrollo rápido de webs. Estos sistemas son fáciles, rápidos y cómodos para usuarios nóveles, dan mucho control sobre el desarrollo y permiten, gracias a la cantidad de proyectos ya desarrollados, tener a disposición Foros, Bitácoras, CMS, ERP, CRM y muchos más tipos de webs.

Leer más →

Servidor de hora en GNU/Linux

En las redes internas de la mayoría de empresas, se sucede la necesidad, muchas veces, de tener sincronización horaria en las máquinas para mejorar el rendimiento y la calidad de los datos a almacenar, de cara  a anotaciones y lanzamiento de tareas programadas.

La sincronización horaria es completamente posible de llevar, simplemente, instalando un servidor de hora NTP dentro de nuestra red, para que nos haga de servidor de sincronización.

Leer más →

Gráfico Burndown (más de Scrum)

En estos días, después de haber pasado más de 24 horas en el último Sprint, sin descansar, donde comenté la experiencia de haber usado Scrum y XP en [otro artículo][1], volvemos a la carga.

Esta vez, con dos semanas de Sprint, bastante más tiempo, podemos realizar algunas técnicas más para poder medir cuánto vamos a tardar realmente en terminar el proyecto que tenemos entre manos.

Leer más →

Algoritmos heurísticos y algoritmos voraces

Realizando una práctica de la asignatura de programación 3, de la Universidad Nacional de Educación a Distancia (UNED), he podido comprobar la diferencia, en coste computacional y rendimiento, que supone realizar un algoritmo mediante un algoritmo heurístico, como puede ser el de vuelta atrás (backtracking) y un algoritmo voraz (reducción).

Leer más →

Scrum y XP en la práctica

Hace un tiempo escribí sobre Srum y XP, en ese mismo artículo, comentaba que estas técnicas, tanto Scrum como XP, eran dos técnicas que me gustaban mucho y que probaría en un futuro… bueno, pues ese futuro ya es presente :-)

La semana pasada, tuvimos, en la empresa en que trabajo, la presión de entregar un proyecto de forma rápida. Pensé que, en estos casos, lo que más se necesita es, como no, la organización. No se puede estar haciendo una actividad de desarrollo entre varias personas y estar con la cabeza preguntando siempre: ¿qué queda por hacer?; así que, me lancé, cogí dos tacos de post-it, uno de tamaño normal para las partes a desarrollar y otro de tamaño más pequeño, para las tareas que hay dentro de cada una de las partes.

Leer más →

Libros electrónicos

Hay mucha gente que piensa que este será el punto de partida de un dispositivo que permitirá reducir el consumo de papel, del formato de libro convencional y que, a nivel ecológico, tendrá un gran avance hacia un ecosistema más sostenible.

Leer más →

Paradigmas y Patrones

Al desarrollar un programa, normalmente, el desarrollador elige un paradigma de programación y algún patrón de diseño, ya sea desarrollado por él, por su forma de trabajo a través de los años de experiencia, o tomado de alguna teoría o grupo de trabajo que lo haya conseguido transmitir.

Los grandes paradigmas de programación han llevado a que existan lenguajes de propósito general orientados únicamente a uno de estos paradigmas, o lenguajes que permiten, de una forma muy flexible, usar uno u otro de estos paradigmas.

Leer más →

Erlang y Asterisk: ErlAst

Para permitir una forma más dinámica de programar el plan de marcado (dialplan) de Asterisk, se emplea lo que se conoce como AGI. Viene a ser como el CGI pero a través de la entrada y salida estándares, stdin y stdout.

Como hacer fork dentro de la misma máquina y lanzar los intérpretes de los lenguajes que se suelen usar para AGI (PHP, Perl, Python…) trae consigo una carga considerable a una máquina que puede ya, de por sí, tener bastante carga con Asterisk, la aplicación de dialplan AGI, trae consigo la posibilidad de cambiar el medio de comunicación de entrada y salida estándar, por un socket abierto hacia otro equipo.

Leer más →

Menos SPAM, ¿los spammers están en crisis?

Hoy he revisado las estadísticas de mi servidor web, como cada día desde hace ya años y veo que, el flujo del correo entrante, en lo que se refiere a SPAM, que se había mantenido en 1000 mensajes diarios, aproximadamente, con un 80% de SPAM, desde hace dos días se mantiene en 300 mensajes diarios, aproximadamente, donde solo el 40% es SPAM.

Leer más →

Debate sobre la Ingeniería Informática

Reconociendo al sector informático como la cuarta parte de los estudiantes de las ingenierías que se estudian en las universidades españolas, la regulación de las titulaciones y el asegurar que dichas titulaciones son de calidad y corresponden a la calidad de nuestros vecinos europeos, se cierne sobre Estado y Universidades el debate de la responsabilidad de que esto sea así.

Leer más →

Documentación de Proyectos Libres

Se ha hablado mucho sobre la escasez de documentación en proyectos libres, tanto de manuales técnicos o de administración, que expliquen como instalar y administrar el software, como manuales de usuario, que expliquen cómo realizar las actividades que propone el software realizar.

Es claro que, cuando una persona aprende a desarrollar, a programar, se sienta frente al ordenador y comienza esa frenética batida de golpes contra el teclado, una pausa para ver los resultados, un momento de pensar en el siguiente paso, y otra vez a teclear… en esos momentos, la documentación, si se piensa hacer, es algo que se estima para un futuro… para cuando se dé a conocer.

Leer más →

Programación Rápida de Webs

Cada lenguaje que es potencialmente útil para el desarrollo web, termina teniendo un framework para el desarrollo de aplicaciones web de forma rápida. A continuación pongo un listado de los lenguajes con sus respectivos entornos (los más usados y/o conocidos):

Leer más →

La nueva revisión de C++ se llama C++0x

Las últimas revisiones de este lenguaje fueron en 1998 (C++98) y en 2003 (C++03). Ahora se ha presentado el nuevo borrador para lo que será la siguiente revisión C++0x.

Las novedades, muy numerosas, se listan al completo en la wikipedia. Listo las que más me han llamado la atención:

Leer más →

Scrum y XP

Después de darle un repaso al libro Scrum y XP desde las trincheras, he visto que muchas de las técnicas en las que se basa, son como las que usaban nuestros profesores dinámicos en el colegio para motivarnos a participar en clase.

En esencia, es eso, que cada analista/programador se involucre en lo que está haciendo, llegue a un diseño y una finalidad y, sobre todo, que la información sobre lo que se hace, fluya sin que las interrupciones hagan que el trabajo se pare.

Leer más →

Serialización de Información

En los tiempos que vivimos de Internet, la programación de elementos aislados comienza a ser cada vez menos frecuente. Mientras que el desarrollo para Internet de aplicaciones tienden a ser más escalables, redundantes y tolerantes a fallos.

En ese aspecto, los programas deben de sincronizar sus datos con otros elementos de un mismo sistema o copias redundates en la red.

Leer más →

El SIMO se suspende

Parece ser que ya es oficial, según fuentes de la organización del evento que se lo han hecho saber a El Mundo y el País entre otros, que el SIMO en este año 2008 no se va a celebrar, por el motivo de que faltarán las grandes empresas (Telefónica, Orange, Microsoft, Toshiba, Siemens, Fujitsu…).

¿Resurgirá para el 2009? :-S

Leer más →

Desmitificando: software y su mantenimiento

Desde siempre, cuando una empresa apuesta por software privativo frente a software libre o de fuente abierta, lo hace por tener cubiertas las espaldas, por tener garantías y saber que hay una empresa que responde por ese software, tanto en mantenimiento, como en incidencias graves, que pueden llegar a pagar indemnizaciones.

Este es el principal motivo de que se abogue por software propietario, simple y llanamente. Cualquier otro motivo es un mito, como cualquiera de los siguientes:

Leer más →

Erlang: concurrente, distribuido y en tiempo real

Después de tiempo desarrollando aplicaciones casi exclusivamente en PHP, me encuentro en el problema de que PHP no es, ni mucho menos, un lenguaje de uso general, sino un lenguaje desarrollado y pensado para la creación de aplicaciones web de forma rápida y, de forma controlada, útil y potente para grandes proyectos.

Pero fuera de este entorno, en el background de las grandes empresas donde todo debe de ser escalable, redundante y en alta disponibilidad, y sobre todo cuando las aplicaciones no son para servidores web, usar un lenguaje que no está preparado para el desarrollo deseado, puede conllevar muchos quebraderos de cabeza, e incluso, no alcanzar el objetivo deseado.

Leer más →

¿Está mi empresa organizada?

Cuando una empresa se forma, se intenta organizar el trabajo entre las pocas personas que la inician y si su estructura es buena y sus productos/servicios asequibles para el mercado, la empresa crece y con ella su personal. Es el inicio de los problemas.

Cuando una empresa crece, se contrata a más gente y estas personas comienzan a ocupar cargos que antes desempeñaba una persona en un porcentaje pequeño de su actividad laboral. El ritmo vertiginoso hace que las reuniones con esta nueva persona, para explicarle su cometido sean breves y escasas, así que terminan por hacer el trabajo a su manera.

Leer más →

¿Se nos hunde Internet?

Después de varias noticias algo catastrofistas, ha llegado la última que, en sí, podría afectar a todos los usuarios de Internet, puesto que se basa en el propio protocolo TCP/IP. Hasta el momento, la compañía sueca Outpost24, solo ha dejado caer la noticia y la promesa de extenderla en una conferencia.

En lo que llevamos de año, se han sucedido grandes vulnerabilidades de seguridad. La primera ha afectado la protocolo DNS, la segunda al protocolo BGP y ha habido otra vulnerabilidad sobre SSL que ha afectado solo a las distribuciones Debian y derivadas del mismo.

Leer más →

¿Mi sistema es realmente seguro?

Es una pregunta que llega a plantearse mucha gente muchas veces, ¿es mi equipo realmente seguro?

Estas preguntas surgen siempre por desconocimiento y, realmente es bueno que nos las hagamos, ya que hay también mucha gente que dice saber y, cuando dicen eso de: “en mi equipo es imposible que entren”; es donde están realmente equivocados.

Nuestros equipos informáticos, en la amplia mayoría, están conectados a Internet. Reciben una cantidad de información muy grande a diario, y envian también mucha información a la red de redes.

Leer más →

Filosofía Unix

Desde que comencé en GNU/Linux, sobre el 2002, siempre se ha resaltado la filosofía con la que se fundamentó el sistema al que “copia”, que es Unix.

La filosofía Unix se basa en algunos apartados básicos que todo buen informático debería de emplear en sus desarrollos, ya sea a nivel de sistemas o gestión. El uso de estas directivas, asegura que el trabajo, cuanto más pase el tiempo, más llevadero será.

Leer más →

Inteligencia de Negocio

Le he estado dando vueltas hoy a herramientas de Business Intelligence (Inteligencia de Negocio) tales como Pentaho y ver cómo están estructurados todos los departamentos de negocio que he visto en muchas empresas.

La valoración, en comparación con talleres de coches, sería que estas empresas trabajan con mucho personal debido a que las herramientas son viejas, escasas y hay que usar muchas para tareas que parecen muy complejas. Mientras que los talleres con herramientas de BI, son talleres con las herramientas precisas que les permiten llevar a cabo una labor cotidiana de forma fácil y efectiva.

Leer más →

Cloud Software

Con este título, comienza a surgir una tendencia a usar más servicios en web. Esto viene acompañado de la liberación hace unos días de Google Chrome, el cual, aseguraban muchos expertos que no hace la competencia a Internet Explorer, Safari o Firefox, sino que se la hace a Windows.

Esto viene determinado porque el navegador se ha convertido en todo un sistema operativo en el que se ejecutan aplciaciones que se cargan de forma remota. Lo que ya habían visualizado hace años Sun con el uso de sus paquetes en forma de nombre de dominio y otros… pero de una forma mucho más transparente.

Leer más →

Despide a tu jefe

Hoy he leído en el blog de Enrique Dans (le he dejado un comentario también ;-) ), que hay un artículo (en inglés) que habla sobre cómo prepararse para la crisis, haciendo lo que realmente pueda ayudar a una empresa recortando por arriba.

Leer más →

HP quiere su propio S.O.

se ve que tanto tiempo vendiendo licencias de Microsoft en sus equipos, le ha hecho a este gigante de la venta de hardware, replantearse si vender sus equipos con Windows, y sobre todo con Vista, es buena idea.

La idea que tienen es desarrollar algo simple para el usuario, basado en GNU/Linux, por lo que supongo que será algo así como Ubuntu, solo que mucho mejor soporte de hardware para los equipos HP con los que se venda.

Leer más →

Microsoft no es ingeniería, sino comercio

Uno de los grandes avances que ha conseguido Bill Gates no ha sido como informático, como muchos creen, sino como comercial.

Microsoft ha sido, quizás, una de las más grandes empresas de software que más se han basado, para sus grandes proyectos, en software adquirido a otras empresas. Con lo que los desarrollos propios, son pocos.

Leer más →

PHP no es para todo

La popularización de los lenguajes de programación, hace que muchas veces, una aplicación que se desarrolló en otro lenguaje, sea portada a ese nuevo lenguaje, para demostrar su potencia, sencillez o capacidades.

Algunas veces, esos nuevos lenguajes, resultan ser muy buenas herramientas que nos permiten trabajar más rápido sin necesidad de centrarnos mucho en problemas típicos y ya salvados desde hace tiempo (como las cadenas de texto y los tamaños de memoria han sido un gran problema a la hora de escribir programas en C/C++).

Leer más →

Interfaz Natural con el Sistema Operativo

Hace tiempo leí a alguien que se había frustrado porque consideraba que la interacción ratón-gráficos no era algo tan natural como pedir en palabra, tecleando en consola, lo que se quiere hacer a la máquina.

En esto considero que los videojuegos nos llevan ventaja en lo que será el manejo de un sistema operativo en el futuro, ya que se pasó de un modo de aventura gráfica en la que había que escribir la acción a realizar y probar y probar hasta dar con la frase adecuada… a un modo más preciso y cerrado de elección de frases que el personaje pudiese decir.

Leer más →

Redes en Linux

Este artículo ha pasado a formar parte de bosqueviejo.org, puede verlo en sus formatos html y pdf.

Leer más →

Asterisk: Configuración de Zapata

Este artículo es bastante antiguo. Forma parte de una forma de configurar los interfaces analógicos de telecomunicaciones para Asterisk escrito en 2007. El documento en PDF puede ser descargado a través de este enlace.

Leer más →

Software empaquetado y listo para usar

Los paquetes son una forma de distribuir software compilado para una arquitectura concreta. En Windows se distribuyen en comprimidos autoejecutables que autoconfiguran el entorno y en GNU/Linux también, pero de forma más controlada.

Los paquetes de GNU/Linux tienen que cumplir la especificación de ordenación de ficheros que establece la distribución en concreto donde se va a instalar la aplicación, así pues, nos encontramos a este respecto con dos grandes variantes: RPM y DEB.

Leer más →

MVC en PHP: ¿es correcto?

Después de haber realizado una investigación sobre el tema, he hallado una serie de enlaces, donde se destacan cosas como que el único MVC oficialmente creado es phpMVC, o cosas como que MVC no es para PHP.

En principio, buscando alternativas, además de phpMVC tan solo encontré Kenda, el cual se encuentra en un estado muy inicial y con muy poco apoyo.

Leer más →

Bienvenida de Bosque Viejo

Hola a todos, después de algún tiempo, ya he conseguido poner en functionamiento el sitio web (blog) Bosque Viejo. En principio no hay nada, no hay contenidos ni hay textos (salvo este) que leer… espero que con tiempo y una pequeña dedicación pueda ofreceros un sitio de mucha documentación.

Si tenéis algún comentario podéis realizarlos aquí mismo, podéis hacerme llegar vuestras opiniones y sugerencias para hacer que este sitio crezca día a día.

¡Un saludo y gracias!

Leer más →