Noticias Weblogs Foros Wiki Código
Sponsors:

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Anunciarse aquí

PlanetaCódigo en inglés

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Variable not found, 0:1

10 razones por las que tu blog te ayuda a encontrar empleo

Septiembre 30th, 2007 - [Enlace local]

El otro día comentábamos en mi empresa que podría ser el momento de incorporar un nuevo desarrollador software en el equipo, de contratar a alguien. Esto, que puede resultar rutinario en grandes compañías, es para los que somos pequeños, un auténtico suplicio.

Experiencias anteriores nos han demostrado que los portales de empleo son útiles cuando se trata de ofertas muy específicas a la que acudirán pocos candidatos. Casos más genéricos, como podría ser la contratación de un desarrollador con cierta experiencia bajo unas condiciones aceptables, provocan una entrada masiva de candidatos que hacen de la selección un proceso imposible... ¿qué pequeña empresa puede preseleccionar con tino de entre una lista de cientos de personas, entrevistar físicamente a decenas de personas y encontrar a su candidato ideal?

Esta masificación es la que hace que tengan mayores probabilidades de éxito aquellos candidatos que destacan de alguna forma sobre el resto. Conocimientos técnicos, habilidades, actitudes... son muchas las características interesantes para las empresas, y algunas de ellas son difíciles de demostrar a priori, y más aún usando el habitual curriculum.

Y es justo aquí donde los blogs pueden jugar un papel fundamental. Si estás buscando empleo, se me ocurren al menos diez razones por las que deberías tener tu propio blog e incluirlo en tu currículum como un activo de alto interés:

1. Demuestras tus conocimientos.
Sí, es cierto que tu título debería hacerlo o al menos ser una pista, pero por desgracia no es así. El mero hecho de poseer una ingeniería, titulación técnica o haber realizado cursos específicos no implica un nivel de conocimientos determinado, pues la mayoría de las veces éste se adquiere con la experiencia o de forma autodidacta.

En un blog puedes demostrar tu nivel de conocimientos en los temas que tratas, tus especialidades, preferencias e inquietudes de forma mucho más directa, detallada y creíble de lo que puedes hacer con un currículum tradicional.

2. Demuestras tu facilidad de aprendizaje
Respecto a esto, siempre digo lo mismo: si piensas que vales lo que sabes, estás muy equivocado. Tus conocimientos de hoy no tienen mucho valor más allá de un par de años. Lo que vales es lo que puedes llegar a aprender, la facilidad con la que te adaptas a los cambios que esta profesión nos regala tan frecuentemente.

Tu blog puede demostrar que tienes una actitud positiva frente al aprendizaje.

3. Demuestras pasión por tu profesión
La pasión por tu profesión, por tu trabajo, esa característica tan demandada en el mundo empresarial, viene incluida casi de serie en el blogger. Resulta imposible imaginar a alguien al que no le guste el mundo del desarrollo de software escribiendo varios posts mensuales comentando las nuevas tecnologías que va descubriendo, trucos o cualquier tema relacionado con ello.

El simple hecho de tener un blog ya es un punto a tu favor.

4. Demuestras tu capacidad de trabajo
Un blogger, salvo excepciones (que seguro que hay), es un trabajador nato. Es importante tener en cuenta que cada post requiere un trabajo considerable, sobre todo cuando se genera contenido propio. Existen asimismo otras tareas, como la lectura de fuentes o la gestión de comentarios que pueden llegar a consumir mucho tiempo y esfuerzo. Esto, además, tiene mucho más mérito cuando se hace por gusto (véase el punto 2).

Obviamente, ser trabajador es una característica muy apreciada por la empresa, y tu blog te ayudará a demostrar que lo eres. ;-D

5. Demuestras rasgos importantes de tu personalidad
En cada post que escribes vas dejando un poco de tí mismo; consecuentemente, si sumas muchos de ellos seguro que podríamos unir tantos trocitos que habría información suficiente para psicoanalizarte en profundidad.

Las características personales de los candidatos son aspectos vitales en un proceso de selección. En el mundo del desarrollo, nadie va a contratar a personas conflictivas, violentas, de posturas radicales o de difícil encaje para el trabajo en equipo.

La imagen que transmites en tu blog puede ayudar a las empresas a hacerse una idea de cómo eres y de cómo no.

6. Demuestras tus habilidades literarias
Aunque a veces sea injustamente considerada la parte más tediosa y poco creativa de nuestra profesión, no olvidemos que una buena parte del trabajo de desarrollador consiste, a distintos niveles, en escribir textos. Pantallas, mensajes, ayudas, documentación de código, documentos técnicos, de diseño, análisis o propuestas son sólo algunos ejemplos de las tareas para las que hay que saber redactar apropiadamente. Las faltas de ortografía, o simplemente una redacción pobre en cualquier entregable, dan muy mala imagen de la persona y empresa que los generan.

Tu blog, aparte de ayudarte a cultivar estas virtudes, demuestra cómo podrías hacerlo en el desempeño de tus tareas como profesional, aportando un plus respecto al resto de candidatos que simplemente presentan un currículum.

