Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
Mostrando entradas con la etiqueta blogging. Mostrar todas las entradas
Mostrando entradas con la etiqueta blogging. Mostrar todas las entradas
jueves, 26 de julio de 2012
MallorcaComo todos los años por estas fechas, me complace enormemente informaros de que este blog, y todo lo que le rodea, estará cerrado por vacaciones.

Hasta el próximo mes de Septiembre soltaré el timón de Variable not found y lo dejaré a la deriva, hasta que vuelva con energías renovadas y ánimos para afrontar el próximo año con la misma ilusión y dedicación que siempre.

En cuanto a los planes veraniegos, este año no voy a poder disfrutar de todo el tiempo libre que me merezco gustaría; afortunadamente (y digo afortunadamente, con la que está cayendo) tengo bastante trabajo y estaré liado prácticamente todo el verano.

Pero aún así, tendremos tiempo de hacer una nueva escapada a Mallorca, donde ya estuvimos el año pasado y estamos deseando repetir, y seguro que alguna que otra visita fugaz a playas cercanas de Cádiz y Huelva.

Nos vemos en unas semanillas :-)

¡Felices vacaciones, amigos!
miércoles, 9 de mayo de 2012
6 años 6“De hoy no pasa”. Era 8 de mayo de 2006; aunque no puedo recordarlo, seguro que estuve toda la jornada trabajando con mi flamante Visual Studio 2005 en algún proyecto basado en un primitivo ASP.NET.

Lo que sí sé es que al llegar a casa inicié Windows XP, abrí Internet Explorer 6 y navegué hacia blogger.com con la intención de crear un blog. No tenía grandes aspiraciones, pero estaba seguro de que la travesía iba a ser larga.

martes, 3 de enero de 2012
image
Las tradiciones están para cumplirlas. Y casi desde el principio de los tiempos, el primer artículo del año está reservado a hacer un análisis retrospectivo y ver qué posts son los que más han llamado vuestra atención durante los 365 días que hemos dejado atrás, así que ya sabéis lo que toca ahora ;-)

Pero antes de nada, aprovechando la inauguración oficial del 2012 en el blog, desearos a todos un feliz año 2012, y que podáis disfrutarlo con salud, buena compañía, y prosperidad.

viernes, 23 de diciembre de 2011
Feliz NavidadDesearos a todos unas muy felices fiestas en las que podáis disfrutar de la compañía de todos aquellos que os importan.

Y ya de paso, desearos también que el próximo año 2012 venga cargado de alegrías, prosperidad y nada más que cosas buenas. Al menos a ver si es para todos un pelín mejor de lo que ha sido el año que ahora cerramos ;-)

Nos seguimos viendo por aquí.
domingo, 4 de septiembre de 2011
Vamos allá¡Qué poco han durado! Supongo que estos días no hay afirmación más repetida por todos los que volvemos de vacaciones. Y la sensación más habitual, sin duda, el sabor agridulce de saber que han acabado unos días estupendos. Pero que nos quiten lo bailao, eh? ;-)

El caso es que ya estamos aquí de nuevo. Descansados, oxigenados, ilusionados y listos para enfrentarnos a otro emocionante año que seguro nos traerá grandes alegrías :-)

Por empezar con novedades, habréis notado le he dado un lavado de cara a la plantilla del blog, que ya se le iban notando los años. He sustituido el layout líquido por uno de ancho fijo, más apropiado para facilitar la lectura en las ya extendidas pantallas panorámicas, he simplificado algo el código pasando a usar características de CSS3 (lo siento por los que aún navegáis en galeones ;-)), y he reestructurado la columna derecha, pasando a segundo plano la publicidad de los laterales a pesar de los vastos ingresos que generaban, y potenciando la vertiente social y de comunidad del blog.

Y dicho esto, ¡queda inaugurada la temporada 2011-2012 de Variable not found!

Como siempre, nos vemos por aquí.
jueves, 21 de julio de 2011
MallorcaParecía que no iban a llegar nunca, pero por fin tenemos aquí las vacaciones :-). Es el momento de dejar el motor en ralentí, descansar un poco, renovar energías y disfrutar de la familia y la buena compañía, esos a los que durante el año no podemos prestarles toda la atención que merecen.

¿Y qué planes tenemos? Pues inmejorables. :-)

Este año vamos a tener la fortuna de poder pasar unos días en Mallorca, una isla que tengo muchas ganas de visitar, y donde seguro que vamos a disfrutar de lo lindo. Todo el mundo que la conoce no duda en calificarla como una auténtica maravilla, así que estamos ya locos por hacer las maletas y montarnos en el avión :-)

También, al igual que en ocasiones anteriores, pasaremos unos días en Sanlúcar de Barrameda, un pueblo que ya nos cautivó hace años y al que seguimos acudiendo cada verano a disfrutar de sus playas, sus calles, su gastronomía y todo lo que le rodea. Y por último, probablemente nos dejemos caer algunos días por El Portil, otro enclave costero al que solemos ir a descansar cada verano y algunos fines de semana (como el del viaje con sorpresa ;-)).

Así pues, dejo el blog con el piloto automático hasta el inicio de la nueva temporada, allá por finales de agosto o principios de septiembre, cuando volveremos con las pilas recargadas, los ánimos a tope y totalmente listos para afrontar el año con ganas e ilusión.

¡Felices vacaciones, amigos! :-)

PD: Como de costumbre, cierro los comentarios anónimos para que los spammers no se ceben en ellos y conviertan variablenotfound.com en un festival de enlaces a sitios inapropiados ;-)
martes, 17 de mayo de 2011
Variable not found cumple cinco añosTras mucho tiempo como lector y consumidor de blogs, sentía la necesidad de disponer de mi propio espacio, un sitio donde ir publicando información sobre las cosas que me interesaban y que quizás podían interesar a alguien más. Entré en Blogger y creé mi cuenta.

