Friday, 30 November 2007

HTC Touch + GPS BlueTooth + tomtom6 for dummies

Si te preguntas como configurar tu HTC Touch con un receptor GPS BlueTooth para usar el navegador tomtom 6, sigue leyendo.
En este tutorial, voy a utilizar el siguiente receptor GPS:



Holux M-1200. 70 pavos aprox. en el MediaMarkt, aunque he visto gente en foros que lo ha pillado hasta por 40 en intesné.

Todavía no lo he probado en un viaje largo, pero por ahora parece que va de coña, y es muy pequeño. La semana que viene le dare chicha en Alemania, a ver cómo se porta...

En fín, al lío: Primer paso, enciende el Holux M-1200.

Segundo paso, abre el CommManager de tu HTC Touch y selecciona Configuración -> BlueTooth




Siguiente paso. Añadir un nuevo dispositivo BlueTooth y emparejarlo con tu HTC. En las fotos vais a ver que ya está añadido (lo siento, soy muy vago y me ha dado pereza quitarlo, aunque sean 20 segundos). Voy a hacer como si no, y voy a crearlo otra vez: Seleccionar la opción "Añadir nuevo dispositivo"


El HTC buscará dispositivos BlueTooth cerca y mostrará en una lista todos los que encuentre, entre ellos, el Holux.


Selecciona el Holux y pulsa en "Siguiente". Aparecerá la pantalla de configuración de la asociación, emparejamiento, o como te de la gana de llamarle. Como la siguiente:



En ella marca la opción "Puerto serie" y pulsa sobre "Finalizar".

Después, hay que cambiar un par de cositas en la configuración BlueTooth. Ve a la pestaña "Puertos" y pulsa sobre "Nuevo puerto saliente":


En la siguiente pantalla selecciona tu dispositivo (en este caso Holux M-1200) y pulsa en "Siguiente". Llegarás a una pantalla como esta:



En ella selecciona uno de los puertos COM de la lista y asegúrate de NO MARCAR la opción "Conexión segura".


Nota: Si no sabes qué puerto COM elegir, tienes dos opciones: probar uno a uno hasta que funciones, o usar un programita como el que trae el Holux M-1200: GPS MiniViewer, que tiene una opción para escanear todos los puertos diciéndote en cuales encuentra GPS y en cuales no.

Una vez seleccionado el puerto, pulsa en "Finalizar" y vuelve a la configuración BlueTooth, esta vez para ir a la pestaña "Seguridad":







Asegúrate de dejar la opción "Autenticación (llave maestra) requerida" DESMARCADA.

Pulsa en Ok, y ya está. El tomtom6 te debería reconocer el GPS.

Nota1: Ten en cuenta que a veces al tomtom le cuesta un rato reconocer el GPS

Nota2: Si el GPS que usas no es el del ejemplo, la configuración puede variar. Lo mejor es que mires bien en su manual, sobre todo las cosas relacionadas con seguridad, etc.

Nota3: Para usar el GPS bluetooth con el tomtom no es necesario que toques nada en la opción "External GPS" de la pantalla Inicio->Configuracion->System. Déjalo como está.









HTC Touch + HTC EndKey application

I recently installed the HTC EndKey application in my HTC Touch, and I must advise you not to do so, mainly due to:

1.- This app is not very useful for the Touch, as it only gives you quick shortcuts for funcs like: lock phone (the htc touch is lockable via a long press in the red button), vibration mode (easily accesible in the speaker config icon), airplane mode (it may be useful if you take a plane twice a day...)...

2.- It seems that there´s no single way in the hell to remove it, appart a hard reset. When you install it, the HTC Touch warns you about it, because its a WM5 app. That should be no problem, but when you try to uninstall it, an error occurs, and it´s not removed.

If anyone knows how to uninstall without doing a hard reset, please post it here...

Cheers !

Automatic Lightmap Generation for Generic Sets of Geometry in Real Time Simulation

Siguiendo en el baúl de los recuerdos. No encuentro link al pdf, pero éste es el título de un Short Paper que publiqué en el año 2002 junto a mis mentores Alex García Alonso y Luis Matey.

Fué la primera aproximación a la técnica desarrollada para atlas de coordenadas genéricos.

Seguiré buscando a ver si se puede bajar de algún sitio.

