miguel jimenez en español // MVP C#

El contenido de este blog y el RSS han sido migrados a http://feeds.feedburner.com/migueljimenez por lo que sería conveniente que actualizaseis vuestros agregadores si deseais seguir accediendo al nuevo contenido que se esta publicando en www.migueljimenez.net

Un saludo, y gracias por vuestra atención.

Miguel

 

Hola chicos, bueno... con este post simplemente quiero despedirme de esta comunidad. He tomado la decision de no mantener más de un blog, y de no usar el castellano como idioma para expresarame en la red. Por ello, y con la intención de no consumir recursos que no utilizo, el presente blog dejara de ser actualizado. Ha sido un tiempo agradable aquí, y queda muy buena gente que sigue aportando contenido interesante.

Rodrigo decidira si quiere borrar o no el contenido actual, personalmente no me importa, pues sigo teniendolo almacenado en el blog ingles.

Por el momento, podeis seguirme en http://blogs.clearscreen.com o http://www.migueljimenez.net .... y digo "por el momento" porque no tengo nada claro que quiera seguir escribiendo (lo poco que ya escribo) porque roba mucho tiempo personal, que en estos momentos prefiero dedicar a vivir el mundo.

 

Un saludo a todos y gracias por el tiempo.

Migs.

A punto de partir hacia Las Vegas para el MIX'07 y con la posibilidad de realizar una entrevista a Scott Guthrie, me gustaría aplicar el contexto del programa televisivo del titulo del post, sobre todo conocido en España, donde ciudadanos pregunta a su presidente del gobierno.

Pues la idea es la siguiente, dentro de mi entrevista ya tengo preguntas de diversos tipos, pero os gustaría preguntar algo concreto a Scott Gu, algo que os causa mucha curiosidad tecnica o profesional?

Si así es, ya sabeis... apuntadlo en los comentarios de este post y las tendre en cuenta al realizar la entrevista.

Gracias a todos.

Un último post hoy para decir que estaré en el MIX'07 este año con un par de amigos de España, el ganador del concurso de gadgets y lideres/influenciadores de las comunidades Europeas (sigo diciendo que soy Europeo y creo en Europa). Será mi primera visita a la Ciudad del Pecado, así que espero regresar enterito :)

http://www.visitmix.com

Y despues de eso, pasaré unos dias en Londres visitando al Chico Maravillas y desmadrando un rato en unos conciertillos por allí.

Seguimos con el primer concurso de gadgets celebrado en España, organizado por el Madrid .NET User Group con el apoyo de mucha gente y empresas. Se aún no te habias enterado, date una vuelta por http://gadgetizate.madriddotnet.com

Y bueno, creo que ya es hora de contar algunas de las ideas que tengo para desarrollar gadgets. Estas ideas eran privadas y pensé desarrollarlas yo mismo, pero como casi todos sabreis, estoy taan taaaaan ocupado que no he tenido tiempo ni tan siquiera de escribirlas. Así que aquí van, sentiros libres de desarrollar cualquiera de ellas y aprovechad la oportunidad para visitar Las Vegas:

  • Un gestor de descargas, integrado con Internet Explorer, que haga uso del API de BITS integrado en XP y Vista
  • Un gadget que informe del estado de la nieve y las pistas en tus estaciones favoritas
  • Un gadget que gestione una lista de frases personales que se puedan usar en MSN Messenger y que disponga de algunos botones para cambiar tu "estado de animo" y seleccion la frase que ha de poner automaticamente en el messenger
  • Un monitor de Technorati que mantenga el rastro de cuando tu blog o blogs sean linkados desde otros blogs
  • Un gadget que monitorize tus sitios web y te avise cuando alguno de ellos se caiga o este inaccesible
  • Un gadget que recopile información estadistica de tus sitios web a través de Alex o las estadisticas personales de tu web (logs de IIS, awstats, etc) y mantenga una gráfica chula de como se comportan tus webs
  • Un monitor de Google AdSense que te diga como se comportan tus ingresos por publicidad
  • Un visor de videos de YouTube/SoapBox, donde puedas buscar o poner un codigo de video y verlo directamente en una ventana de flyout
  • Un visor de tu lista de Grupos de la Semana en Last.fm que te recomiende nuevas canciones que escuchar y tu lista personal de bandas

Tengo un par de ideas más, pero estas me las guardo porque me molan mucho mucho :)