Bien, pues hace ya cinco años de esto. Se dice pronto, eh? :-)

Variable not foundEl siguiente paso fue darle a este espacio un nombre. Seguro que muchos ya sabréis que la denominación Variable not found es un homenaje a los viejos tiempos del Spectrum, culpable de que muchos nos estemos dedicando hoy profesionalmente al desarrollo de software.

Para los más jóvenes diré que este mensaje de error era bastante habitual cuando programábamos con aquel Basic primitivo de los años 80 e intentábamos acceder a una variable no definida. Por cierto, aquellos de mi quinta que queráis tener un momento nostalgia, o los que simplemente tengáis curiosidad por trastear con él, podéis encontrar aquí un emulador online de esta maravilla.

Y tras todo ello, ya sólo faltaba  lo más difícil: intentar crear contenidos razonablemente decentes, darlo a conocer, conseguir visitas, suscriptores, comentarios… y en ello estamos :-)

Como en otras ocasiones, aprovecho para resumir los distintos periodos por los que hemos ido pasando desde aquél momento para, justo después, comentar este último año que acabamos de finalizar.
  • Plantilla original de Variable not foundAño 1: la travesía del desierto (mayo 2006 - mayo 2007), caracterizado principalmente por ser yo el único visitante (poco más o menos) al blog, por aquellos tiempos disponible a través de la dirección jmaguilar.blogspot.com y con la imagen de una de las plantillas de Blogger.

    La siguiente gráfica muestra los primeros meses de vida del blog, donde era extraño superar las tres visitas al día. Esos picos que se ven probablemente sería yo mismo haciendo pruebas:

    Estadísticas de acceso

    También es curioso ver los primeros veinte días sin datos estadísticos: era tan ignorante –o tenía tan pocas esperanzas de que fuera a entrar alguien- que ni siquiera se me ocurrió activar ningún sistema de seguimiento hasta 20 días después de la inauguración oficial de la bitácora :-D
     
  • Año 2: el despegue (mayo 2007 - mayo 2008), durante el cual se produjeron múltiples novedades, como la adquisición del dominio variablenotfound.com, la difusión de feeds a través de Feedburner, la creación del diseño actual, y la inclusión en agregadores y comunidades como Planeta Código, Planet WebDev y Geeks.ms.

    Este segundo año lo acabamos con un incremento del 2.500% en el número de visitas (la verdad, tampoco lo tenía muy difícil al partir casi de cero ;-)), debido en gran parte a algunas avalanchas procedentes de Menéame.

    Pero lo que me parecía más increíble era algo a lo que, curiosamente, no había prestado demasiada atención y que, sin embargo ahora, es uno de los parámetros que más valoro: los suscriptores a los feeds. Acabábamos el año con unos increíbles 380 suscriptores.
     
  • Año 3: la consolidación (mayo 2008 – mayo 2009), periodo sin grandes cambios en el que Variablenotfound.com continuó creciendo, aunque no de forma tan espectacular como lo había hecho anteriormente.

    Se incrementaron en un 75% el número de visitas procedentes de buscadores, debido a que comenzaba a notarse la antigüedad del blog, el número de referencias externas y su posicionamiento en buscadores, compensando así la práctica ausencia de “meneos” y otro tipo de avalancha.

    Según el inestable inestimable feedburner, los suscriptores a feeds superaron este año los 600, lo que suponía un aumento casi del 100% respecto al periodo anterior. Impresionante.
     
  • Año 4: la variable social (mayo 2009 – mayo 2010), se continuaba la estabilidad en cuanto al número de visitas, aunque seguían creciendo a un ritmo importante. Superábamos los 900 suscriptores a los feeds, y rozábamos los 100.000 usuarios únicos absolutos al año, sumando las visitas a variablenotfound.com y su eco en geeks.ms.

    La gran novedad del periodo fue la inclusión del componente social, creando una página en Facebook y comenzando a retransmitir vía Twitter. Acabábamos el año pasado con cien seguidores en el primero, y más de cincuenta en el segundo.

Año 5: La variable física

La principal novedad de este año ha sido el hecho de haber salido de la cueva, y haber podido introducir la componente física en esta ecuación.

La asistencia al TTT/Open Day me permitió ponerles cara y voz a fenómenos a los que admiraba y llevaba siguiendo desde hacía mucho tiempo, y con los que fue un auténtico placer poder compartir unas horas. Más recientemente, la gira Make Web Not War en la que he tenido el placer de participar también me ha dado la oportunidad de saludar personalmente a amigos a los que sólo conocía virtualmente, y de echar unos ratos excelentes con un grupo estupendo. Y finalmente, todo esto me ha permitido entrar en contacto con la gente de CartujaDotNet, el grupo de usuarios .NET de Sevilla, donde espero participar y colaborar de forma presencial.

Entrando ya en otro orden de asuntos, Variable not found ha continuado su trayectoria ascendente incrementando el número de usuarios de forma considerable en todos los canales abiertos:

    Estadísticas de Feedburner
  • Un 30% de incremento en el número de visitas y páginas vistas en variablenotfound.com, donde estamos ya estabilizados por encima de las 10.000 visitas/mes. Si sumamos las consultas de estos contenidos desde geeks.ms, nos ponemos ya en 15.000 visitas/mes.
  • Feedburner indica cerca de un 25% de incremento, superando los 1.100 suscriptores a los feeds del sitio.
  • Conseguimos cerca de un 300% de incremento en el número de followers en Twitter, que rondan los 230 en este momento.
  • Un 100% de incremento de seguidores en Facebook, donde superamos ya los 200 amigos.