Hi !

Texturas precomputadas para aplicaciones en tiempo real

Hace ya algunos años, publiqué un artículo en colaboración con mis dos mentores (Dr. Luis Matey y Dr. Alex García Alonso), que llevaba el título:

APLICACIONES AVANZADAS DEL USO DE TEXTURAS
PRECOMPUTADAS EN ENTORNOS DE SIMULACIÓN EN TIEMPO
REAL
En la revista de ingeniería industrial de la Universidad de Bío Bío, en Chile.
En ese artículo se describía una propuesta diferente para generar lo que hoy se conoce como "Atlas de Coordenadas" de forma automática, para la aplicación de lightmaps y otras técnicas a mallas geométricas genéricas.
Os dejo aqui el link por si a alguien le apetece echarle un vistazo.
Saludos.

Charla XNA. Microsoft CodeCamp 2007

Muy buenas, he visto Microsoft ha subido a este link el PowerPoint de mi charla sobre XNA para el CodeCamp de 2007 en Huelva. Os pongo el link por si os apetece bajarlo.


Esa charla fué compartida con el gran Javier Cantón (DirectX MVP). Podéis ver un video aqui.

Saludos!

Thursday, 29 November 2007

Escrito contra la violencia

Me ha gustado un un escrito que me han enviado contra la violencia. Ahí va...

-----

grupo disidente de realidad,
que seguís con rabia luchando,
matando, arrasando y robando.

"ofrecemos la paz,
mas no alcéis vuestras manos blanqueadas,
que huelen a sepultura"... ¡decís!

la paz no se ofrece matando;
y confundidos,
¿sepultura?
más bien ternura...

y no es olor, porque no huele,
más bien se siente...

la gente quiere vivir, amar y por qué no,
también odiar, pero... ¿matar?

matan libertad, expresión y sentimiento,
matan a un pueblo
harto de tiranía y opresión,
!queremos pasión!
desquiciado cabrón,
entra ya en razón.

verdad es que preferimos morir
a vivir arrodillados,
pero es que...
¿acaso lo estás?
¿o mancillado?,

porque tu libertad termina,
donde comienza la mía,
nunca aceptaré tu tiranía.

H. Heltz

XBox360 Controller for Windows - PC

Last week, I bought an additional XBox360 controller. In this case, I bought the wired version, because I wanted to use it with my PC without the need for an additional wireless adapter.





I must say it works flawlessly on the PC. You just need a special driver found here.

You can use it with XNA as well, though now, with the XNA GameStudio 2.0, you can read many other controller types, not only the XBox gamepad.

Cheers!

Tuesday, 27 November 2007

GPS on a plane at 940 kmh

I´ve found this video on YouTube of a guy in a plane with his GPS at 940 km/h.

Impressive!

Specs:

GPS bluetooth Leadtek 9553 (SirfIII Bt Gps)
HP Ipaq
Tomtom v 5.42.

Nueve palabras que las mujeres utilizan ;) ...

Esta mañana, uno de los secuaces que no mento por temor a provocar un divorcio, me ha enviado un email que me ha hecho mucha gracia... Ahí va...

NUEVE PALABRAS QUE LAS MUJERES UTILIZAN...

1.) VALE: Esta es la palabra que las mujeres utilizan para finalizar una
discusión cuando han decidido que ellas tienen la razón y ahora debes
callarte.

2.) CINCO MINUTOS: Si se esta arreglando, significa MEDIA HORA. CINCO
MINUTOS son solo cinco minutos si te han concedido cinco minutos
adicionales para terminar de ver el partido antes de salir para ayudar con
la compra.

3.) NADA: Es la calma antes de la tormenta. Significa ALGO. Y deberías
estar totalmente alerta. Discusiones que empiezan con NADA, normalmente
acaban con VALE (Ver punto 1).

4.) NO HAY PROBLEMA (también ADELANTE-HAZLO o NO-NO ME MOLESTA): Es un
reto, y para nada darte permiso. Ni se te ocurra hacerlo!

5.) GRAN SUSPIRO: En realidad, es una palabra pero habitualmente los
hombres no la entienden. Un suspiro alto y claro significa que ella piensa
que eres idiota y se pregunta por qué esta perdiendo el tiempo discutiendo
sobre NADA (Ver punto 3 para entender el significado de NADA).