7. Fortaleces y demuestras tu capacidad de comunicación
Un blog, aunque pueda parecer lo contrario, no es una herramienta de comunicación unidireccional, una palestra donde recitar monólogos: se escribe, se escucha, se debate, se critica, se comparten conocimientos y experiencia.

Ya en su momento, en el post "Entre 10 y 28 desarrolladores por el precio de uno" comenté que una de las características imprescindibles de un buen desarrollador es la capacidad comunicación bidireccional, pues repercute de forma muy positiva en la productividad del equipo de trabajo donde se ubique. Y, ¿qué es un blog sino un potente medio de comunicación?

Tu blog hace que te comuniques, y demuestra la facilidad que tienes para ello.

8. Demuestras tu experiencia, incluso si no la tienes
Está claro que nadie que busque su primer trabajo tiene experiencia; también es cierto que la experiencia es vital para encontrar empleo... ¿cómo salimos de este círculo sin fin?

Hay personas que sin haber salido todavía al mercado laboral, acumulan ya centenares de horas de vuelo. Suelen ocupar sus ratos libres en investigar, probar, aprender, y a veces pueden llegar a alcanzar niveles de dominio de una tecnología increíbles, y que serían muy valiosos en el mundo empresarial. El problema casi siempre es demostrarlo.

Tu blog puede demostrar la experiencia que tienes como desarrollador, independientemente de si has comenzado o no tu carrera profesional. Y si además participas en proyectos de software libre, mucho mejor.

9. Ganas prestigio
Lo mejor para conseguir un puesto de trabajo son, sin duda, las referencias y recomendaciones facilitadas por personas o entidades de confianza. Sin embargo, en un mundo 2.0 como éste, donde somos los usuarios de la red los que vamos aportando nuestro granito de arena a la inteligencia colectiva, no hay mejor aval que la credibilidad y fidelidad de cientos o miles de individuos repartidos por todo el mundo que, día a día, leen, comentan y citan nuestros posts.

Un blog con contenidos medianamente decentes se va haciendo, a la larga, un hueco en la red, aumentando el prestigio y autoridad de su autor.


10. Y sobre todo, destacar
Destacar sobre el resto de candidatos que, como tú, son ingenieros, técnicos, programadores estupendos o grandes expertos en lenguajes de última generación. Es la distinción lo que puede hacer que triunfes, y especialmente si acabas de terminar tus estudios, momento en el que se lanzan al mercado laboral decenas de jóvenes con currículums prácticamente idénticos.

Incluir el blog en tu currículum provocará, como mínimo, la curiosidad de los responsables de las primeras fases de una selección de personal, que probablemente acudirán a comprobar si eres el candidato apropiado.

En fin, espero que estas reflexiones puedan servir para algo; por un lado, motivar a aquellos que todavía no tienen blog para que se atrevan a empezar, y por otro, para animar a los que ya lo tienen y trabajan duro en él. En cualquier caso, tened por seguro que va a valer la pena.

» Leer más, comentarios, etc...

Navegapolis

Registro de los tiempos de trabajo de un proyecto.

Septiembre 30th, 2007 - [Enlace local]

activity managerSi necesitas registrar y clasificar por tareas y sub-tareas los tiempos de trabajo en un proyecto, tanto de los miembros del equipo, como de los colaboradores, Activity Manager puede ser una opción.

Es un programa Open Source con licencia BSD.

 

» Leer más, comentarios, etc...

fetishcode

Instalar JDK en Ubuntu Feisty(7.04)

Septiembre 30th, 2007 - [Enlace local]

How to install jdk in Ubuntu Feisty

La opción mas rápida y sencilla es hacerlo, como casi todo, desde los repositorios.

Pero muchas veces queremos una JDK concreta para nuestro trabajo o proyecto, por eso aqui explicaremos la manera de instalar el JDK que hayamos descargado de la web de Sun.

Una vez tengamos descargado el archivo,en nuestro caso jdk-6-linux-i586.bin

Le damos permiso de ejecucion y lo instalamos:

chmod +x jdk-6-linux-i586.bin
$ sudo ./jdk-6-linux-i586.bin

Una vez instalado el JDK.

Seteamos el nuevo Java como una de las “alternativas de java”:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/jdk1.6.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/jdk1.6.0/bin/javac" 1

Finalmente configuramos que java queremos tener por defecto. Y a programar!

sudo update-alternatives --config java

Mas información en la guía ubuntu

» Leer más, comentarios, etc...

MadeInFlex

Nuevo sitio para desarrolladores

Septiembre 29th, 2007 - [Enlace local]

http://developer.adobe.com. Adobe ha estrenado hoy el nuevo site para desarroladores devnet. Un cambio total en la estética, en la navegación y mucha más información para ayudarnos en nuestro trabajo diario.

» Leer más, comentarios, etc...

Jorge Dieguez Blog

¡¡¡Quiero una librería así!!!!!

Septiembre 29th, 2007 - [Enlace local]

Estos días he tiendo la suerte de estar en Londres.
Entre otras cosas chulas me quede con estas imágenes.