Según entendidos en la materia, las cifras de visitas y suscriptores están bastante bien teniendo en cuenta la gran verticalidad del blog. Variable not found sigue siendo un blog de poca monta en términos generales, pero dentro de su temática y especialización está bastante bien situado, lo cual, por supuesto, tengo que agradeceros :-)

La principal fuente de tráfico siguen siendo las búsquedas de Google; la presencia de otros buscadores (bing, yahoo, ask...) en la estadística es sólo testimonial. Eso sí, ha decrecido el porcentaje total de visitas procedentes de búsquedas en beneficio del tráfico referido de otras fuentes como geeks.ms, Facebook, los foros de MSDN, o Twitter, entre muchos otros.

En cuanto a los navegadores, Firefox sigue siendo el más usado para acceder a variablenotfound.com, aunque el uso de Chrome se ha duplicado en el último año en detrimento de IE y del propio Firefox. Este trío concentra el 95% de los usuarios.

Curiosamente, el 7% de los usuarios que usan Internet Explorer siguen con la versión 6 :-O. Pero bueno, el año pasado a estas alturas era tres veces más, así que no podemos decir que la campaña  IE6 count down no esté surtiendo efecto…

Otro dato interesante es que el año pasado Windows XP era utilizado prácticamente por el 60% de los visitantes, y ahora rondamos el 45%. Windows 7 ha crecido hasta cerca del 40%.

Mi primer cheque AdsenseRespecto a los beneficios obtenidos, este año se ha producido la tan esperada llegada de mi primer cheque Adsense, que ya compartí virtualmente con vosotros ;-) Para mi gusto le faltaban algunos ceros para haber sido perfecto, pero vaya, menos da una piedra…

Afortunadamente sigo disfrutando al escribir cada post, al revisar los comentarios (pocos, pero haberlos haylos), al descubrir las referencias externas, comprobar que los posts son útiles de vez en cuando a alguien, y al ver que el número de amigos de variablenotfound.com continúa creciendo. Y desde luego, sigue sin haber mejor recompensa que ver que estáis ahí después de tanto tiempo.

¡Mil gracias a todos! Y por supuesto, espero que sigáis ayudándome a buscar la variable un año más ;-)

Publicado en: Variable not found
miércoles, 9 de febrero de 2011
Todo el mundo ha oído hablar de ellos… todo el mundo conoce a alguien que los vio una vez… creer en su existencia es a veces sólo cuestión de fe… y sólo algunos privilegiados han podido verlos en persona… Está claro que hablo de los cheques de AdSense, ¿no? :-D

Pues nada, que estoy que no quepo en mí de gozo y quería compartirlo (el gozo, no el cheque ;-D) con todos vosotros, los que hacéis posibles estos milagros. Resulta que hace unos días recibí una carta de Irlanda, en la que venía un regalito como este:

Peaso de cheque

Hace unos cuatro años que coloqué, por probar, AdSense en el blog. Nunca pensé lo grande que sería la alegría que da recibir uno de estos con tu nombre y con una cantidad que jamás soñé que podría conseguir.

Supongo que esto responde a la eterna pregunta “y tú, ¿por qué escribes en tu blog?”:
- Pues por dinero, claro, ¿por qué iba a ser si no?
Publicado en: Variable not found.
miércoles, 2 de febrero de 2011
Desde que actualicé a Live Writer 2011 venía arrastrando un problema que, aunque fácilmente evitable, me hacía perder demasiado tiempo al escribir entradas técnicas en el blog.

El problema era el siguiente: al intentar introducir los caracteres arroba “@” (AltGr+2) o almohadilla “#” (AltGr+3), lo cual es bastante habitual cuando se habla de C# o Razor por ejemplo, el párrafo actual se reformatea  como encabezado de nivel 2 y nivel 3, respectivamente. O en otras palabras, AltGr+N era un atajo para convertir en encabezado de nivel N (<h2>, <h3>…) el párrafo que estábamos editando en ese instante.

La causa es un error de la compilación 15.4.3502.922 de Live Writer 2011, que fue corregido poco después de su aparición. Para ver la versión actual, sólo tienes que ir al menú “Live Writer” (donde tienes las opciones de Abrir, Guardar, etc.) y seleccionar la opción “Acerca de Windows Live Writer”:

Acerca de Windows Live Writer antes de actualizar

Tras dedicar un par de minutos a Googlear, encontré que a primeros de Diciembre habían publicado una actualización que corregía el problema. Así pues, basta con ir al sitio web del producto y descargar la última versión, que nos lo actualizará a la compilación 15.4.3508.1109:

Windows Live Writer actualizado

A partir de ese momento, el problema estará resuelto.

Conclusión: cuando hay problemas molestos como éste, a veces hay que dedicar un par de minutos a solucionarlos, en lugar de soltar un “ya lo miraré más adelante” y adaptarse al problema. Eso se llama procrastinación.

Publicado en: Variable not found.
domingo, 9 de enero de 2011
Top posts 2010 en Variable not foundPrimero, ya que este post inaugura el recién estrenado 2011 en Variablenotfound.com, aprovechar estas líneas para desearos a todos un feliz año nuevo. Espero que se cumplan vuestros sueños, con salud, y en buena compañía.

Y ahora, tal y como manda la tradición, comentaré los posts más vistos durante el año que acabamos de cerrar, distinguiendo entre los que han sido publicados en 2010, y los que forman ya parte del archivo histórico del sitio y que siguen teniendo gran aceptación.