6.) MUY BIEN: Esta es una de las frases más peligrosas que una mujer puede
decir a un hombre. MUY BIEN significa que ella meditara cuidadosamente
antes de decidir cómo y cuándo pagarás por tu equivocación.

7.) GRACIAS: Una mujer te agradece algo. No preguntes. No dudes. Solo di DE
NADA.

8.) ES IGUAL (también TU MISMO): Es la forma femenina de mandarte a la
mierda.

9.) TRANQUILO, LO HE ENTENDIDO (también LO HE PILLADO): Otra frase
peligrosa donde las haya, que significa que aunque la mujer ha dicho al
hombre en repetidas ocasiones que haga algo, finalmente lo esta haciendo
ella misma. Esto más tarde empujará al hombre a preguntar "QUE PASA?"
Para saber la respuesta de la mujer, ver punto 3.

XNA Image Reflector. Latest Best Picks

The XNAImageReflector article at TheCodeProject hast been included in the Last Best Picks list today. You can read the article here.

Monday, 26 November 2007

TheCodeProject article: easy rendering with XNA inside a Windows Form

Ive just seen that my last article about "Easy rendering with XNA inside a Windows Form" at TheCodeProject has been placed in the "Last Best Picks" list of the site.

You can read other articles about XNA and game development here.

Cheers!

Sunday, 25 November 2007

TheCodeProject Article. XNAImageReflector

Yesterday, my article about XNAImageReflector was accepted, edited and moved to another url in TheCodeProject.

I updated the link in the previous post, but anyway, paste it again here:

http://www.codeproject.com/csharp/XNA_Image_Reflector.asp

Cheers!

TheCodeProject Article: XNA integration with WinForms (II)

Yesterday, my article about integration of XNA and WinForms was accepted, edited and moved to another url in TheCodeProject.

I updated the link in the previous post, but anyway, paste it again here:


http://www.codeproject.com/game/XNA_and_WinForms.asp


Cheers!

Friday, 23 November 2007

XNA Image Reflector. Easily create web2.0-like reflected images

XNA is for games, but not just for games! ;)


I finally posted the XNAImageReflector article to TheCodeProject. It includes full source code, screenshots, instructions and programming details.


About XNAImageReflector:


It´s an application that integrates XNA rendering and maths with Windows Forms. and that lets you create images like this one in 5 seconds:







Hope you like it!

Tuesday, 20 November 2007

XNA Game Studio 2.0 (beta) released !

XNA Game Studio 2.0 (beta) has been released. You can see some installation instructions here.



It finally includes VisualStudio 2005 support (non-express versions). Something really demanded in the last months.

Can´t wait to try it!

Monday, 19 November 2007

TheCodeProject article: XNA Billiards Visual Demo

Today, I have uploaded another article to TheCodeProject. You can find it here.


I paste here the introduction:

This article is an example of 3D rendering and content processing with XNA, and a good start for those you want to start learning XNA. Although it´s not a full working Billiards game (that will be another article), it can be a good starting point for one too.
It´s not intended to show the best way of doing anything, it´s just a quick example I´ve made in four or five ours. Any improvement is really welcome!
It covers the following topics:
  • Content processor development
  • Content exporting from 3DSMax, including Max shaders, ready to use with XNA
  • Content loading
  • 3D rendering, with and without Max Shaders
  • Basic camera development
  • Basic Sprite management
  • Basic custom user interface development
  • Mouse reading
  • Scene and 3d models management
  • Settings serialization with XML
  • Additional model properties implementation
Hope you like it.

Forza MotorSport 2 bug. Front wheels driven Porsche?

This video shows a bug in ForzaMotorSport 2 demo for the XBox360.

The Porsche 911 is front wheels driven, what is actually a heresy for car enthusiasts.

video

Maybe it was fixed in release version... Anybody knows?

Coleguillas del TechEd Developers 2007

Aqui me he encontrado una entrada en el blog del gran Ramón Tebar, Microsoft MSP y compañero de fatigas en el TechEd 2007 en Barcelona.

La verdad es que lo pasamos fenomenal. Aqui Ramón y otro grande, recién MVP DirectX Javier Cantón, conmigo:



Muchas gracias por las fotos Ramontxu!


Friday, 16 November 2007