Espero que os guste esta lista y sentiros, como dije antes, totalmente libres de crear cualquiera de ellos... simplemente escribidme una linea en el readme o la ayuda del gadget jiji

Publicado 9/3/2007 13:18 por Miguel Jimenez | 2 comment(s)
Archivado en: ,

Una nota rapida, saliendo de mi modo busy busy, para decir que estaré la próxima semana en Seattle en el Global MVP Summit 2007. Si te interesa charlar un rato, tomar unas cañas o cualquier otra cosa, simplemente dilo.

De todas formas estaré, con muchos amigos de España y Europa (porque yo soy Europeo y creo en Europa), en la fiesta de Jeffrey Palermo... si eres MVP y no has escuchado nada de la fiesta aún, leete esto y vente con nosotros el próximo domingo.

Estamos celebrando un concurso en el contexto del Madrid .NET User Group que puede llevarte a Las Vegas con tu Gadget para Windows Vista.

Las reglas son sencillas. Crea un gadget para la Sidebar de Windows Vista y envialo al concurso. El concurso se celebra desde el 16 de Febrero al 29 de Marzo. Los ganadores se anunciarán en el Developers Days 2007, el 29 de Marzo, en Madrid. Puedes enviar tantos gadgets como quieras, el único requisito es que vivas en España.

Tenemos un primer premio impresionante que consiste en un viaje a Las Vegas para asistir al Mix'07 y pasar 5 dias allí con todod los chicos e influenciadores de EMEA. El viaje incluye un vuelo especial organizado por Microsoft y que parte desde Londres, te llevaremos allí y podras pasar 5 días con algunas de las personas más interesantes e inteligentes del mundo. El premio incluye vuelo, alojamiento y entrada al evento; y creo que se incluye un vuelo en helicoptero por el Gran Cañon del Colorado :-)

El resto de premios son una XBox 360, un smartphone, 30 libros de desarrollo en castellano, 3 suscripciones a la revista DotNetMania y licencias de software de JetBrains, RedGate y ComponentOne.

Para dar las mismas oportunidades a todos (los gandores serán elegidos por los vistantes del sitio web; votarán cuales son los mejores gadgets) la web esta publicada actualmente con un banner que cuenta un poco del concurso, y la pagina de envio de gadgets y galería abrirá el próximo lunes. Así que teneis todo el fin de semana para preparar el primer gadget.

Check it out at http://gadgetizate.madriddotnet.com

Podeis redistribuir esta nota y las imagenes adjuntas tan lejos como querais. Hacedle publicicidad si os apetece.

Me gustaría dar las gracias a todas las personas que han hecho esto posible, gente que ha proporcionado el dinero y los premios que necesitabamos para hacer el concurso: Scott Guthrie y Ray Winninger del MIX'07; David Stennett de JetBrains; Rachel Hawley de RedGate; Catherine Geiger de ComponentOne; Susana Krahe y Juan Miguel Asensio de Anaya Multimedia; Paco Marín de DotNetMania; Chema Alonso de Informática 64; Agustín Rodriguez de Ilitia Technologies; y finalmente, Alfonso Rodriguez y David Carmona de MSDN España. Además, por supuesto, al resto de coordinadores del Madrid .NET User Group por colaborar y proponer esta idea: David Herraiz, Daniel de Andres y Jesús Jiménez. Gracias a todos, haceis esto posible: alrededor de 12.000 EUR in premios!!!!!!

 

Un simple nota para recordarme a mí mismo. Siempre olvido como averiguar que proceso svchost.exe es el host de un servicio que necesito depurar. Es bastante sencillo, desde una línea de comandos simplemente escribe:

tasklist /svc

Y se obtendrá una lista de todos los hosts de servicios en ejecución, con una vista detallada de que servicios contiene cada host y el id de proceso asociado al mismo. Una forma rápida y sencilla de depurar si conocemos el id de proceso.

He estado algo liado preparando el catálogo de formación para este año en Ilitia. Tenia que preparar un pequeño folleto en A4 para entregar en eventos y clientes, y decidí darle una oportunidad a Microsoft Expression Design. Así que descargué e instale la ultima CTP en mi portatil con Vista. Todo funcionó perfectamente.