UAHHHHHHHH!!!!!!!!!!!!!!

DSC_3711

 

DSC_3712

» Leer más, comentarios, etc...

Una sinfonía en C#

[VIDEO] Cryptography Application Block

Septiembre 29th, 2007 - [Enlace local]

» Leer más, comentarios, etc...

avemundi

migrar de movable type a wordpress

Septiembre 29th, 2007 - [Enlace local]

Estoy preparando la migración de este blog de Movable Type a WordPress. Los motivos son varios, tenía pensado actualizar la versión que de MT que uso, que es una muy vieja, pero al ver la licencia me paré un poco,...

» Leer más, comentarios, etc...

Picando Código

Comentario sexta conferencia RTE

Septiembre 29th, 2007 - [Enlace local]

Java Duke With HelmetHoy asistimos a la sexta conferencia de la RTE.

Opino que fue una de las mejores charlas que se han hecho hasta el momento. Se dieron los conceptos de forma bien clara y entendible y luego ejemplos super prácticos. El primero en hablar fue Francisco Villegas, que habló sobre J2ME, que según la web de Sun se define así:

Java Platform, Micro Edition (Java ME) provee un ambiente robusto y flexible para aplicaciones ejecutadas en dispositivos móviles y otros dispositivos embebidos, teléfonos móviles, PDAs, Televisores e impresoras. Java ME incluye interfases de usuario flexibles, seguridad robusta, protocolos de red incluidos, y soporte para aplicaciones en red y offline que pueden ser descargadas dinámicamente. Las aplicaciones basadas en Java ME son portables a través de muchos dispositivos, y a la vez saca provecho de las capacidades nativas de cada dispositivo.