Double Buffer Graphics in C# + GDI (II)

This happens sometimes to me.

As a C++ programmer, when I moved to .net I was not used to have things done there for me, so I tended to do everything on my own (I found myself once programming a method to search a substring inside a string... ;), and today it happened again.

Augusto Ruiz has left a comment in my last post about GDI DoubleBuffering that is worth to mention, because all the DoubleBuffer implementation I showed in the last post, can be overriden by a simple property of the control you are going to render in:

public class DoubleBufferedPanel : Panel
{
public DoubleBufferredPanel()
{
this.DoubleBuffered = true;
}
}

This property is inherited from Control, so any windows control has it, but is protected. Thats why you need to create a custom Panel, Button, or whatever you want to use as rendering target. Just change its value in the constructor and that´s it!

The previous implementation still has it´s advantages, like a full control on the rendering and presentation process, but for simple cases this way is muuuuuch simpler.

Can´t understand why a google on this topic shows CodeProject entries talking about a custom implementation like the previous one, and no one talks about this way. Probably because it´s too simple and everybody knows it... je je...

Great!

TheCodeProject article: easy integration between XNA and Windows Forms

I have just posted this article to TheCodeProject, it talks about how to render XNA graphics inside a Windows form.



Better graphics in XBox360 than in PlayStation3 ?

Today, watching some videos in one of my favourite sites, I´ve found a comparison between Assassin´s Creed for XBox360 and PlayStation3.

Link: http://www.gametrailers.com/game/2581.html




It´s quite impressive to see that XBox360 beats the PS3 up in this game. Some people say it´s just a contrast or gamma adjustment issue, but I don´t think so. We must trust the GameTrailers people to be professional and to have made the comparison with the same adjustments.





In the XBox360 version there´s more detail and, to my eyes, there´s some cool HDR which doesn´t appear in the PS3 version (see picture above).



It´s true that consoles need some time to do their best, and the PS3 is much younger than the XBox, but for the same reason, it also has better hardware (in theory).


Who knows...

Thursday, 15 November 2007

XNA Image Reflector. Easily create web 2.0 reflected images

In the last months or years, every single power point I see, with a decent design and look, includes pictures that have been "reflected" vertically, as if they where in the top of a reflecting table or so... it´s the so-called "web 2.0 reflection". Just like this one:


This kind of effect can be easily done with Photoshop or whatever, just reflecting the image and aplying a distort and a gradient mask, but hey! those 5 minutes per image are priceless! So I decided to make a small app that allows you to create this kind of effect in 5 seconds.

Probably there´s already something similar out there (see below), but I do it just for fun and to practice some new things I´m explaining below. I will upload the source code here or at TheCodeProject, so you all can check how it´s done.

Specs:
  • Automatic reflection using a reflection polygon to specify the shape of the form to reflect
  • Automatic reflection distortion
  • Automatic alpha gradient with different gradient modes
  • Image resizing and re-locating
  • Post-processing effects for reflection: Blur, Alpha Texture, ...
  • Supports following formats: BMP, JPEG, TGA, PNG, DDS, DIB, HDR, PPM, PFM

Technical info:

  • Developed in Visual C# Express
  • All the maths and graphics done with XNA
  • Shows integration between XNA and Windows Forms

An example:

1.- Take the original picture:


2.- Apply my XNAImageReflector: with blur post processing turned on

As you can see, the cool thing of all this stuff (appart from the post-proc effects) is that you can build a path that will define the shape of the reflection. Not just vertical or horizontal reflections, which are Ok for non-perspective objects, but that doesn´t work well on logos like this one.

3.- Save the final image:

Other examples created with XNAImageReflector:



This one shows the Alpha Texture post processing effect too:

Similar projects and tutorials I´ve found:


Cheers!







Wednesday, 14 November 2007

XNA easy and efficient primitive rendering (PrimitiveBatch)

Recently, I got into the situation where I had to render a simple line in a 2D view, in XNA. As the fixed func. pipeline is no longer available, in order to do so you would have to deal with a shader. Probably a BasicEffect or another one created to render 2D lines.

I just googled up for "xna 2d rendering" and I´ve found this article in ZiggyWare (a must for any XNA developer). It shows how to do some basic collision detection between polygons, but as far as it also renders those polygons with lines, I was interested on it.