Cosecha de 2010

Encabezando la lista, además con bastante diferencia sobre el siguiente, el post ASP.NET MVC 2: Quince cuestiones que deberías conocer, un megapost que ya va por su tercera versión (y probablemente pronto podamos tener la cuarta ;-)), en la que se responden preguntas muy básicas sobre ASP.NET MVC. Supongo que de alguna forma, demuestra que el interés de la comunidad de desarrolladores por este framework va creciendo a buen ritmo :-)

Justo detrás en las más visitadas, encontramos dos entradas clasificadas en la categoría de “humor”, lo cual ya dice bastante sobre el tipo de fauna que pulula por aquí ;-D… La primera, muy reciente, es 32 Síntomas que indican que estás afectado por el desarrollo, una particular colección de extrañezas conductuales en las que los desarrolladores parece que coincidimos bastante, mientras que la segunda es un post de hace ya varios meses, Consejos imprescindibles por si algo falla, donde recogía una lista de recomendaciones y buenas prácticas a tener en cuenta cuando nuestras aplicaciones pretenden dejarnos en mal lugar.

En cuarto puesto tenemos el artículo llamado Edición elegante de fechas con jQuery Datepicker y MVC, paso a paso, en el que mostraba cómo combinar templated helpers de ASP.NET MVC con jQuery para crear editores de propiedades de tipo fecha muy profesionales.

Curiosamente, el quinto puesto lo ocupa un post de esos que escribes cuando descubres algo que probablemente todo el mundo conocía menos tú, pero resulta que no, que es útil para más gente: Acceder al contenido de un .vhd desde Windows XP/Vista.

En el sexto lugar, encontramos la serie Leyes epónimas relacionadas con el desarrollo de software, donde se recogían un buen número de leyes que llevan el nombre de su creador, con alguna o mucha relación con nuestra profesión.

En séptimo, un post que mostraba cómo utilizar JSON para el intercambio de datos entre cliente y servidor, sobre tecnología ASP (sin el .NET de detrás): Ajax con ASP: intercambio de datos JSON.

Los puestos octavo y noveno son para artículos muy técnicos y centrados en ASP.NET MVC: Validación de rangos decimales en cliente y servidor para ASP.NET MVC 2, y Formularios con autoguardado en ASP.NET MVC.

Y por último, en el décimo, se ha colado en el último momento el post Llega la Programación Gestual: Visual Studio Kinect Edition, la inocentada del pasado 28 de diciembre que, como todos los años, tanto me divierte escribir.

Cosecha de años anteriores

A continuación cito los artículos escritos años anteriores, pero que siguen estando entre los más visitados del blog.

Como siempre, en cabeza no podía faltar la eterna serie de citas célebres del mundo de la informática, tres posts algo viejunos que recogían más de 300 frases imprescindibles de nuestro mundillo, y que siguen atrayendo visitas de forma impresionante.

A continuación, y no a demasiada distancia de los anterior, jqGrid: Grids espectaculares para ASP.NET MVC, paso a paso, un artículo que describía paso a paso cómo utilizar el plugin jqGrid para implementar rejillas de datos en aplicaciones ASP.NET MVC.

Seguidamente, un clásico del año 2007: Bordes redondeados en webs (sin esfuerzo) con Nifty Corners Cube, que pone de manifiesto la pesadilla que sigue siendo la creación de esquinas redondas en elementos de bloque HTML. Menos mal que CSS3 viene al rescate pronto…

En sexto lugar, más de la cosecha de 2007, Llamar a métodos estáticos con ASP.NET Ajax, un artículo que describía la utilización de PageMethods como mecanismo de comunicación cliente-servidor utilizando Ajax. Aunque se refería a la versión 2.0 de ASP.NET, parece ser que todavía la información es útil.

Sin duda el 2007 fue un gran año, pues justo detrás tenemos el post Evitar el postback al pulsar un botón en ASP.Net, donde se mostraban diversos escenarios en los que podría ser interesante la cancelación del postback al pulsar un botón en formularios web ASP.NET.

Prácticamente igualado con el anterior, 32 técnicas de producción de ideas, un resumen de técnicas para la generación de ideas publicadas allá por 2008 en Neuronilla (ahora hay más), que sigue atrayendo muchos visitantes.

Por último otro gran clásico, 13 Consejos para comentar tu código, que recoge una serie de recomendaciones y buenas prácticas para comentar el código fuente y hacerlo más legible. Como curiosidad, este artículo ha sido traducido y publicado en varios idiomas (inglés, chino, y otros que soy incapaz de identificar), e incluso ha aparecido publicado en una revista India.

Y hasta aquí el tradicional resumen anual, espero que os sea interesante para descubrir entradas que en su día os perdisteis, o simplemente, por la curiosidad de conocer los temas que más interesan de este sitio.

Espero seguir viéndoos por aquí en 2011, no me faltéis, eh? Guiño

Publicado en: Variable not found.
domingo, 5 de septiembre de 2010
Por mucho que nos las merezcamos y queramos alargarlas hasta el infinito, las vacaciones también tienen que terminar. Gracias a esto mantenemos la ilusión y ganas de que lleguen las próximas, ¿no? ;-)

Así que, tras unos días de reentrada suave, aquí estamos de nuevo. Con las pilas a tope y listos para comenzar una nueva temporada que seguro será magnífica… a pesar de la que está cayendo ahí fuera.

Queda, pues, inaugurada la temporada 2010-2011 de Variable Not Found, donde espero contar, como siempre, con vuestra compañía y apoyo.

¡Nos vemos por aquí!