(http://java.sun.com/javame/index.jsp)

En resúmen, es una de las plataformas más populares para programas en celular y demás dispositivos móviles. La mayoría de los celulares nuevos traen Java, y la mayoría de los juegos para celular están hechos en ésta plataforma.
Obviamente es una plataforma bastante reducida respecto a JSE o JEE, según mencionó Francisco, hay que manejarse con unas 37 clases.

Mostró un ejemplo usando NetBeans Mobility Pack, y la verdad que resultó bastante sencillo. No sé si es que uno le va agarrando la mano a esto de la programación, o qué, pero realmente me dieron ganas de probar programar para celular porque es bastante fácil y rápido.

Entraría más en detalle sobretodo en cuanto a conceptos, pero probablemente en unos días se suba el material de la charla a internet, así que de ahí se va a poder ver más. Y capaz que Francisco publica algo en su blog: http://cronos.homelinux.net/
Más info sobre J2ME:
http://en.wikipedia.org/wiki/Java_ME
http://www.onjava.com/pub/a/onjava/2001/03/08/J2ME.html

El segundo tema, también orientado a Java, fue JPA - Java Persistance Api, dictado por Leandro Scasso Díaz. Es un framework de persistencia para Java, para persistir datos en bases relacionales mapeando directamente los objetos. Es una tecnología bastante joven, pero que viene bastante bien, y según el orador "Para donde tiran las balas" ahora.

Introdujo un concepto que los programadores sufren mucho, pero no sabía que tenía su propio nombre: el "Impedance Mismatch". El paradigma de orientación a objetos está basado en principios de ingeniería de software probados. Y el paradigma relacional en principios matemáticos. En un sistema donde ambos paradigmas deben trabajar juntos, salta el problema. Personalmente me pasa a veces en el diseño, que tengo más facilidad de diseñar un sistema en diagrama de clases con objetos, pero cuando paso al diseño de la base, me resulta más complicado. Así y todo, creo que ya le agarré la mano.
El Impendance Mismatch está bastante estudiado en la red, pueden visitar éstos enlaces para saber más:
http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch
http://www.agiledata.org/essays/impedanceMismatch.html

Siguiendo con el API de persistencia de Java, consiste en las especificaciones, y después varias empresas crearon sus propias implementaciones como Eclipse y Apache, por nombrar las que me acuerdo.
La verdad que es bastante sencillo y también portable. En el ejemplo práctico que se mostró, pasar de un motor de base de datos a otro tomó segundos, cambiando el código de un archivo XML con los datos de la persistencia.
Obviamente debe traer nuevos dolores de cabeza, pero facilita bastante el trabajo, ya que hace transparente la persistencia de datos.
Como dije respecto al tema de Francisco, cuando esté el material disponible se podrá extender el tema, pero por más información:
http://java.sun.com/javaee/overview/faq/persistence.jsp
http://en.wikipedia.org/wiki/Java_Persistence_API

Leandro también comentó sobre el JAVAUY 2007 que se va a llevar a cabo el próximo 10 y 11 de octubre, y va a ser presentado un proyecto en el que estuvo trabajando.
Entre esto, el JAVAUY 07 y la próxima charla de la RTE (con invitados del JUGUY), octubre es de Java...


Java Powered

» Leer más, comentarios, etc...

Picando Código

Frase del día

Septiembre 28th, 2007 - [Enlace local]

Viernes, se acerca el fin de semana y dejo una frase filosófica que estuve preparando por meses:

"Programar es divertido"

-Fernando Briano

» Leer más, comentarios, etc...

Picando Código

Inscripciones abiertas para Javauy07

Septiembre 28th, 2007 - [Enlace local]

JAVAUY 07

Están abiertas las inscripciones para el Javauy07 Te podés inscribir ahora aquí o en el propio lugar del evento.

En éste link pueden ver algunos de los laboratorios guiados (hands on lab) y conferencias que se van a dar.
Entre los hands on lab están JSF & Rich Faces, y una introducción a JPA. Ambos con una presentación general y una implementación guiada de un ejemplo sencillo que utilice todo lo visto (EXCELENTE...).

Entre las conferencias hay temas muy interesantes por ejemplo ZFS y Solaris Virtualization, Historias de Desarrollos, Métodos ágiles, varias orientadas a tecnologías JEE, Introducción a Groovy, Licenciamiento de Software y otras obras con Derechos de Autor y unas cuantas más. Visiten el link más arriba para verlas. Espero poder ir, porque la verdad que mirando las sesiones, seguro que va a estar increíble!

El evento cuenta con el apoyo de IBM Uruguay, Sun MicroSystems, Tata Consultancy Services y el UYLUG, entre otros.

Están todos invitados:

JavaUY '07: miércoles 10 y jueves 11 de octubre de 2007

Ubicación
Knowledge Development Center
Avda Italia 6201 (LATU)
Montevideo, Uruguay

Líneas de ómnibus: 10, 21. 64, 221, 468, ... Todos los interdepartamentales por avenida Italia.

» Leer más, comentarios, etc...

Buayacorp

QuickCash de Western Union disponible para los pagos de AdSense

Septiembre 28th, 2007 - [Enlace local]

Gracias a NestaVista hoy acabo de revisar mi cuenta de AdSense y veo que Google finalmente habilitó la posibilidad de cobrar los pagos de AdSense a través del servicio Quick Cash de Western Union.

QuickCash de Western Union disponible para los pagos de AdSense

Aunque todavía no llegué a los $100 necesarios para recibir el pago, es muy bueno saber que — al menos en este lado del planeta — las agencias de cambio de dinero ya no cobrarán altas comisiones por cambiar los cheques. :D

» Leer más, comentarios, etc...

design-nation.blog/es

Cuándo y cómo aprender cosas nuevas.

Septiembre 28th, 2007 - [Enlace local]

Varias veces hemos citado a 37signals en el blog. En este caso lo hago acerca de una cuestión que se plantea uno de los miembros en el blog.

Cuándo y cómo aprender cosas nuevas
.
Bueno, es obvio que para aprender un lenguaje nuevo, el cómo es fácil. Ordenador, café, una pantera rosa, Desmond Dekker de fondo, y …programar. ( Vale, el café no tiene porque ser necesario ).

El cuándo es un poquito más complejo, pues además lleva implícito el dónde.

Partimos de la premisa de que somos programadores porque nos gusta programar

Con esto en mente, podemos pensar que el mejor sitio es en casa, pero eso implica llegar a casa y ponerse a tirar código después de haber estado escribiendo líneas todo el día en el trabajo.

Como digo, me gusta programar, y sí puedo dedicar parte de mi tiempo libre a hacerlo, pero una parte mínima.
También me gusta hacer fotos, ver buenas series o películas, pasear, leer el periódico, leer un libro, y otras muchas cosas que no puedo hacer la mayor parte del día porque estoy programando, …en el trabajo.

La otra opción es forzar en la medida de lo posible a utilizar nuevas herramientas o nuevos lenguajes en nuestros desarrollos profesionales.

Me gusta más la segunda. Lo cierto es que nunca se aprende tanto como cuando tienes X días para hacer algo que ni siquiera sabes si se puede hacer. Es cierto que en esos días se puede llegar a pasar mal - llegaré a tiempo, seré capaz- pero se aprende, y cuando se obtiene el resultado, la satisfacción es enorme. La mente está activa, el cuerpo está activo. La rutina no es rutina. Como decía César hace una temporadilla,

Una de las mejores sensaciones que se pueden tener cuando se gana uno la vida como programador es la de estar frente a un proyecto que hay que sacar adelante con una tecnología de la que no se sabe nada. Lo malo es que esa sensación se da tan pocas veces...

Volviendo al post que ha originado esta sesuda reflexión, en uno de los comentarios, Dr. Meter afirma

At some point, while there will be new approaches and paradigms, you learn to trust your expertise in core logic and programming principles and realize that new languages are more about syntax than anything else. It’s inevitable that the language you’re using now will be replaced (probably in 5 years or less), and you just have to have the confidence that you can adapt your skills.

Bajo mi punto de vista, tiene razón, y además esta opinión enlaza por otro lado con algo que ya hemos comentado por aquí.

A fin de cuentas, cuando sabes el porqué de las cosas, el cómo siempre es más fácil.

» Leer más, comentarios, etc...

design-nation.blog/es

¿Porqué no piden lo que quieren?

Septiembre 28th, 2007 - [Enlace local]

Desde que me dedico a esto, me ha ocurrido mil veces.

Hoy me ha vuelto a ocurrir..

Situación. Se quiere modificar una sección y se nos pide que se envíen varias pruebas de diseño en jpg para valorarlas. Se envían cinco.

La contestación es: “nos quedamos con la quinta, pero… esto que está alineado a la izquierda, lo alineáis a la derecha, a esto otro le quitáis el borde, a esto le aumentáis el tamaño de letra, a esto le ponéis un fondo clarito, a esto le modificáis el interlineado, esto que tenga un borde discontínuo y a esto otro le ponéis un bullet que sea una imagen de…� etc…

Conclusión: no se quedan con la quinta, se quedan con la sexta. Que evidentemente ni siquiera es mezcla de las cinco anteriores. No es ni más ni menos que lo que querían desde un principio y pretendían que adivinásemos tras leer la frase “queremos unos pequeños cambios�.

¿Porqué gustará tanto hacer trabajar por trabajar? ¿Porqué no se puede decir “quiero esto así y así� a la primera?.

En muchas ocasiones, tengo la sensación de que numerosos puestos de trabajo se justifican por quienes los ocupan, basándose en el número de e-mails enviados, y en la cantidad de trabajo baldío generado.

» Leer más, comentarios, etc...

Buayacorp

Spam y Trackbacks

Septiembre 28th, 2007 - [Enlace local]

En el último incidente que tuve me recomendaron varias alternativas para reducir el spam que llega a este blog y desde el momento que puse en práctica algunas de éstas (cambiar el nombre de uno de los campos de los comentarios), el número de comentarios spam enviados directamente a wp-comments-post.php literalmente desapareció, pero todavía siguen llegando trackbacks no válidos.

En base a un archivo modificado de wp-trackback.php que me envió Maty, hice unos cambios a éste para que haga casi lo mismo que el plugin Trackback Validator, que básicamente verifica que el sitio que envía la petición contenga un enlace recíproco a la entrada a la que se hace referencia (ver el paper para mayores detalles). La limitación de este método, tal y como reconoce una de las personas que participó en ese proyecto, es que puede evadirse fácilmente de diferentes modos (con CSS, comentarios HTML, JavaScript, generación dinámica de contenidos, etc).

Estos días estuve recibiendo spam de distintos sitios (supongo del mismo spammer), que generan temporalmente enlaces para los trackbacks que envían, logrando de este modo pasar las validaciones de la presencia de enlaces recíprocos, vean por ejemplo las últimas líneas que aparecen en el siguiente log de acciones:

[2007-09-26 06:29:52] 64.22.110.2
[2007-09-26 06:29:52] Array
(
    [title] => Web Hosting Reviews, Web Site Hosting
    [url] => http://sitio_eliminado/
    [excerpt] => I couldn\'t understand some parts of this article, but it sounds interesting
    [blog_name] => Web Hosting Reviews, Web Site Hosting
)

[2007-09-26 06:29:55] http\://www\.buayacorp\.com/archivos/edicion-12-de-architechture-journal/
[2007-09-26 06:29:55] Array
(
    [0] => <a href='http://www.buayacorp.com/archivos/edicion-12-de-architechture-journal/trackback/'>link 3656</a>
    [1] => link 3656
)

Una forma de mejorar este método de verificación de trackbacks supongo que sería añadiendo una lista negra de dominios/IP/palabras, aunque en realidad no sé si valga la pena implementar algo así por el momento, puesto que los comentarios/trackbacks que logran saltar esta primera comprobación, son capturados Akismet.

» Leer más, comentarios, etc...

Arragonán

Toma de contacto con eclipse PDT

Septiembre 27th, 2007 - [Enlace local]

He estado trasteando un poco la versión 1.0 de eclipse PDT, y he visto que en unos meses ha mejorado muchísimo, hasta el punto que a partir de ahora va a sustituir al plugin PHPeclipse que llevaba bastante tiempo utilizando. La verdad es, que por lo que he estado viendo, este puede llegar a ser el IDE por excelencia para desarrollar con php, si Zend no hace algo para evitarlo (con su Zend Studio mientras sea de pago lo tienen difícil) y todavía nos quedará por ver como queda el plugin para NetBeans.

El editor funciona perfectamente, cargándote las ayudas para clases, métodos y funciones, pudiendo acceder también a sus implementaciones sin tener que volverte loco buscando en qué fichero tengo la clase-método-funcion X, cosas que hacía PHPeclipse un poco a su manera, y con PDT funcionan a la perfección.

Personalmente pienso que el editor de código es lo más importante en un ide, que al final es con lo que más nos peleamos los programadores, pero también existen otras características destacables:
- Soporte para debugging.
- Opción a ver qué tipo de objetos o variables devuelve un método.
- Poder indicar si el código de un proyecto es php4 o php5.
- Posibilidad de crear templates generadores de código asociados con sus alias, de serie vienen bastantes creados.
- Ayudas también para escribir en ficheros html y css.
- Etc.

A ver si hago un hueco y pruebo un poco más a fondo el ide, aprovechando que quiero trastear también el Zend Framework y tengo alguna pequeña idea que me ronda por la cabeza.

» Leer más, comentarios, etc...

Pensamientos ágiles

Pequeños cambios en el blog

Septiembre 27th, 2007 - [Enlace local]

A los que os paráis a escribir en este modesto espacio, lo primero muchísimas gracias porque me encanta conversar sobre todo estos temas, segundo simplemente comentar que he puesto a la derecha un panelillo donde aparecen los últimos comentarios. Era algo que quería poner ya hace mucho tiempo, pero que mi naturaleza vaga para adecentar el blog me lo impedía (sólo hay que ver el caos del panel lateral para darse cuenta). Por suerte Jordi me ha enviado un pequeño script para solucionarlo.

Por otra parte, desde hace unas semanas os habréis dado cuenta de que hay un mapa que muestra los visitantes en tiempo real que hay en el blog (al fondo a la derecha). Este servicio es cortesía de amung.us y la verdad es que parece que funciona bastante bien. Me encanta entrar en el blog y ver que alguien te está leyendo en ese mismo momento en otra parte del planeta. ¡Muchísimas gracias a los que lo hacéis!

» Leer más, comentarios, etc...

programania

Software libre en la administración pública

Septiembre 27th, 2007 - [Enlace local]

En estos últimos años, las administraciones públicas de distintos países se han planteado o están en proceso de implantación de distintos paquetes de software libre para realizar sus funciones.

Entre las ventajas clásicas que se enumeran como la accesibilidad de todas las personas a los servicios (muchos programas de software libre son gratuitos, con lo que cualquier persona puede tenerlos sin pagar) o una reducción de costes (frente a una solución propietaria, ya que para modificar cualquier parte no dependes de la empresa que creó el software, y puedes contratar o formar profesionales sobre la plataforma utilizada de manera independiente), un aspecto que no se ha comentado tanto es el jurídico.

El artículo que me hizo reflexionar sobre el tema fue escrito por Curtis Poe, y trata sobre un juicio en el que un ciudadano exigió ver el código fuente de los alcoholímetros aduciendo que él no superaba el índice de alcohol en aire permitido por ley, y que el aparato estaba defecuoso.

En dicho caso, la medición del alcohol se hacía a través de software propietario, y tras una larga batalla, se consiguió que la empresa liberase el código. Al hacerlo, se descubrieron fallos en el diseño, con lo que el ciudadano fue absuelto.

El autor concluye que el software libre en determinadas funciones es un medio que tiene el usuario para defender sus derechos, ya que se le acusó de un delito que no había cometido por un software (que era propietario, la empresa no quería liberar el código y dárselo a la defensa, con lo que no podían preparar una defensa adecuado) que no estaba sujeto a revisiones exhaustivas.

Aunque si el código del alcoholímetro estuviese abierto se hubiera evitado este problema (o al menos el ciudadano podría haber preparado su defensa), ¿Creeís que con las medidas adecuadas se podrían haber garantizado los derechos del ciudadano siendo el software propietario?

Por último, ¿qué ventajas tiene el software libre, y cuáles el software propietario en la administración pública?

Enlaces:

» Leer más, comentarios, etc...

Pensamientos ágiles

Comunicando ideas con comics

Septiembre 27th, 2007 - [Enlace local]

De vez en cuando siempre te topas con algún artículo que supone un soplo de aire fresco a un tema tan tratado como son las metodologías de desarrollo.

En User Interface Engineering han publicado una entrevista con Kevin Cheng en la que explica como en algunos equipos de Yahoo utilizan comics para comunicar historias y casos de uso.

Parece que todo surgió a partir de un encuentro con Bill Buxton, Principal Researcher en Microsoft Research, después de reunirse con Kevin y su compañero Tom Chi, trazaron las ideas sobre lo que posteriormente pasarían a llevar a la práctica con el equipo de Yahoo! Local, que parece que estaba experimentando dificultades.



Según comenta Kevin en la entrevista, la experiencia fue todo un éxito y el feedback enormemente positivo; tanto que otros equipos y otros proyectos pasaron a utilizar esta técnica.

Antes del uso de comics los equipos tenían bastantes dificultades para seguir complejos documentos de requisitos. Según Bill, con los comics consiguen expresar de una manera muy sencilla y clara los diferentes casos de uso de la aplicacón. Es importante destacar que estos comics se centran en las interacciones del usuario con la aplicación, y no pretenden ser diagramas de bajo nivel.

Personalmente, me ha parecido una idea original, muy en línea con las metodologías ágiles. Parece tener realmente mucho sentidos cuando una historia se tiene que compartir, diseñar, especificar entre diferentes personas, departamentos, etc. Todos sabemos lo que pasa a veces con los documentos de requisitos cuando implican a mucha gente: alguien modifica algo aquí, otro añade algo allá, alguien no ve los cambios de la última versión y al final hemos perdido parte del significado.

Poner todo esto en unas cuantas viñetas es una de esas cosas que las piensas y dices: "vaya, esto realmente debe funcionar". Ahora bien, ¿están las compañías preparadas para adoptar una práctica así o es algo simplemente reservado para reductos de innovación como Yahoo? Eso ya es otra historia.

Por cierto, además de la presentación que he incrustado en esta entrada, también hay disponible un podcast con la entrevista.

» Leer más, comentarios, etc...

Variable not found, 0:1

.Net: TryParse vs. Parse

Septiembre 27th, 2007 - [Enlace local]

Los que vamos evolucionando a la vez que lo hace la plataforma .Net (bueno, unos cuantos pasos por detrás ;-)), a veces se nos hace difícil superar nuestras costumbres y adaptarnos a nuevos métodos o utilidades que, sin duda, vienen para facilitarnos la vida y ofrecen mejores soluciones a problemas comunes que las que utilizamos de forma habitual.