To draw all the lines there, he uses the PrimitiveBatch class, a very helpful class developed in one of the XNA samples available here, that I honestly didn´t take the time to look at. It behaves in a similar way as the SpriteBatch, basically:

batch.Begin( primitiveType );

batch.AddVertex( Vector2D);
...
batch.AddVertex( Vector2D);

batch.End();

And that´s it. Easy, ain´t it?

Cheers!

Tuesday, 13 November 2007

The real Cooperative Gaming

I´ve found a picture of what should be the so-called "cooperative gaming":


This is friendship, isn´t it?

Juas !...

Tetris a.k.a "Cuadrados de Rusia"

Y es que así es como parece que conocen en China al Tetris.


Yo ya sabía que era un juego adictivo, porque me dejaba casi todas las monedas de 25 pelas que componían mi paga en la jodía maquinilla, pero es que esta noticia me ha dejado "pa'llá":


Una anciana china de 72 años, adicta a los vídeojuegos desde hace dos décadas

La colega (se llama Liu Zhi), que se inició en este aciago mundo con el Tetris, empieza a jugar a las 9 de la mañana y termina a las 10 de la noche, y si no la vigilan, se olvida hasta de comer.


No me quiero imaginar qué nivel de experiencia tendrá en el WOW ! Debe ser la portadora de la "espada de las mil verdades".


Juas !....

Diez sorpresas al renovar el DNI (y el pasaporte de propina)

Hace dos años que me tocó visitar la oficina de Pamplona por última vez, para renovar el pasaporte. No voy a aburriros con los detalles de mi visita, símplemente diré que la experiencia fué horrorosa, y el trámite me llevó dos mañanas enteras (de pedir fiesta en el curro, claro).

Desde entonces, he leído en la prensa unas 12 noticias referentes a cambios en el modo de funcionar de la oficina: que si con cita previa, que si sin cita previa, que si con cita por telefono, que si el telefono siempre comunica, que si la gente se amotina, que si las colas llegan hasta Lérida, etc, etc.

Con todo esto, renovar el DNI se había convertido para mi en algo tan incómodo como ir al dentista, por lo que lo he retrasado todo lo posible. Claro que tras más de dos meses caducado, he decidido que hoy era el día, que hoy debía armarme de paciencia y "pasar el trago".

Obviamente, después de tanto cambio en la forma de funcionar, no tenía ni idea de si debía pedir cita previa o no, así que he llamado al Tfno de información a preguntar y.... primera sorpresa: ¡no comunicaba! Allí me han dicho que solo debía pasar por la oficina y coger número.

Antaño, yo era de los que estaba plantado como un chopo para las 8h de la mañana en la puerta de la comisaría, y a pesar de eso era el 25 en la cola. Hoy por diferentes motivos, no he podido ir antes de las 9:30. segunda sorpresa: ¡no había una cola que diera la vuelta a la manzaña!

Bueno, la cosa no va mal...

Entro en la oficina, y me llevo la tercera sorpresa: ¡Hay un puesto de información fuera, donde puedes pedir número e informarte sin apenas hacer cola! Alli me han dado el número 58, con una hora de atención aproximada de las 10:30.

Me tomo mi café matutino, me leo el diario, y a eso de las 10:15 entro de nuevo en la oficina a esperar. Mientras veo pasar los números, me doy cuenta de lo que supone la cuarta sorpresa: hay unos 8-10 puestos de atención, y la cosa parece que va rápido.

Pues sí, ciertamente la atención es bastante ligera, y pronto llega lo que constituye la quinta sorpresa: ¡me atienden casi a la hora que me habían dícho, a las 10:38!. La verdad es que por ahora, la cosa no puede ir mejor.

Me siento ante el funcionario, y la sexta sorpresa me da de golpe en la cara: tras unas gafas y camisa de cuadros, me atiende un funcionario con cara amable y muy majete, con el que he llegado incluso a charlar.

Dios, esta oficina está irreconocible... casi siento añoranza por aquellas caras de perro, aquellas frases dichas a media-gana, aquellas miradas de "es usted el hombre más tonto del mundo, porque ha traído fotos que no valen"... ¿Será que la eficiencia y la mejoría en la atención al público ha repercutido en un buen-rollo generalizado? ¡Qué gusto!