Publicado en: Variable not found.
lunes, 26 de julio de 2010
Hace unos días he iniciado las vacaciones, y con ellas el descenso de actividad tradicional en Variable not found (bueno, y en esta ocasión también podréis notarlo en Facebook y Twitter), por lo que dejaré de daros la lata durante algún tiempecito.

El PortilComo en otras ocasiones, los destinos elegidos para descansar son El Portil, una tranquila playa en la provincia de Huelva, y Sanlúcar de Barrameda, una maravillosa localidad costera de Cádiz.

Aunque seguiré atento al mail y no voy a dejar de trabajar durante este tiempo (ya os comentaré el nuevo proyecto que me traigo entre manos), sí que relajaré el tiempo de dedicación con objeto de recargar las pilas para el próximo año que, según se está planteando, será de lo más emocionante.

Dejo cerrado los comentarios anónimos para evitar que los spammers conviertan esto en un festival de enlaces a sitios inapropiados. Ah, no, no hace falta… ya los había cerrado hace algunas semanas precisamente por eso, así que nada. ;-P

Nos vemos a la vuelta.

Felices vacaciones, amigos ;-)

Publicado en: http://www.variablenotfound.com/.
miércoles, 14 de julio de 2010
Variable not found es un blog cuyos lectores son en su mayoría esporádicos y proceden de motores de búsqueda: aterrizan, miran lo que les interesa, se van, y la mayoría de ellos no vuelven. Obviamente estos usuarios son bienvenidos y alegra saber que cada día los posts de VNF llegan a más gente.

Sin embargo, el dato que siempre he valorado más para hacerme una idea de la aceptación de un blog es el número de suscriptores a los feeds, puesto que implican una respuesta activa del lector hacia los contenidos. Se trata de personas que, voluntariamente, deciden en un momento u otro añadirte como fuente a su lector favorito, mostrando así de forma explícita su interés por tu trabajo.

Y aunque sé que Feedburner no es demasiado preciso, que este dato suele oscilar bastante y que probablemente en unas horas ya no será así, me váis a permitir que lo celebre un poco...

¡Hemos superado los mil suscriptores a los feeds en Variable not found! :-))

1029 suscriptores en Variable not found

¡Mil gracias a todos!

Publicado en: Variable not found
lunes, 10 de mayo de 2010
¡Cuatro años de variablenotfound.com!Mayo de 2006. Mucho ha llovido desde entonces (y sobre todo este año ;-)). Windows XP era el rey del escritorio, y a pesar de sus inconvenientes, navegábamos con el hoy denostado Internet Explorer 6; Visual Studio 2005 había aparecido recientemente, y comenzábamos a crear aplicaciones para .NET 2.0… ¡ah, qué tiempos!

El pasado 8 de mayo volvimos a celebrar el aniversario de la publicación del primer post en Variable Not Found, ese blog que comenzó tímidamente hace ya cuatro años, con una declaración de intenciones como la siguiente:
Pretendo firmemente, y suelo ser bastante tenaz en mis propósitos, que este diario recoja todo aquello que me llame la atención y mis reflexiones relativas a la tecnología en general, y al mundo del desarrollo de software en particular.
Con mayor o menor frecuencia dependiendo del tiempo libre disponible en cada momento, desde esa fecha he ido publicando por aquí todo aquello que he considerado que podía interesar a alguien más que a un servidor, probablemente unas veces con más acierto que otras, pero, en cualquier caso, siempre con el mismo entusiasmo que el primer día.

Como en otras ocasiones, aprovecho para resumir los distintos periodos por los que hemos ido pasando desde aquél momento.
  • Año 1: la travesía del desierto (mayo 2006 - mayo 2007), caracterizado principalmente por ser yo el único visitante (poco más o menos) al blog, por aquellos tiempos disponible a través de la dirección jmaguilar.blogspot.com y con la imagen de una de las plantillas de Blogger.
    La siguiente gráfica muestra los primeros meses de vida del blog, donde era extraño superar las tres visitas al día. Esos picos que se ven probablemente sería yo mismo haciendo pruebas:

    image

    También es curioso los primeros veinte días sin datos: era tan ignorante que ni siquiera se me ocurrió activar ningún sistema de seguimiento hasta 20 días después de la inauguración oficial de la bitácora :-D
    Aprovecho para introducir un mensaje de aliento para los que estéis en esta situación ahora, empezando un blog: no os desaniméis, ni aun viendo este desastre: con un poco de esfuerzo todo puede cambiar. El desierto también tiene su fin.
  • Año 2: el despegue (mayo 2007 - mayo 2008), durante el cual se produjeron múltiples novedades, como la adquisición del dominio variablenotfound.com, la difusión de feeds a través de Feedburner, la creación del diseño actual, y la inclusión en agregadores y comunidades como Planeta Código, Planet WebDev y Geeks.ms.

    Este segundo año lo acabamos con un incremento del 2.500% en el número de visitas (la verdad, tampoco lo tenía muy difícil al partir casi de cero ;-)), debido en gran parte a algunas avalanchas procedentes de Menéame.

    Pero lo que me parecía más increíble era algo a lo que, curiosamente, no había prestado demasiada atención y que, sin embargo ahora, es uno de los parámetros que más valoro: los suscriptores a los feeds. Acabábamos el año con unos increíbles 380 suscriptores.
     
  • Año 3: la consolidación (mayo 2008 – mayo 2009), periodo sin grandes cambios en el que Variablenotfound.com continuó creciendo, aunque no de forma tan espectacular como lo había hecho anteriormente.

    Se incrementaron en un 75% el número de visitas procedentes de buscadores, debido a que comenzaba a notarse la antigüedad del blog, el número de referencias externas y su posicionamiento en buscadores, compensando así la práctica ausencia de meneos y otro tipo de avalancha.
    Según el inestable inestimable feedburner, los suscriptores a feeds superaron los 600, lo que suponía un aumento casi del 100% respecto al periodo anterior. Impresionante.
