Una pequeña despedida, me traslado

Ya desde hace tiempo le llevo dando vueltas al tema del blog, poco a poco se ha ido fraguando en mi cabeza la idea de volver a tener un blog independiente. Han sido muchos los motivos que me han llevado a tomar esta decisión.

Entre ellos, como Rodrigo bien sabe, como ha ido evolucionando Geeks.ms desde sus inicios: no me ha terminado de convencer, ha crecido demasiado. Antes de que me machaquéis, no digo que eso sea malo simplemente que lo que antes era ver día a día a ver quien escribía, quien no, comentar en los blogs, etc. con tanto crecimiento se ha hecho imposible.

Otro motivo ha sido la diversidad de contenidos que estoy generando a día de hoy en otras redes, ya no estoy, como en su día, tan dedicado al blog. La cantidad de contenido técnico ha disminuido profundamente.

Y por último, y no menos importante, mi reciente iniciación en otros temas como el desarrollo en la plataforma Android.

Pero como digo, la despedida es pequeña: ¡sigo escribiendo!. Mi blog personal, principal o como queramos llamarlo desde hoy será: http://blog.eugenioestrada.es.

Pero no quiero que dejéis de leerme y por ello aquellos que os habéis subscrito a mi antiguo RSS ya está actualizado a mi nuevo blog. A partir de ahora os podéis subscribir en el siguiente:

http://blog.eugenioestrada.es/feed

No es fácil dar este paso, como toda despedida, Geeks.ms ha sido uno de los sitios donde más he aprendido a lo largo de estos años y que espero que seguirá siendo así. Porque aun que yo me vaya, os seguiré leyendo a todos y continuaré comentando cuando sea necesario, como siempre.

Y  aun así, todo el contenido que he generado en este blog a lo largo de todos estos años, seguirá aquí para que quien quiera pueda consultarlo, comentarlo, etc.

Es el momento de abrir una nueva etapa… ¿o un nuevo blog?

Continuaremos hablando en http://blog.eugenioestrada.es y sino en el Twitter.

Sonrisa

Actualizas las políticas de la Marketplace de Windows Phone 7

Microsoft acaba de actualizar su política de distribución de aplicaciones móviles. Hasta ahora teníamos las siguientes condiciones:

  • Subscripción anual de 99$ para publicar gratis 5 aplicaciones (cuando digo gratis, me refiero a que como programador no te cobran)
  • 99$ cada una de las siguientes aplicaciones (no se a cuanto era el límite)
  • La publicación en cada mercado consumía una de las anteriores
  • Remuneración del 70%

A partir de ahora:

  • Subscripción anual de 99$ para publicar gratis 5 aplicaciones (esta no cambia)
  • Subscripción gratuita para estudiantes mediante el programa DreamSpark con las mismas condiciones como si hubieras comprado la de 99$
  • 19$ por cada una de las siguientes aplicaciones sin ningún limite de aplicaciones distribuidas
  • Posibilidad de hacer lanzamiento en todos los mercados consumiendo solo una aplicación
  • Servicio de notificaciones disponible
  • API para gestionar versiones de prueba disponible
  • Se permiten diferentes modelos de negocio: free, pagada, “fremium” y “ad-funded”
  • Los pagos serán mensuales a partir de los 200$ de ingresos

Fuente: Windows Phone Developer Blog

Paralelizando tareas

Cada vez son más los equipos que al menos tienen dos núcleos, ahora mismo ya tenemos algunos con cuatro que emulan ocho. Pero no estamos, como desarrolladores, explotando ese potencial.

Imaginaros que tenemos en memoria una lista con cientos de miles de objetos y debemos realizar alguna operación sobre ellos, como cambiar un valor. Nosotros haríamos algo similar a:

foreach (var objeto in lista)
{
    objeto.dato = nuevoValor;
}

Esta instrucción sería equivalente a hacer:

for (int i = 0; i < lista.count; i++)
{
    var objeto = lista[i];
    objeto.dato = nuevoValor;
}

Estas instrucciones tendrían una complejidad O(n), pero solo harían uso de un solo núcleo.

Si estamos usando .NET 4.0, éste nos trae de serie una serie de funciones para paralelizar trabajos y de tal forma que va a repartir las tareas en diferentes núcleos.  No solo eso, sino que si un núcleo tiene capacidad para n tareas también se le pondrán n tareas a él.

Para hacer eso tan solo hay que cambiar un poco la llamada anterior:

lista.AsParallel().ForEach (objeto =>
{
    objeto.dato = nuevoValor;
});

El resultado final es que durante el proceso de ese bucle el procesador se pondrá al 100%, pero la tarea será ejecutada en menos tiempo.

Algunas consideraciones sobre paralelismo:

Debemos tener en cuenta que al realizar un trabajo en paralelo tenemos principalmente tres problemas:

  • Dividir el problema
  • Sincronizar las tareas
  • Unir el problema de nuevo

Todo esto tiene el problema de que supone una carga computacional extra que solamente será “rentable” si el bucle es muy grande. De todas formas en caso de que fuese pequeño debería ser imperceptible estas operaciones, ya que la carga computacional será pequeña de todas formas.