La herramimenta parece mucho más elaborada que en anteriores versiones y se ejecutó perfectamente mientras estaba diseñando este folleto. Aun  así, me he dado cuenta que algunas tareas son mas complicadas u oculutas que en otras suites de diseño (Freehand, Corel  Draw, Illustrator or Fireworks):

  • Me llevo un buen rato averiguar como crear texto dentro de una figura (un rectangulo en mi caso) porque se llama Adapt Text To Path. Para mí eso significa dibujar un trazo y hacer que tu texto vaya sobre el mismo, adaptandose a él. Esto estaba bastante escondido.
  • Aunque parece posible exportar a formato EPS, no esta disponible nada que permita importar ficheros EPS. Para mí esto es un requisito!
  • Un error un tanto extraño hizo que se colgase toda la aplicación y perdiese todos los datos cuando usaba la herramietna de cuentagotas para coger un color de la pantalla. No he sido capaz de reproducirlo.
  • La exportación a PDF tiene algunos errores... si tienes capas de texto (adaptado a trazos) sobre capas de figuras, no se muestra el texto en la rasterización del PDF. Para arreglar esto tuve que convertir todo el texto a trazos (objetos) y después exportar a PDF.
  • Las herramientas de relleno no son intuitivas. Necesite algun tiempo para averiguar como crear un degradado en una figura.
  • La herramienta de relleno con texturas no parece completa, no hay muchos patrones entre los que elegir como texturas y me refeiro a patrones bastante usados como puntos, mallas o lineas.

De todas formas creo que esta herramienta tendrá un gran potencial, porque parece estar madurando. No se cuando esta previsto que se lanze al mercado pero intentaré proporcionar este feedback a Microsoft, a ver si es algo que puedan mejorar. Así es como se veia el Expression mientras diseñaba el folleto que he linkado antes:

Denis van der Stelt me ha marcado con un tag. Sabía que esto iba a alcanzarme tarde o temprano, así que como todo el mundo esta jugando vamos a dejar que siga creciendo. Esta es la lista de las cinco cosas que probablemente no sepaís acerca de mí:

  1. Cuando era joven solí tocar en una banda municipal. Era ese tipo de bandas que van por ahí en Semana Santa o las fiestas del pueblo. He tocado varios instrumentos y el último de ellos era el trombón de vara :)
  2. Algunos creo que ya saben esto, y de hecho, han visto mi reacción cuando me expongo a un Pato. No me gustan; la gente suele decir pobre patito, pobre patito pero a mí me dan miedo. Cuando era pequeño tuve una encontronazo con uno de esos agresivos animales; o mejor dicho, el pato me atacaba mientras yo corría y lloraba.
  3. Me gusta cocinar, me encanta hacerlo. Me invento casi todo lo que cocino. Me suelo hacer la comida que como y la llevo también a la oficina para comer al mediodía. Me encataría encontrar un escuela de cocina aquí en Madrid donde pudiese aprender las técnicas apropiadas para mejorar. Aún así, estoy contento con el resultado, y mucha gente siente curiosidad sobre como y cuando aprendi: es simplemente cuestión de tiempo, desde que era niño he sido el mayor de tres hermanos y la mayor parte del tiempo me encargaba de la comida cuando mi madre estaba fuera. Así que aprendí a que me gustase.
  4. Una de mis pasiones es el diseño gráfico, la música y la programación. Para mí, todas ellas son expresiones de arte; formas de expresarse. Me considero bueno en todas ellas, pero soy más productivo con el código, despues el diseño y despues la música. Cuando la gente vé otras cosas que hago, no relacionadas con el código, se asombran porque no entienden como puedo hacerlo. Es sencillo, en la tierna adolescencia me uni a un grupo español de demos llamado Polygon y empezamos a crear rutinas gráficas, musica y diseños que se sincronizaban juntos. Este es el motivo porque el que mi ojos estan educados para el diseño y la fotografia, mis oidos para la música y mi cerebro para el código. Si tienes curiosidad al respecto, echale un vistazo a http://www.demoscene.org
  5. Y relacionado con la ultima, tras un par de años viviendo en Madrid, trabajé alrededor de 6 meses como "cool hunter" o "cazador de tendencias" ... simplemente andaba por las calles con una camara de fotos y una libreta; tomaba notas y fotografiaba todo aquello que me resultase interesante y llamativo en relación con la moda, arte de la calle, eventos o cualquier cosa similar que pudiese ser una futura tendencia. Cuando estaba a punto de terminar el informe, me robaron la camara mientras comia en un Vips con mis amigos Kelly y Alex; perdí todas las fotos del rollo que habia en la cámara. Y gracias a este interes por las formas de arte callejero, me suelo involucrar en movimientos de flashmobs o freehugs (podeis intentar cazarme por las calles de Madrid haciendolo)