Prosigo con la séptima sorpresa: El funcionario me pregunta qué deseo, y yo, como me conozco el percal, le digo que renovar el DNI y, "si se puede", también el pasaporte.

Por supuesto, me esperaba algo del palo...: "no, lo siento, para renovar también el pasaporte tiene que coger otro número, para ir a la ventanilla XX, sellar la instancia, y volver a coger otro número para venir aqui de nuevo". ¡Pues no, señores! Ante mi demanda, el noble funcionario ha respondido con un escueto "por supuesto", que me ha puesto los pelillos como picos de escarpias...

Más sorpresas, más.... la octava sorpresa llega en el momento de ver si traía todo lo necesario. Ese instante en el que un sudor frío comienza a aparecer en tu espalda, a la par que el colega tras el mostrador te pide las fotos. Y allí llegas tu, como buen español castizo con tu sobre lleno de 200 fotos de fotógrafo, que te han costado un riñon, porque probablemente te pediran 2 para el DNI, 4 para el pasaporte, y 2 más de recuerdo. Pues no, el personaje va y me pide 1 (una) foto para ambos trámites... ¿cómo puede ser? Pues muy sencillo, porque la vida avanza que es una barbaridad, y esa foto solo la usan para escanearla, y luego la copian por ordenador. ¡INCREÍBLE! ... ¡UN APLAUSO PARA LOS CABALLEROS.... !

En fin, pago los 25 lereles de rigor (porque hay cosas que no cambian ;), echo el garabato, me toman las huellas (cuidadín que ahora estamos todos fichados, y ya no va a pasar como en el CSI, que no tienen tus huellas hasta que no haces algo malo...) y cuando ya parecía que iba terminando, y que ya no había hueco para más sorpresas, llegan la novena y la décima sorpresa, ambas de sopetón, y sin aviso, tan de repente que casi me desmayo al saber que tanto el DNI como el Pasaporte íban a entregármelos EN EL MOMENTO. Y es que el operario pulsa en un botón mágico, y de una maquinita fabricada por INDRA sale tu nuevo y reluciente DNI electrónico.

Ante tales echos y estas 10 sorpresas, solo me quedan decir dos palabras:

im-presionante...

Enhorabuena, señores funcionarios, por fin han entrado ustedes en el siglo 20 (que no en el 21, ya que eso llegará cuando podamos renovar el DNI por internet).

De todos modos no vayáis a haceros demasiadas ilusiones, ya que me han reconocido que hoy era un buen día. No os prometo nada mañana...

Salu2!

Tuesday, 6 November 2007

TechEd 2007. More C# 3 features. Object and collection initializers

Another great feature of C# version 3, shown in the TechEd today and yesterday is Object Initializers.

Working as expressions, we can create and initialize objects in a single statement. Imagine we have a class Provider, with properties Name and email. We can do the following:

Provider prv = new Provider() { Name="Microsoft", email = "microsoft@microsoft.com" }

That will create the object and initialize every property we include between the brackets.

In a very similar way work the Collection Initializers, where we can add new items to a collection in the same statement we create it:

List list = new List()
{
new Provider(),
new Provider(),
....
}

And those two features can be nested in the following way:

List list = new List()
{
new Provider() { Name="Microsoft", email = "microsoft@microsoft.com" },
new Provider() { Name="AMD", email = "amd@amd.com" },
....
}

Cheers!

TechEd 2007. .NET Language Integrated Query (LINQ)

The last session I attended on monday was:

The .NET Language Integrated Query (LINQ) Framework

by Luca Bolognese (Senior Program Manager, Microsoft).

For anyone thas has worked in data access components, software, or have struggled at anytime with databases, this represents a huge step forward in terms of productivity, robustness, understandability, and efficiency.

I´m no expert in such issues but, to my eyes, it´s just as if you could write SQL sentences right in the middle of your C# code, combined with the power of .net of course. In addition to that, LINQ can work against almost any kind of data source (SQL data bases, xml, arrays, collections, etc), and serve as well as a datasource for dataBinding.

An example:

[Assume "names" is a collection of strings, an array or whatever]

List<string> query = from s in names
where s.Length == 5
orderby s
select s.ToUpper();