Un ejemplo lo tenemos con los métodos estáticos xxx.Parse(), útiles para convertir de un string a un tipo valor, como puede ser int32 o boolean. Desde el principio de los tiempos usamos, para obtener un entero desde su representación como cadena, construcciones de tipo:

string num = "123";
int i = 0;
try
{
i = int.Parse(num);
}
catch (Exception ex)
{
// TODO: hacer algo...
}

Sin embargo, la llegada de .NET Framework 2.0 supuso la inclusión del método estático TryParse() en la práctica totalidad de tipos primitivos numéricos (en la versión 1.1 sólo existe en el tipo double), cuya forma más simple de utilización (y también más usual) dejaría el bloque try/catch anterior en uno más compacto y legible:

if (!int.TryParse(num, out i))
// TODO: hacer algo...
 
El método TryParse devuelve true si se ha podido realizar la transformación con éxito, dejando en la variable de salida que le indiquemos el valor parseado, en este caso un int.

Sin embargo, además de para evitarnos dolores en las articulaciones de los dedos, existen otros motivos para utilizar xxx.TryParse() en vez de xxx.Parse(): el rendimiento, sobre todo si se prevé que el número de fallos de conversión será relativamente alto en un proceso. De hecho es el método recomendado en la actualidad para realizar estas conversiones.