Y ahora, vamos a salpicar un poquito a la comunidad española... Pongo un tag a David Carmona, Rodrigro Corral, David Salgado, Ricardo Varela y Pablo Pelaez

Publicado 3/1/2007 21:51 por Miguel Jimenez | 12 comment(s)
Archivado en: ,

 

Es simplemente una buena forma de comenzar el nuevo año. Anoche salí de fiesta para celebrar el nuevo año. Me acosté realmente tarde, sobre las 10 de la mañana. Me levanté hace un par de horas. Y  lo primero que veo en mi correo en 2007 dice:

Felicidades! Es para nosotros un honor nombrarle MVP de Microsoft® 2007.

Así que parece que mis actividades en la comunidad durante 2006 han sido suficientes para que Microsoft me renueve mi posición de MVP. Ojalá todos los años empezasen así, con una buena noticia que simplemente diga "hola nuevo año"

Divertios y pasad un feliz new Thread(2007).Start();

Publicado 1/1/2007 22:30 por Miguel Jimenez | 18 comment(s)
Archivado en: ,

Para aquellos que no esten al tanto de esta historía, Microsoft y AMD han decidido regalar 2000 portatiles Ferrari de gama alta precargados con Windows Vista a bloggers e influenciadores, algunos incluso un Media Center. Gratis. Debe molar si eres uno de los bloggers seleccionados. Pero rapidamente ha empezado a chirriar y rugir por la blogoesfera, tan pronto como se anuncio.

Algunos piensan que se merecían un portatil gratis, mientras otros ni siquiera dijeron que fue un regalo de Microsoft. Algunos más comenzaron a hablar sobre Microsoft comprando opiniones sobre Vista, y lectores empezarón a atacar a bloggers acusuandoles de no ser objetivos en sus opiniones porque habian sido "comprados" por Microsoft.

Guauuu! Esto esta totalmente fuera de sus casillas.

Microsoft siempre ha obsequiado a colaboradores e influenciadores, sino echad un vistazo a los programas de MVP o Regional Directors. Mucha gente participó en el programa Beta de Windows Vista, y se esponsorizarón licencias gratuitas para algunos de los que más bugs habian reportado. No es cuestión de comprar buenas opiniones. Es más bien cuestión de proporcionar un entorno de pruebas donde obtener la mejor experiencia de Vista de forma que te puedas expresar libremente acerca de la experiencia de usuario real. Por supuesto, si you tuviese que elegir gente para que evaluase Vista de la mejor forma posible, los elegidos serían las personas más influyentes de la comundidad en Windows Vista.

Pienso que toda esta historia no es demasiado importante o relevante como para llegar a estos extremos... parece más como un poco de pelusa de todos aquellos que no han recibido un portatil (y yo no lo he recibido, que conste)... no creo que alguien cambien su objetividad por esto, o dejarias que tu ética se balancease por un regalo de este tipo?

Personalmente, mi ética u objetividad nunca se ha visto afectada, ni cuando he hablado en eventos de Microsoft, blogeado sobre sus productos, escrito sobre sus bugs, productividad o cualquier otro tema relacionado... Creo que el punto principal que Microsoft busca cuando crea comunidad es encontrar gente que sea capaz de hablar coherentemente de la experiencia con sus productos, no alguien a quien se pueda comprar con un regalo.

Publicado 29/12/2006 16:28 por Miguel Jimenez | 1 comment(s)
Archivado en:

El próximo año esta comenzado con un mes realmente activo. Esta es la lista de eventos que tengo programados, así que si vives en alguna de las ciudades que visitaré (o alrededores) y estas interesado en charlar un rato, no dudes en contactar conmigo para tomar unas cañas ;) También estoy interesado en conocer a gente en Tenerife que desee unirse a INETA y formar un grupo de usuarios de .NET en aquellas tierras...

Actualmente, los eventos programados son:

  • C# 3.0 Language Features // Madrid .NET User Group, 18 de Enero de 2007

Introducción de Extension Methods, Query Languages, Lambda Expressions y las nuevas novedades de lenguaje de C# 3.0. Más detalles y registro en http://www.madriddotnet.com

  • C# 3.0 Language Features // .NET User Group Galicia, Coruña, January, 19th 2007