Estudiemos ahora en profundidad el año que acaba de finalizar:

Año 4: la variable social (mayo 2009-mayo 2010)

Durante este último año el número de visitantes ha continuado en la misma línea de estabilidad ya lograda en el periodo anterior, sin grandes sobresaltos. Los principales indicadores son:
  • Rozamos en total los cien mil usuarios únicos absolutos al año, sumando los visitantes a Variablenotfound.com y a su eco en geeks.ms,  Aunque no sea un número altísimo comparado con otros blogs, el carácter vertical y altamente especializado de mis publicaciones hacen que este número sea, en mi humilde opinión, espectacular.
  • Sigue aumentando el porcentaje de visitantes procedentes de Google buscadores; y esto a pesar de que la indexación no es especialmente buena… mmm, algún día tendré que mejorar eso.
  • En términos absolutos, la mayor parte de lectores se conectan desde España. Sin embargo, el mayor incremento se ha producido desde países como México, Argentina, Colombia, Perú o Chile.
  • El número de suscriptores a los feeds se acerca al millar… ¡simplemente impresionante! Estas dimensiones eran absolutamente impensables hace unos años, cuando pensaba que un blog con 500 lectores era una auténtica barbaridad, y ni en mis más optimistas previsiones era capaz de imaginar acercarme a este número.
  • Como curiosidad, el navegador más utilizado para acceder a los contenidos desde http://www.variablenotfound.com/ es Firefox (47%), frente a Internet Explorer (36%). A través del eco en geeks.ms es al contrario, un 46% Internet Explorer y no llega al 40% Firefox. Otro aspecto algo sorprendente es que el 70% de los lectores del blog todavía utiliza Windows XP.
El gran cambio introducido durante este periodo ha sido la inclusión de la componente social, tan al alza en estos tiempos. El pasado mes de octubre creé Variable not found en Facebook, que cuenta ya con más de cien amigos, y que esperaba sirviera como canal bidireccional de  comunicación con el otro lado. Aunque en la práctica todavía no ha sido así, y muy pocos miembros participan activamente, sí que es cierto que ofrece más canales para la distribución de contenidos y, seguro que algún día, para la comunicación entre nosotros.

En la actualidad utilizo Facebook para registrar enlaces a artículos que encuentro cada día y que me parecen interesantes. Relación Facebook/Twitter/BlogDe hecho, también los publico en el blog en las entradas categorizadas “Enlaces” de cada semana.

Profundizando en la misma línea, me he introducido de lleno en Twitter, que puedo decir que ha supuesto todo un descubrimiento. Aunque todavía soy sólo un aspirante a twitteador de los de verdad, estoy cada vez más integrado e identificado con esta nueva vía de comunicación inmediata. A día de hoy, sigo a 38 personas, y 58 followers escuchan mis gorjeos a diario, lo que me permite conversar con gente estupenda y plasmar impresiones y sensaciones en directo, a la vez que retransmitir por esa vía los enlaces que publico en Facebook.

Por otra parte, durante este último año he tenido ocasión de encontrar los primeros patrocinadores para el blog, lo cual, una vez descartado hacerme millonario con los ingresos de Adsense ;-), suponen al menos la posibilidad de sufragar gastos y darme un caprichillo de vez en cuando.

También, gracias a la difusión conseguida, he tenido el privilegio de probar algunos productos (como NDepend, o BaseKit) cedidos directamente por sus creadores, o acceder a información temprana de algunos sistemas (como el Vodafone Business Place) a través de invitaciones a eventos e información suministrada por los fabricantes.

Pero, como ya he dicho en otras ocasiones, el principal beneficio que sigo obteniendo es intangible. La motivación viene con cada post publicado, que brinda una nueva oportunidad de ampliar conocimientos y compartirlos con objeto de aportar un diminuto granito de arena a la comunidad de desarrolladores.

Y es que no hay mejor recompensa que el hecho de que estéis ahí: cada visita, cada suscriptor al feed, cada seguidor, cada comentario o contacto a través de cualquier vía hacen que continuar trabajando en este proyecto valga la pena.

Muchas gracias a todos, y espero que sigáis por aquí, ayudándome a buscar la variable.

Publicado en: Variable not found.
domingo, 11 de abril de 2010
Llevo ya algún tiempo utilizando la página de Variable Not Found en Facebook para publicar enlaces interesantes sobre desarrollo, ASP.NET, MVC y otros temas que voy encontrando por ahí. Normalmente anoto entradas en blogs, artículos o sitios webs a los que considero que vale la pena echar un vistazo en los ratos libres.

Integración Facebook-Twitter-BlogAdemás de en la página del blog en la red social, como por arte de magia, estos enlaces se difunden simultáneamente desde mi perfil personal de Facebook y a través de Twitter. Sin embargo, desde hace tiempo estaba estudiando la posibilidad de recopilar a su vez toda esta información para poder publicarla en el blog, cerrando completamente el círculo.

Aprovechando un huequito he creado una pequeña aplicación que toma esos enlaces y los maqueta de forma automática para mostrarlos en Variable not found. Así, a la vez que hago llegar estos enlaces a los suscriptores y lectores ocasionales del blog, los almaceno agrupados en una única ubicación sobre la que es posible realizar búsquedas, que es más cómodo que tomar rabos de pasas ;-)