Según la prueba de rendimiento de TryParse publicada Microsoft, ejecutada sobre su propia plataforma, la utilización de este método aventaja de forma considerable al modelo try-parse-catch. Por ejemplo, realizando varias simulaciones de parsing de enteros sobre un conjunto de 100 cadenas de las cuales 5 son erróneas, el tiempo de proceso llegar a ser mil veces superior usando este último patrón; si asumimos 20 incorrectas (80% de cadenas correctas), el modelo tradicional puede tardar 4.000 veces más que usando TryParse.

Aunque lo normal no es efectuar un gran número de transformaciones de este tipo y esta diferencia de rendimiento podría entenderse despreciable, podría ser un factor a tener en cuenta cuando estas operaciones se realicen en contextos de gran carga de usuarios o concurrencia, como en sitios web de alto tráfico. Ojo pues a esas aplicaciones (o componentes) que hemos tomado de .NET 1.x y estamos reutilizando en las versiones superiores.

Por cierto, todo lo dicho, aunque los ejemplos están codificados en C#, es válido para Visual Basic .NET y cualquier otro lenguaje que compile sobre la plaforma .NET de Microsoft. A ver si un día tengo un rato y compruebo si el comportamiento en Mono es el mismo.

» Leer más, comentarios, etc...

Pwned's blog