Primera reunion del .NET User Group Galicia, y yo estaré por allí presentando Extension Methods, Query Languages, Lambda Expressions y resto de novedades de lenguaje para C# 3.0. Más detalles y registro en http://www.nugg.es

  • LOVE Tour: Windows Workflow and Windows Communication Foundation // Tenerife, 23 de Enero de 2007

Sigo colaborando con MSDN presentando el .NET Framework 3.0 en las principales ciudades de España. Esta vez estaré en Tenerife (Islas Canarias) presentando Windows Workflow y Windows Communication Foundation. Más detalles y registro en http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032312578&Culture=es-ES

  • LOVE Tour: Windows Presentation Foundation // Málaga, 25 de Enero de 2007

Sigo colaborando con MSDN presentando el .NET Framework 3.0 en las principales ciudades de España. Esta vez estare en Málaga, directamente desde Tenerife, presentando las mejoras en interfaz de usuario de Windows Presentation Foundation. Más detalles y registro en http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032312580&Culture=es-ES

Y para Febrero, más!!

Publicado 28/12/2006 14:30 por Miguel Jimenez | con no comments
Archivado en: ,,,,

Hace un par de dias mi amigo Ricardo Varela comenzo a bloggear en español (en paralelo con su actual blog en inglés). Miembro activo de comunidades Microsoft, trabaja actualmente en Google UK. Pero lo relevante es que en su nuevo blog ha comenzado con un post con algo de acertijos de programación, volviendo a lo básico, a los principios del desarrollo. Esto va a ser divertido.

Bein, esta es mi respuesta a su post. Habia tres preguntas relacionadas con estructuras de datos y modos de pensar alternativos sobre como dar la vuelta a las cosas.

 

  • Sabes dar la vuelta a una cadena de texto? Por ejemplo, si tienes "abc" la cadena de retorno debería ser "cba"

Esto parecía bastante sencillo. En C# cadena se representa como un array de caracteres, por tanto puedes usar el indexador para obtener el caracter de una posición y darles la vuelta "manualmente" con algo como:

string inputString = "abc"; string reversedString = string.Empty; for (int c = inputString.Length; c > 0; c--) { reversedString += inputString[c - 1]; } Console.WriteLine("Original String: " + inputString); Console.WriteLine("Reversed String: " + reversedString);

O puedes usar la funcionalidad del framework de .NET para hacerlo de manera mas "elegante":

char[] chars = inputString.ToCharArray(); Array.Reverse(chars); // Use the reversed array of chars
  • Un poco más profundo en estructuras de datos,  sabrías dar la vuela a los bits de un byte? Por ejemplo, si tenemos 1 el byte de retorno debería ser 128

Debo admitir que esta ha sido dificil. Aunque tengo perfectamente claro los conceptos de bits, bytes y operaciones bitwise, el lenguaje C# no ofrece una manera sencilla y estructurada de acceder a esos elementos fundamentales de las estructuras de datos. Finalmente consegui hacerlo. La estructura de datos más pequeña disponible para representar el interior de un byte que he encontrado es un simple byteMusic, así que solo queda rellenarlo coon los valroes para cada byte:

static byte[] getBits(byte inputByte) { byte[] bits = new byte[8]; for (int p = 0; p < 8; p++) { bits[7 - p] = (byte)(1 & (inputByte >> p)); } return bits; }

Sencillo? Vale, lo explico un poco... el operador bitwise >> simplemente desplaza los bits del byte hacia la derecha, así que si desplazamos 01010101 una posición a la derecha obtenemos 00101010... después una simple operacion AND logica con la máscara 00000001 para determinar si el bit esta marcado. Almaceno el estado de cada bit en el array de salida y lo devuelvo. Como nota rápida, el array de bits se puede obtener dado la vuelta directamente si cambio la linea dentro del bucle for a:

bits[p] = (byte)(1 & (inputByte >> p));

Pero unos métodos genericos para convertir entre byte y bits suena un poco mejor, así que no lo he incluido directamente en ese método. Una vez que tenemos el array, es sencillo darle la vuelta con los métodos mostrados anteriormente para las cadenas:

Array.Reverse(bits);

Y ahora, solo tenemos que ser capaces de convertir el array de bits de vuela a un byte:

static byte setBits(byte[] bits) { byte obyte = bits[0]; for (int p = 1; p < 8; p++) { obyte = (byte)((obyte << 1) + bits[p]); } return obyte; }

El método es similar al usado para extraer los bits, pero esta vez el operador bitwise << desplaza los bits a la izquierda, de forma que puedo incrementar el número hasta que alcanza el valor marcado. Un sencillo programa para probar como funciona podria ser:

byte inputByte = 1; byte outputByte = 0; byte[] bits = getBits(inputByte); Array.Reverse(bits); outputByte = setBits(bits); Console.WriteLine("Input Byte: " + inputByte); Console.WriteLine("Reversed Byte: " + outputByte);
  • Y la más compleja. Los números de coma flotante se representan habitualmente con el estándar IEEE 754, serías capaz de dar la vuela a los bits de un numero en coma flotante? Por ejemplo, si tenemos 118.625f la salida debería ser -17180580000f

Wow! Esta era realmente complicada. No conocia el funcionamiento del estandar IEEE 754 así que me lo he leído en la wikipedia (la página de este estandar en el IEEE está en revisión y no había información disponible) y parece que es relativamente sencillo. La representación en coma flotate es una estructura de datos de 32bits con la siguiente información: 

Ahora me parece algo más sencillo. Simplemente hemos de dar la vuelta a los bits, en C# los dos tipos de coma flotante son float y double, el primero para almacenar con precisión de 32bits y el segundo con 64bits; el problema es que estos tipos no permiten operaciones bitwise, y necesito crear algun método nuevo basado en la clase BitConverter.

Es probable que esto se pueda refactorizar para que solo un par de métodos resuelvan todas las necesidades de operaciones con bits, pero el objetivo era dar la vuelta a un numero en coma flotante, así que alla vamos:

static byte[] getFloatingBits(double input) { byte[] bytes = BitConverter.GetBytes(input); if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); } byte[] bits = new byte[64]; for (int i = 0; i < 8; i++) { Array.Copy(getBits(bytesIdea), 0, bits, i * 8, 8); } return bits; }

Explico el método un poco... El tipo float se puede dividir en 4 bytes y el método BitConverter.GetBytes nos da un array de esos bytes, pero desafortunadamente no incluye un método que nos permita reconvertir dicho array en un float, así que uso el tipo double y casting :(

La lógica es muy sencilla, extraemos los 8 bytes de la doble precisión de coma flotante. Despues, verificamos si el procesador es LittleEndian y en ese caso damos la vuelta a los bytes para reflejar el verdadero valor. Copiamos todo a un array de bits, y ya estamos. Ahora solo nos queda dar la vuelta al array de bits:

Array.Reverse(bits);

Y volver al método que nos permite invertir el proceso para obtener un número de coma flotante a partir de un array de bits:

static double setFloatingBits(byte[] bits) { byte[] bytes = new byte[8]; for (int i = 0; i < 8; i++) { byte[] actualByte = new byte[8]; Array.Copy(bits, i * 8, actualByte, 0, 8); bytesIdea = setBits(actualByte); } if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); } return BitConverter.ToDouble(bytes, 0); }

El problema es que el número esperado no coincide con el resultado obtenido con este método para dar la vuelta al array de bits completo. De hecho, he releido la pregunta y dice "eres capaz de dar la vuelta al orden de bits de exponente y mantisa?" ... He hecho exactamente eso también, cambiar los bits solo de mantisa y exponente, obteniendo los siguientes arrays de bits:

Original: 0 10000000 10111011010100000000000 Reversed: 0 00000001 00000000000101011011101 Expected: 1 10000100 00100000000000000101011

Pero el numero que hemos dado la vuelta no representa el que Ricardo indicaba en su post. Que estoy haciendo mal? Hay algo mal en mi modo de afrontar el problema o el número experado es inncorrecto? Tengo bastante curiosidad sobre porque hay un bit menos (como 1) en el numero esperado y como se ha cambiado el signo.

Este año esta dando sus ultimos coletazos. Para mi ha sido un año divertido y activo, tanto personal como profesionalmente. Espero que hayais conseguido lo que esperabais de él.

Os deseo una feliz navidad y que empeceis el próximo 2007 llenos de energía y logros.

Pasadlo bien estas vacaciones!!

Publicado 25/12/2006 20:50 por Miguel Jimenez | con no comments
Archivado en:

Por fin se ha publicado. Ayer. Así que si instalaste el Service Pack 1 de Visual Studio 2005 en una máquina con Windows Vista ya puedes eliminar ese molesto popup que salta en tu cara cada vez que inicias el IDE. Este parche pretende minimizar el impacto de los "problemas" de ejecutar Visual Studio 2005 sobre Windows Vista.

Corre, ve y descargalo de http://www.microsoft.com/downloads/details.aspx?FamilyID=fb6bb56a-10b7-4c05-b81c-5863284503cf&DisplayLang=en

Yo ya lo he descargado e instalado. Y la verdad, estoy deseando ver las mejoras que ha incluido en mi Visual Studio 2005 y sobre todo en Team Explorer, Team System y Team Foundation Server (que también han sido agraciados con este service pack)

Ayer por la tarde decidi salir y pillarme una Xbox 360. Era un poco reticente de comprar esta consola porque soy un fan aferrimo de PS2 a consecuencia de la serie Final Fantasy. De cualquier forma, ahroa estoy empezando con la 360, pero actualmente solo tengo un juego: Splinter Cell Double Agent.

Cosas que me han encantado de mi primera eXperiencia: el interfaz de usuario, las opciones de Xbox live, las capacidades de media center y la forma en que mi Vista Ultimate detecto la 360 y la configuró como extensión. También me encanta la posibilidad de crear cosas con XNA desde mi ordenador y poder ejecutarlas en la X; veremos si esto resulta ser una buena idea ;)

Cosas que no me gustaron tanto: hay algun motivo especial para que la fuente de alimentación sea externa y tan tan grande??

Si también estas en el lado 360 de la vida, juguemos un rato a algo. Mi gamertag es:

Migs212

 

PD: Sunday Geek es una categoría en la que postear las cosas que alguienunpocogeek hace un Domingo típico.

Estaba leyendo un post de Perci Reyes, inspirado en un post sobre como comprender el código en Coding Horror. Después de leerlo, junto a todos los articulos relacionados (lo que piensa Joel y el post de Peter Hallam), creo que tengo algo que añadir y que parece no importar a nadie...

En primer lugar, estoy deacuerdo con los autores sobre las estadisticas presentadas de las actividades de un desarrollador... y quizás sea cierto que empleamos mucho tiempo en comprender código existente. Por defecto, los programadores somos tan narcisistas que necesitamos sentir que hemos creado algo, y somos propensos a cambiar cualquier cosas que no comprendamos a una solución más apropiada y personal, siempre bajo nuestro punto de vista. Todo el mundo parece discutir acerca de este narcisismo y los programadores deseando reescribir código en lugar de comprenderlo, pero yo tengo algunas dudas sobre si es un problema de los desarrolladores o del código en sí...

Es decir, es el código demasiado complejo para comprenderlo? Puede que lo sea. Personalmente he visto miles de lineas de código imposibles de seguir y comprender porque la arquitectura elegida, las capas de negocio o datos, el modelo de presentación o incluso la capa de UI no estaban diseñadas de manera correcta o ni siquiera existian. Esto añade mucha complejidad, pero debeis admitir que no esta relacionado con el desarrollador que modifica ese código. Es el propio código. Ese código fue escrito por un desarrollador que lo pensó como la mejor solución a un problema de negocio (o quizás era la mejor solución posible que podia implementarse con determinadas restricciones del proyecto, solución o el propio desarrollador; o quizás debido a una falta de experiencia o conocimiento del desarrollador que escribió el código)

Supongo que un equipo de desarrollo que trabaja en una solución lo hace de la mejor manera posible, usando patrones conocidos, desacoplando el código e interfaz de usuario, y refactorizando clases y métodos. Siguiendo algunas sencillas reglas deberiamos ser capaces de no encontrar cosas como un metodo con 400 líneas o una clase con un único método de 2000 líneas de código. Y prometo que este tipo de código existe, lo he visto muchas veces.

En ese caso, yo probablemente cambiaría y reescribiría el código que "huele". No porque lo prefiera hecho por mí, sino porque esta falta de diseño nos conduce a la locura y descontrol durante el desarrollo; pero lo más importante, sino se corrige frustrará el trabajo de futuros desarrolladores que tengan que mantenerlo o extenderlo.