En un principio orienté la solución utilizando el SDK de Facebook (como introducción os recomiendo leer esta magnífica serie del amigo Eduard Tomás), pero estaba intentando matar mosquitos a cañonazos: demasiada complejidad para una necesidad tan simple.

Afortunadamente, me di cuenta de que esta información está disponible en formato ATOM y RSS, por lo que en principio puede ser consumida utilizando las clases de sindicación introducidas con .NET 3.5 en el espacio de nombres System.ServiceModel.Syndication del ensamblado System.ServiceModel.Web.

Por tanto, debería bastar con obtener las feeds, por ejemplo en formato ATOM, desde la dirección del feed http://www.facebook.com/feeds/page.php?format=atom10&id=94490426991, ¿no?

XmlException: Por razones de seguridad DTD está prohibido en este documento…

Pero claro, las cosas nunca son tan sencillas como se prevé en un principio. Utilizando contra los feeds de Facebook el código convencional para acceder a este tipo de información (y que de hecho funciona con muchos otros feeds), se lanzaba una excepción con un misterioso mensaje:

XmlReader reader = XmlReader.Create(feedURL);
SyndicationFeed feed = SyndicationFeed.Load(reader);
 
// Excepción XmlLException              ^^^^
//   "Por razones de seguridad DTD está prohibido en este documento XML. 
//    Para habilitar el procesamiento DTD establezca la propiedad ProhibitDtd 
//    en XmlReaderSettings como false y pásela al método XmlReader.Create."

Gracias a la inestimable colaboración del compañero Fiddler, pude averiguar que el problema se debía a que Facebook no estaba retornando la información en el formato solicitado (en este caso, ATOM), sino HTML:

Capturando tráfico con Fiddler

Si observáis, la petición inicial es redirigida a un nuevo recurso mediante un código de respuesta 302, una página web en cuyo título podemos observar el texto “Navegador incompatible”.

El motivo es que, obviamente, la petición realizada automáticamente por XmlReader para obtener los datos no incluye información sobre el navegador utilizado, Facebook detecta esta circunstancia y nos devuelve una página como la siguiente:

Estoy utilizando un navegador no compatible

Y esa es precisamente la causa de la excepción: los datos retornados no se encuentran en el formato esperado.

Para cambiar esto es necesario modificar ligeramente el código anterior, creando de forma manual la petición HTTP e inyectándole en el encabezado User-Agent un valor reconocible por los servidores de Facebook, como “Mozilla/4.0”, el empleado por IE8.

Para crear el objeto XmlReader utilizamos otra sobrecarga, de forma que le suministramos el Stream de respuesta de la conexión que hemos creado:

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(feedURL);
wr.UserAgent = "Mozilla/4.0";
 
XmlReader reader = XmlReader.Create(
   wr.GetResponse().GetResponseStream()
);
 
SyndicationFeed feed = SyndicationFeed.Load(reader);
foreach (var item in feed.Items)
{
   // Procesar entrada...

De esta forma, podemos acceder a feeds, incluso a los de Facebook, para obtener información y procesarla a nuestro antojo.

En el caso de mi megasuperaplicación, simplemente he tenido que parsear un poco el contenido y generar marcado HTML para cada entrada del feed con objeto de conseguir algo parecido a lo siguiente:

Aspecto de enlaces en Variable Not Found
Y ya está. No me queda más que avisaros de que a partir de ahora veréis de vez en cuando posts como ese, con enlaces que espero que os resulten interesantes. :-)

Publicado en: Variable Not Found.
Hey, ¡estoy en Twitter!
lunes, 11 de enero de 2010
Ya iba siendo hora de estrenarme este 2010 y,image como ordena la tradición, el primer post del nuevo año lo reservo para comentar las entradas que han sido más populares a lo largo del año que acabamos de cerrar.

Esta vez voy a introducir una novedad en el análisis, separando los posts que han sido escritos durante este año de otros, creados años anteriores y que todavía gozan de gran popularidad en la red.

Cosecha de 2009

Encabezando el top ten aparece “101 formas de saber que tu proyecto está condenado al fracaso”, una traducción autorizada del original 101 Ways To Know Your Software Project Is Doomed de Max Pool, que enumeraba, en clave de humor, una serie de pistas para saber si un proyecto se estaba precipitando hacia un estrepitoso fracaso.

Seguido de cerca tenemos “ASP.NET MVC: trece preguntas básicas”, un pequeño resumen de cuestiones realizadas muy frecuentemente tras el primer encuentro con el framework, como qué es MVC, qué ventajas tiene sobre Webforms, o si vale la pena pasarse a esta nueva forma de desarrollar aplicaciones web.

En tercer lugar, “Y todavía otras 101 citas célebres del mundo de la informática”, la tercera entrega de un clásico de este blog, con otras ciento una frases recogidas sobre este mundillo. En total, 303 frases, no está mal.

A continuación, el post “jqGrid: Grids espectaculares para ASP.NET MVC, paso a paso” ha demostrado el interés que despierta el uso de este plugin para mostrar y editar datos tabulados en el framework ASP.NET MVC.

En quinta posición tenemos la serie de tres posts “C#: Desmitificando las expresiones lambda” con la que pretendí quitar un poco de misterio a las expresiones lambda, esa fascinante y temida característica de la última hornada de nuestro lenguaje favorito.

En el post “Aspectos a tener en cuenta al crear sitios web públicos” recopilé las opiniones de un hilo de StackOverflow en el que se debatía sobre aquellos aspectos que teníamos que considerar, desde el punto de vista técnico, para crear webs destinadas al público en general, clasificadas por categorías como experiencia de usuario, seguridad, rendimiento, SEO, etc.