Manual de Ensamblador x86 parte II - Directivas

Septiembre 27th, 2007 - [Enlace local]

Manual de Ensamblador x86 parte I - Herramientas

Dando continuidad a esta serie de post sobre el lenguaje ensamblador, ahora veremos las partes que conforman el codigo de un programa en ensamblador.

Bien, lo primero que debe haber en el codigo son las directivas, en estas se hace la declaracion de las variables de datos que utilizaremos y el codigo que contendra los registros, existen 3 tipos de directivas para este lenguaje, una de ellas es obligatoria, mientras que dos son opcionales, estas directivas llevan por nombre:


Directiva data
En esta directiva se hace la declaracion de los elementos que utilizaremos a lo largo de nuestro programa, y que sean declarados con un valor inicial, el nombre de la variable, el tipo de dato y el dato que contendra, por ejemplo:

.section .data
entero:
.int 10



Se puede apreciar en el ejemplo anterior la palabra section y los puntos que proceden a las palabras, bien, la palabra section es utilizada para la declaracion de una directiva, y especificando que directiva es, los puntos al inicio son parte de la sintaxis que se utiliza en las directivas.

En esta directiva se pueden declarar variables de los siguientes tipos:

.ascii = cadena de texto
.asciz = cadena de texto con terminacion nula
.byte = valor de byte
.double = numero de punto flotante de doble precision
.float = numero de punto flotante de precision simple
.int = numero entero de 32 bits
.long = numero entero de 32 bits (mismo que .int)
.octa = numero entero de 16 bytes
.quad = numero entero de 8 bytes
.short = numero entero de 16 bits
.single = numero de punto flotante de precision simple (mismo que .float)
.que = constante