Mi opinión acerca del hilo de posts es que simplemente hay que tener en cuenta que los desarrolladores somos narcisistas pero también somos capaces de leer código que sea comprensible. El problema para mi es la introducción de software mal diseñado, que desgraciadamente se puede encontrar por todos lados. Necesitamos tener en mente que cualquier pieza de código que desarrollemos se pondrá en producción en algún momento, y será mantenida o soportada por un equipo de desarrolladores (probablemente distinto al que lo desarrollo) que necesitará comprenderla.

Mi consejo personal es (y esto es lo que yo hago cuando escribo código en cualquier proyecto) que cada desarrollador ahí fuera debería escribir codigo de la mejor forma posible pero siempre haciendolo perfectamente legible y comprensible. El código debe hablar por sí mismo, no a través de comentarios añadidos para comprenderlo, y debe ser refactorizado y simplificado hasta que sea legible por simples humanos. No es tan dificil. Hay muchas prácticas que permiten conseguir este objetivo y además, bajo mi punto de vista, hacernos mejores desarrolladores; pero mi frase favorita es:

"si sientes la necesidad de añadir un comentario, simplemente refactorizalo para que el comentario sea supérfluo. de esta forma tu código será más simple y facil de comprender"

Simplemente una nota rápida para destacar el primer evento de Artalde, el recientemente creado grupo de usuarios de .NET de Bilbao. El evento tendrá lugar este Miercoles, 13 de Diciembre en la Universidad de Deusto. Participaré en el evento, junto a Oscar Alvarez de Ibermática, hablando sobre Windows Communication Foundation.

Si esta por la zona, no dudes en pasarte y charlar un rato con nosotros.

Visita la pagina de registro del evento en MSDN Events

 

Por cierto... este miercoles va a ser un día movidito en la escena de grupos españoles, porque la gente de NavarraDotNet, el también reciente grupod de usuarios dde .NET de Pamplona, celebran su primer evento público con Chema Alonso de Informatica64 hablando sobre Desarrolladores y Seguridad. Visita la pagina de resgistro en MSDN Events

Publicado 11/12/2006 11:24 por Miguel Jimenez | 1 comment(s)
Archivado en: ,,

Mucha gente me pregunta sobre el porcentaje que aparece en el nickname de mi messenger. Algunos incluso piensan que es el estado de completitud de cualquiera de los proyectos en los que estoy involucrado, e incluso se preguntan como seré capaz de medirlo tan precisamente.

De hecho, este porcentaje (actualmente el 63,78%) no esta relacionado con la tecnología, sino con la naturaleza. Es el nivel de agua de los pantanos y embalses de Madrid. He estado monitorizandolo durante las ultimas 5 o 6 semanas. Diariamente. Voy a la página del distribuidor de agua y lo compruebo manualmente. Realmente me ha sorprendido como hemos pasado de un triste 27% a los indices actuales en periodo tan corto de tiempo. Impresionante. Y por supuesto, bienvenido!

Pero esta tarea es aburrida. Muy aburrida. Lo queria directamente en mi escritorio. Por tanto, este parece un escenari perfecto para que el Inspector Gadget juegue con Windows Vista!!!

Primero necesitamos una pagina Html sencilla que albergue el código de nuestro gadget. Es simplemente javascript + html, también conocido como el famoso dhtml. Después necesitamos un iconoito que poner en la librería de Gadgets y por supuesto una buena cantidad de intervalos de javascript, json, webservices, xml y parsers de xsl para obtener los datos.

Consegui acceso a un servicio web que proporciona el nivel de agua embalsada de Madrid y escribí el código para incrustarlo en un gadget, lo arrastre a mi Sidebar y voilá! ya esta haciendo el trabajo sucio por mi.

Si sientes curiosidad sobre como esta hecho, descarga el Agua Gadget e inspecciona el código. Aún es muy sencillo. Tengo intención de actualizarlo para que soporte settings, unos gráficos mejores y que sea capaz de monitorizar más areas de España (mi conocimiento actual acerca de la distribución de agua esta limitado a España, pero si conoces alguan fuente de datos en tu región, no dudes en contactar conmigo y estaré encantado de añadirla)

Descarga Agua Gadget 0.1 para Windows Vista. Para instalarlo, simplemente descomprime el zip y haz doble click sobre el fichero .gadget y Windows Vista lo instalará por ti :)

Puedes encontrar mas información sobre la creación de gadgets en este tutorial paso a paso y más info aún en la referencia online del System.Gadget namespace.

Más artículos Página siguiente >