En séptima posición, “Plantillas de proyectos ASP.NET MVC 1.0 para NUnit”, donde se describían los pasos para instalar NUnit como framework de pruebas unitarias en proyecto ASP.NET MVC.

La octava posición es para “Indicios de que tu interfaz de usuario fue creado por un programador”, que comentaba y ampliaba el post de Ian Voyce “The 7 signs your UI was created by a programmer” sobre los rastros que dejamos los desarrolladores cuando queremos hacer de diseñador.

En penúltima posición, “Generación de PDF desde .NET usando formularios”, donde describía un truco muy rápido para generar documentos PDF al vuelo, utilizando formularios en el documento y la librería iTextSharp para rellenar su contenido.

En décima posición, “Programadores con producción neta negativa (NNPP)”, post donde comentaba el curioso fenómeno de la existencia de desarrolladores cuyo saldo en las aportaciones a un proyecto resultara negativo, o sea, que el valor de su producción fuera superado por el coste de los errores y defectos que introducían en las aplicaciones.

Cosechas anteriores

En este apartado encontramos los posts que podríamos considerar clásicos en este blog, pero dado que muchos de los lectores acaban de llegar, no está de más comentar su existencia.
Las dos primeras posiciones, un año más como líderes indiscutibles, citados, copiados y pegados hasta la saciedad, “Otras 101 citas célebres del mundo de la informática” y “101 citas célebres del mundo de la informática”.

En tercera posición, “Bordes redondeados en webs (sin esfuerzo) con Nifty Corners Cube”, un post de 2007 donde comentaba el uso de esta librería de scrips para redondear las esquinas de elementos de bloque en páginas web.

Le sigue otra creación de 2007, “Evitar el postback al pulsar un botón en ASP.Net”, donde comentaba distintas formas de hacer que no se lanzara un postback al pulsar un botón incluido en una página ASP.NET, utilizando, por ejemplo, para evitar envíos múltiples de un formulario.

Otro de los grandes clásicos, en “13 Consejos para comentar tu código” comentaba una serie de prácticas destinadas a facilitar la legibilidad en el código fuente.

La sexta posición la ocupan las “32 técnicas de producción de ideas”, un resumen de un post de Neuronilla sobre técnicas destinadas a favorecer la creatividad.

El post “Llamar a servicios web con ASP.NET AJAX paso a paso”, donde se describe detalladamente cómo utilizar ASP.NET AJAX para obtener datos desde un servicio web.

En octava posición, curiosamente, un post sobre el “Escaneo de puertos con idle scan”, una ingeniosa técnica para detectar puertos abiertos en máquinas remotas utilizando un equipo zombie que oculta la identidad del atacante.

“20 desastres famosos relacionados con el software” traducción autorizada por Timm Martin de su serie “20 Famous Software Disasters”, que recogía un buen número de casos en los que fallos relacionados con el software habían tenido consecuencias trágicas.

Por último, “Enviar mensajes con imágenes incrustadas desde .NET”, de la cosecha de 2008, donde se mostraba cómo incrustar archivos de imagen en un mensaje de correo electrónico generado desde una aplicación .NET.

¡¡Feliz 2010!!

Publicado en: Variable not found.
jueves, 29 de octubre de 2009

Antes se solía decir que si no estabas en Internet, no existías; ahora que todo el mundo está en Internet, parece ser que si no estás en las redes sociales no existes. Cosas de la evolución, supongo ;-)

Y aunque no soy muy amigo de este tipo de afirmaciones, por si acaso, en un auténtico alarde de socialización, he creado el sitio Variable not found en Facebook, que pongo a vuestra disposición para mantenernos en contacto de una forma algo más bidireccional de lo acostumbrado:

Variable not found en Facebook

Espero que nos veamos también por allí. Y sobre todo, que incrementemos el triste número de fans que tiene hasta el momento… :-DDD

Publicado en: Variable not found.

martes, 1 de septiembre de 2009

Pues sí… todo lo que empieza acaba, y las vacaciones no iban a ser una alegre excepción.

Aquí estamos de nuevo listos para entrar en combate. Esta vez, además, el retorno al MundoReal™ coindice con un momento de emocionantes cambios a nivel profesional, lo cual hace especialmente motivador el regreso.

En cuanto a las vas vacaciones, simplemente geniales: mucho descanso en las playas de Huelva y Cádiz y, sobre todo, un grato recuerdo de la visita a Lanzarote, que sin duda es espectacular; si alguna vez tenéis oportunidad de visitar la isla, no dudéis en ir a disfrutar de ese lugar tan diferente. La única pega ha sido la insistente ola de calor que nos ha perseguido a todos nuestros destinos, pero bueno, son gajes del oficio.

Struts 2 in action, en Amazon.com De compañero de viaje esta vez he elegido Struts 2 in action, una muy recomendable lectura para conocer este veterano framework Java de desarrollo de aplicaciones web bajo la filosofía MVC. Me ha resultado interesantísimo conocer el enfoque del marco de trabajo, y contrastarlo con el muy reciente ASP.NET MVC; aunque con las obvias diferencias vinculadas a las tecnologías subyacentes en cada caso y al nombrado de componentes, hay muchísimas coincidencias y es sencillo encontrar correspondencias entre ambos frameworks que facilitan la comprensión y asimilación de los conceptos.

El libro está editado en español por Anaya Multimedia, bajo el nombre Struts 2; aunque, como suele ocurrir en este tipo de textos, de vez en cuando te encuentras errores de traducción y contenidos, cumple bastante bien su cometido.

Y sin más preámbulos, comenzamos la temporada 2009-10 en Variable not found, donde espero seguir contando, como hasta ahora, con vuestra participación y apoyo.

Publicado en: Variable not found.