The full LINQ sentence is evaluated as a single expression, but is executed in steps. First, every string in "names" is selected and returned to the second sentence. This one applies a filter selecting those with length == 5 and returns another collection, which is ordered in the third sentence. And so on... as complex as you may need.

I asked Luka how the debugger behaves in this sentences, and he said that LINQ sentences are watched in a special window which allows to see each step of the execution. This is something I´m definately waiting to try.

Just as a last note, LINQ doesn´t always behave this way, as this would be very inefficient. If the collection it´s parsing is just that, something that implements iEnumerable, it behaves so, parsing each element in the collection, iterating through the full array.

BUT, the interesting thing is: if the collection being parsed also implements iQueryable, it behaves differently, building a full query from the LINQ sentences and executing it, as once, at the end. This obviously would make debuggin more difficult, but is the efficient way to execute certain types of queries.

Cheers!

TechEd 2007. VStudio 2008, C# 3, Automatic Properties

Just following the previous post, I keep talking about the session by Daniel Moth (http://www.danielmoth.com/Blog ), yesterday in the TechEd.

He showed another C# 3 new feature that is extremely useful: Automatic Properties.

You not tired about writing something like this?

private int mNumCustomers;
public int NumCustomers
{
get{return mNumCustomers;}
set{mNumCustomers = value;}
}

This is a pain in the ass... You are supposed to use properties, to be clear, clean, robust, elegant, and a good christian, but writing them is painful. Yes, refactoring helped quite a bit, but it´s still something... don´t know... slow and uncomfortable.

Well, Microsoft says that is there to make us more productive, as there it is:

Automatic Properties a.k.a JustWriteThis:

public int NumCustomers{get; set;}

The language will take care of creating the private equivalent variable, just for us. We don´t need to write it. Just specify if you want the get and set, the get only, etc, and there it is!

Again, more productivity...

TechEd 2007. VisualStudio 2008, C# 3, MultiTargeting and Anonymous Types

Yesterday, from 16 to 17:15, Daniel Moth (http://www.danielmoth.com/Blog ) introduced the new features of VStudio 2008 and .Net Framework 3.5. It was a very impressive session, fun and interesting.

Specially exciting the new multi-targeting feature of VStudio 2008. It´s a way to tell the environment which .Net Framework version your project will target, through the project´s properties window. Just selecting in a comboBox if it targets version 2.0, 3.0, or 3.5. By selecting one of them, all of the version features are enabled or disabled for your project, and it´s possible to switch between them without loosing work. Your project will just adapt to that perfectly.

Just as a tip, VStudio 2008 finally has the option "Open folder in windows explorer" in the context menu of the solution explorer... Yeeeeeaaahhhh ! Cannot imagine why something that simple didn´t appear before. No more navigating to bin\debug folder....

Also found quite interesting some of the new C# 3 features, like anonymous types. Didn´t you find redundant something like this before?

Form f = new Form();

Why do I have to say that "f" is a windows form twice? No more, just write something like this:

var f = new Form();

And the compiler will infer that "f" is a windows form just reading the code on the right part of the sentence. It´s important to mark that this has no performance impact, as it´s just a compiler feature. Each time you compile, the MSIL code generated will definately contain the declaration in the old way. It´s just a helper right there for you, just to be more productive. And of course it works with anything:

var a = 5;
var a = 5f;
var a = new Class1();
var a = "";

Great!

TechEd 2007. KeyNote by S. Somasegar

Yesterday, at 14:00 we attended the keynote of the TechEd2007, by Microsoft´s developer division corporate vice-president, Mr. S. Somasegar.



He presented the new key features of Microsoft developments plattform: VisualStudio 2008, .Net Framework 3.5, SilverLight, the Expression Studio tools, etc.


To summarize, he presented an important part of what we are going to see in deeper detail through this next days.

More later...

Sunday, 4 November 2007

TechEd Barcelona. 2007


Tomorrow I´m traveling to Barcelona to attend the Microsoft TechEd Developers 2007. I´d be glad to meet you there if you also attend.
I´ll try to post session comments here too, at the end of each day.
Cheers!
-----
Mañana viajo a Barcelona para asistir al TechEd Developers 2007 que Microsoft organiza esta semana.
Estaré encantado de veros por allí si estáis, y también trataré de postear comentarios, impresiones o resúmenes de las sesiones a las que vaya asistiendo.
Saludos!