Ejemplo:


.section .data
frase:
.ascii "Hello world"
pi:
.float 3.14159
numeros:
.long 100,150,200,500
alto:
.int 10
factores:
.double 37.45, 45.33, 12.30
palabras:
.asciz "Hello '%s'\n"



Estos tipos de datos pueden ser utilizados en la directiva bss, algunos tipos como .asciz no es importante aprenderlo ahora ya que sera explicado mas adelante en el proceso de compilacion dinamica para utilizar librerias de C con instrucciones de ensamblador.


Directiva bss
En esta parte es donde se declaran los elementos que seran inicializados con un 0, o con valor nulo, en estos tipos de datos es mas comun la declaracion de arrays que se mantendran en areas del buffer que seran utilizadas a lo largo del programa.

Ejemplo:

.section .bss
.lcomm buffer, 12


En ese ejemplo se declara un array con 12 bytes del area del buffer de memoria, como bien se sabe los arrays en su mayoria son utilizados para guardar datos no declarados previamente, es por eso que se utiliza la directiva .lcomm en la seccion bss.


Directiva text
En esta directiva es donde se ubicaran todas las instrucciones del programa, es decir es la parte fundamental del programa, ya que es aqui donde estaran todas las instrucciones en el lenguaje ensamblador.

.section .text
.globl _start
_start:

En ocasiones se hace necesario el uso de una plantilla para utilizarla en todos nuestros programas, en ella deben de estar todas las directivas, asi como los principales registros que utilizaremos.

.section .data
; Variables declaradas con un valor inicial
.section .bss
; Variables declaradas sin valor o nulo
.section .text
.globl _start
_start:
; Instrucciones del programa

La directiva .globl es utilizada sobre la etiqueta _start para que el codigo pueda ser utilizado desde otra aplicacion en forma global, si en dado caso se cambia la etiqueta es necesario especificarla en la compilacion del codigo, que sera mostrado en el siguiente post donde ya se vera el uso de registros y mas sobre el lenguaje ensamblador.

Por ahora es todo.

Saludos.


© Pwned's Blog

» Leer más, comentarios, etc...

Mal Código

Memoria perdida en método inline

Septiembre 27th, 2007 - [Enlace local]

Cierto día estaba yo programando un módulo en un programa de C++. Y casualmente tenía a mi disponibilidad una clase con funcionalidad que me venía muy bien. Esta clase seguía el patrón Singleton, así que obtengo un puntero al objeto Singleton y me dispuse a usarlo. Sorprendido me quede cuando de repente observo un incremento de 50 kilobytes en el tamaño del ejecutable. ¿Como puede ser?. En ese

» Leer más, comentarios, etc...

Una sinfonía en C#

Smart Clients Connection Monitor

Septiembre 27th, 2007 - [Enlace local]

La semana pasada tuve la oportunidad de asistir a una charla informativa en el paseo "La Plaza" en Buenos Aires acerca de las nuevas tecnologías de Microsoft. Si bien los temas eran más bien conocidos el nivel de los presentadores no podría haber sido mejor: Matías Wolosky, Diego Gonzalez, Rodolfo Finochietti, Angel "Java" Lopez y Martín

» Leer más, comentarios, etc...

Ingenieria de Software / Software Engineering

Comunidad MoproSoft

Septiembre 27th, 2007 - [Enlace local]

Me da gusto saber que se ha abierto un espacio para MoproSoft en lo personal tengo mucha fe que este modelo de proceso hecho en México tome fuerza tanto nacional como internacional, después de la noticia del cierre de AMCIS, Comunidad MoproSoft es un buen paso para retomar el camino.

» Leer más, comentarios, etc...

MadeInFlex

Flex VoIP con Ribbit Phone

Septiembre 27th, 2007 - [Enlace local]

Ribbit phone es un componente Flex que permite recibir y realizar llamadas telefónicas, grabar, enviar y recibir mensajes de voz y gestionar contactos, todo sin salir del navegador y gracias al Flash Player 9.
El componente todavía no ha salido a la luz. De momento hay una pre-release privada en testeo, pero se espera una beta pública en algún momento durante este Octubre. Finalmente el componente será gratuito para desarrolladores, así que todas nuestras RIAs podrán disponer de esta funcionalidad si lo deseamos. Sin duda esto abre un nuevo mundo de posibilidades para nuestras aplicaciones.

En la web de Ribbit hay información acerca de los detalles:

» Leer más, comentarios, etc...

Navegapolis

El "Gantt" ágil

Septiembre 27th, 2007 - [Enlace local]

graficoEn la gestión predictiva, la "bola de cristal" con visión global de proyecto es el diagrama de Gantt. ¿Y en la gestión ágil?.
El modelo ortodoxo de Scrum trabaja con el Gráfico Burn-Down, pero es una bola de cristal que alumbra con "cortas": sólo al sprint actual.  Para vaticinar el proyecto "con largas", apuntando más lejos en la dirección de la visión del cliente, es muy útil el gráfico Burn-Up.
 

» Leer más, comentarios, etc...