SPSProfessional present the BDC Killer WebParts

Data integration from an outside source into SharePoint, was one of the most wished characteristics that the SharePoint 2003 users were waiting for.


When Microsoft announced the Business Data Catalog, in Microsoft Office SharePoint 2007 we all were expecting the possibility of modifying our data, but it never happened, and by the moment the BDC remains as read-only.


On the other hand, the complexity of defining the BDC interface has always been an important barrier, so that a certain number of applications have arose to help us to define these interfaces.



SPSProfessional it’s working on a set of WebParts  with which we can edit data bases ( for the present only SQL 2005) in just a few minutes. Furthermore these WebParts are working in both MOSS 2007 and WSS3. They are namely ActionDataBase WebParts …


Let us take a quick view


Trough a little win form application ActionDataBase Generator, and introducing a simple Select query of SQL the necessary XML to configurate the ActionDataBaseGrid is generated to recover data from SQL Server and show them into SharePoint.


We can define a simple data view as it in less than one minute.



Using the same utility we can get further, there where BDC is not able to arrive. So simple as indicating a table and the ActionDataBase Generator will generate XML to form another of its powerful WebParts, the ActionDataBaseEditor. A fully CRUD WebPart for our table.


Through it we could edit online our database.



Don´t frighten, it takes just a couple of minutes.


And the ActionDataBase WebParts has other greats features as:



  • Fully customizable Tool Bar
  • Lookup fields
  • Date and DateTime fields controls
  • Fields validations (Required, Range, Regular Expression, Comparison)
  • Rich Text format fields
  • Filter data

So simple, so marvellous.


You can read more on http://www.spsprofessional.com/

TFS2008 Proposito del año

Mi buen amigo Rodrigo me dice: «A ver si jubilas NUnit y te pasas a Team System«. Bien, ese es mi propósito para el año entrante.

Jubilar NUnit, CruiseControl, RedMine y mi querido Subversion. En cuanto salga Windows Server 2008, y Team System 2008 será lo primero que haga, remodelar mi pequeña y barata infraestructura.

Como decía actualmente estoy usando lo siguiente en un modesto Pentium 4, con 512Mb de Ram que hace las labores de mini-servidor en casa.

Pruebas unitarias: MbUnit y NUnit
Integración Continua: CruiseControl.Net y CruiseControl.rb
Cobertura de código: NCover
Construcción: Nant
Repositorio de código: Subversion
Gestión de proyectos: RedMine

Una infraestructura de coste 0, versátil y potente, que me permite hacer prácticamente de todo.

Si, tal vez no esté todo integrado ni disponga de un entorno unificado, pero no se le ha resistido prácticamente nada. Herramientas con las que he pasado horas y horas de esas noches desveladas en que el proceso de automatizar tareas se convierte casi en  una experiencia religiosa, “ala Enrique Iglesias” si, descubriendo el infinito… herramientas que han dejado el listón muy arriba, que por el momento me hacen dudar si TFS estará a la altura, si llegará a cautivarme como lo han hecho mis queridas compañeras…

Incluida la última en llegar que ha sido RedMine, para aquellos que no la conozcan, es un gestor de proyectos, escrito en Ruby por Jean-Philippe Lang y es uno de los proyectos más activos dentro de la comunidad de Ruby.  

Con RedMine, se pueden gestionar diversos proyectos de toda índole, aunque está basado en Ruby, yo por ejemplo lo uso para gestionar proyectos  .Net, permite que varias personas trabajen en el mismo equipo, planificar objetivos, seguimiento de incidencias, gestión de la documentación del proyecto mediante Wiki, Foros, integración con distintos repositorios de datos (Subversion, CVS, Mercurial, Bazaar y Dracs), autentificación por LDAP etc…

Yo incluso lo tengo personalizado (lo bueno de poder tocar el código) para que me muestre en la página principal de los proyectos información sobre la últimas compilaciones, información que proviene del CruiseControl.

También, modifique el visor del repositorio para poder mostrar código c# con la sintaxis coloreada, para que gestionar documentación sobre los frameworks, ver informes sobre cobertura etc… en fin, pueden ser pijadas para algunos, en fin echaré de menos todas esas horas editando archivos XML, encadenando procesos y generando informes…   

Prometo contar mis experiencias religiosas con TFS el año que viene…

SharePoint – Pruebas Unitarias (3)

Alguien me ha recordado que empecé a escribir sobre el tema de las pruebas
unitarias y finalmente no termine… o por lo menos no conté algunas de las
prácticas que uso… cierto.

Parte 1Parte 2

Básicamente la técnica que uso habitualmente consiste en aprovisionar un
sitio de forma automática. Y ¿Cómo se aprovisiona un sitio automáticamente?,
pues de la manera más sencilla posible. Usando Plantillas.

Provisión – Escenario de Pruebas

De modo que tengo distintas plantillas pre cargadas con listas, bibliotecas
de documentos, páginas etc… algunas incluyendo contenido, archivos, elementos de
las listas y un montón de cosas.

Es sencillísimo crear estos escenarios y pueden ser simples, incluyendo uno ó
unos pocos elementos ó complejos incluyendo una jerarquía de de sitios, en cuyo
caso crearemos una plantilla por cada sitio para más tarde reconstruir una
jerarquía de sitios determinada.

Después usamos un ayudante en nuestras pruebas para aprovisionar nuestros
sitios, un ejemplo de un aprovisionador de sitios  básico sería algo como
esto, he recortado algunas cosas …

public class SPProvisioningHelper
{
private const string DefaultWebName = "TestSite";
private readonly Dictionary<string, SPWeb> _webs;

private SPSite _site;
private string _urlTestSite;

public SPProvisioningHelper()
{
_webs = new Dictionary<string, SPWeb>();
UrlTestSite = "http://enjendro/unittests/";
}

// Url del sitio de pruebas public string UrlTestSite
{
get { return _urlTestSite; }
set { _urlTestSite = value; }
}

// Coleccion de sitios sobre la que estamos trabajando public SPSite Site
{
get { return _site; }
}

// Una web determianda public SPWeb GetWeb(string name)
{
return _webs[name];
}

// Provisiona una web vacia colgada de parentUrl // Pruebas rápidas y de creación de elementos public void WebProvisioning(string parentUrl)
{
_webs.Add(DefaultWebName, CreateWeb(DefaultWebName, parentUrl, string.Empty));
}

// Crea una web public void WebProvisioning(string name, string parentUrl)
{
_webs.Add(name, CreateWeb(name, parentUrl, string.Empty));
}

// Crea una web basada en una plantilla public void WebProvisioning(string name, string parentUrl, string template)
{
_webs.Add(name, CreateWeb(name, parentUrl, template));
}

// Crea las webs (hace el trabajo duro) private SPWeb CreateWeb(string title, string parentUrl, string template)
{
Trace.WriteLine(string.Format("Creating test web {0} at {1}", title, parentUrl));

_site = new SPSite(UrlTestSite + parentUrl);
SPWeb web = _site.OpenWeb();
SPWeb newWeb;

// Stop if (web == null)
{
throw new SPException(string.Format("Can´t open SharePoint Site in: {0}", _site.Url));
}

// Si existe lo borramos if (web.Webs[title].Exists)
{
RecursiveDeleteWebs(web.Webs[title]);
web.Webs[title].Delete();
}

// Web vacio if (template.Equals(string.Empty))
{
newWeb = web.Webs.Add(title);
}
else { // web basado en plantilla personalizada try
{
SPWebTemplateCollection webTemplateCollection;
webTemplateCollection = _site.GetCustomWebTemplates((uint) web.Locale.LCID);

SPWebTemplate webTemplate = webTemplateCollection[template];

newWeb = web.Webs.Add(title,
title,
string.Empty,
(uint) web.Locale.LCID,
webTemplate,
true,
false);
}
// web basado en plantilla no personalizada catch (ArgumentException)
{
newWeb = web.Webs.Add(title,
title,
string.Empty,
(uint) web.Locale.LCID,
template,
true,
false);
}
}

Trace.WriteLine(string.Format("Created web {0} at {1}", newWeb.Title, newWeb.Url));

return newWeb;
}

// Limpieza public void Clean()
{
DeleteWebs();
// Disposes } // Elimina las webs private void DeleteWebs()
{
foreach (SPWeb web in _webs.Values)
{
RecursiveDeleteWebs(web);
}
}

// Elimina todo recursivamente private void RecursiveDeleteWebs(SPWeb parentWeb)
{
// ... } }

Pruebas

Después en nuestras pruebas podemos inicializar los distintos escenarios, veamos un ejemplo usando el
aprovisionador anterior

[TestFixture]
public class Tests
{
// El ayudante private SPProvisioningHelper provisioningHelper;

[TestFixtureSetUp]
public void Setup()
{
// Incializamos el ayudante provisioningHelper = new SPProvisioningHelper();

// Ejemplos // Aprovisionamos p1 desde una plantilla nuestra provisioningHelper.WebProvisioning("p1", "P1", "Plantilla1.stp");

// jerarquia provisioningHelper.WebProvisioning("p1", string.Empty);

// p1/p1a -> sitio de grupo provisioningHelper.WebProvisioning("p1a", "p1", "STS");

// p1/p1b -> un blog provisioningHelper.WebProvisioning("p1b", "p1", "Blog");

// p1/p1a/p1a1 -> un wiki provisioningHelper.WebProvisioning("p1a1", "p1/p1a", "Wiki");

// p1/p1a/p1a1/p1a11 -> sitio en blanco provisioningHelper.WebProvisioning("p1a11", "p1/p1a/p1a1");

}

// Una prueba simple [Test] public void GetCurrentUserName()
{
string expectedUser = WindowsIdentity.GetCurrent().Name;

SPUser user = provisioningHelper.GetWeb("p1").CurrentUser;

string userName = user.LoginName;

Trace.WriteLine(string.Format("Expected: {0} User: {1}", expectedUser, userName));
Assert.IsTrue(expectedUser.Equals(userName,StringComparison.OrdinalIgnoreCase));
}

// Limpieza [TestFixtureTearDown] public void TearDown()
{
provisioningHelper.Clean();
}
}

Esto es básicamente, desde luego como ocurre con todos los sistemas que deben
ser aprovisionados, estos llevan su tiempo, en cualquier caso tampoco me parece
tanto y además hay unos estupendos quad core relativamente baratos así que no es
escusa para no tener una máquina de pruebas.

Mal dia – backing up is sexy!

Buff, un mes sin escribir nada. La verdad es que le mes pasado ha sido terriblemente duro, en cuanto a trabajo se refiere, además de las dos semanas que me he pasado por el sur de España Sevilla, Córdoba, Málaga y  por Madrid, después a mi regreso me he encontrado con algún que otro desastre y un montón de trabajo acumulado.

Mal día….

El caso es que el viernes por la noche mientras realizaba copias de seguridad de mi portátil, (je, hace un par de días volví a ver el episodio de “Sexo en New York” -Sex and the city- My Motherboard My shelf)

“Always backup and keep it remote – no matter how lucky you feel! And yes – backing up is sexy!”

Me he desesperado con Windows Vista, y la velocidad de copiado de archivos en red. (Y eso que tengo el SP1 RC)

Tras pasar un buen rato el sábado por la mañana buscando por internet, me he encontrado con algunas cosas interesantes como

http://www.technoblogo.com/2007/02/12/Windows+Vista+Tip+3++Slow+Network+Issues.aspx
http://support.microsoft.com/default.aspx/kb/931770/en-us

y otras poco mil entradas que he probado sin mucho éxito…

Después he tratado de activar el 802.11 n que tiene el Linksys RT300N que uso en casa, ya que no me había dado cuenta que el portátil que uso ahora (Compaq 8510p) lleva una tarjeta de red 802.11 n la Intel 4965AGN , esto ha sido el colmo.

Tras perder tres horas no ha habido manera de que detecte el protocolo N (de las Narices) he actualizado firmwares, drivers he cambiado prácticamente todo lo cambiable y probado todo lo probado sin fortuna alguna… incluido el cambio de seguridad WPA2-AES que parece ser es necesario para que se detecte el N, (tras el cual dos de los equipos de casa han dejado de funcionar tienen todavía el XP, lo que me ha llevado a instalar el KB893357, que activa la compatibilidad WPA2, já, pues en mis equipos las tarjetas deben ser muy viejas por qué no lo soportan. )

En ese momento he recordado ese extracto que suele leer Chema Alonso, sobre la configuración de una tarjeta Wifi en Linux, y me he empezado a partir de risa, de pura desesperación .. Así que he optado por abrir unas cervezas .. y hacer de esto una experiencia cuando menos amena …

Finalmente he optado por soltar el disco (es un IOMEGA home network con Ethernet, que tengo conectado al router) y conectarlo por USB a mi portátil, que poco glamur …

De modo que he empezado a copiar los archivos, pero cuando han llegado la Maquinas virtuales …. me he topado con la limitación de copiar archivos de más de 4Gb (fat32) … a ver que alguien me lo explique, hasta ahora copiando archivos por red SMB no había tenido problemas para copiar archivos de más de 4Gb  – No lo entiendo –

De modo que ni corto ni perezoso, decido hacer un convert a NTFS, por si acaso miro en la web de IOMEGA, no vaya a ser que no sea adecuado…

Las recomendaciones típicas de que si pasas a NTFS no podrás volver a FAT32 etc … que no podré usarlo con Linux, Windows 98 o Mac  etc…
De modo que adelante .. (Le llevo casi una hora .. ya que tenía el 50% ocupado) y después lo deje copiando archivos mientras veía una peli.

Más tarde, lo desconecte del USB, lo volví a conectar a la LAN y descanse feliz a pensando de que mis datos estaban a salvo …

“– backing up is sexy!” yeahhh

Bueno, resulta que más tarde he tratado de conectarme por SMB para buscar unos documentos que tenia archivados y HORROR … mi disco ha desaparecido … intento entrar en la parte de administración y ohhh sorpresa … no entra…
 
Tal vez se les haya pasado algún tipo de recomendación en las instrucciones a los señores de IOMEGA.

Bueno, por el momento no he tenido tiempo para ver qué diablos ha pasado exactamente de modo que ya os contaré como termina la historia, por el momento sospecho que el software del firmware no reconoce NTFS. En cualquier caso, podrian publicar el firmware como hacen los señores de Linksys …. 

Ah no estoy excesivamente preocupado ya que de las cosas importantes guardo siempre una copia ó dos en CD ó DVD.

Pero si me he sentido un poco identificado con Carrie …

Desde luego un mal día … but remember “– backing up is sexy!”

CEUS – III Conferencia de usuarios de SharePoint

El martes 23 de Octubre, se celebra en Madrid la tercera conferencia de usuarios de SharePoint.

Si queréis asistir, debéis registraros con anterioridad, es imprescindible.


Por la mañana habrá diversas ponencias comentando casos prácticos de implantación y por la tarde sesiones técnicas. La agenda completa se puede consultar en este ENLACE.


10:00  Bienvenida y Situación General de SharePoint
10:20  Experiencia Criteria Caixa Corp
10:50  Experiencia Ancert – Agencia Notarial de Certificación
11:20  Experiencia Ministerio de la Presidencia
11:50  Descanso y café
12:20  Experiencia Caja Mediterráneo
12:50  Microsoft Office Sharepoint en Intenet – Web 2.0 – Silver Light
13:20  Búsqueda Empresarial – Search
13:40  Futuro de SharePoint
14:00  Almuerzo




Para más información llamar al 902322344 o un email a eventos.microsoft@sitel.es

Y podéis registraros AQUÍ.


 

Ruby me mola.succ !!!

Finalmente le he dedicado todo el fin de semana a Ruby, y la verdad es que estoy contento, el aprendizaje es lento pero los resultados y los avances son espectaculares, rápidos y satisfactorios.

Desde luego, es un cambio bastante fuerte, sobre todo para los que tenemos los lenguajes tipados y estrictos tan metidos en la cabeza.  Sin embargo, estos días he experimentado distintas sensaciones:


Momentos en los que todo te parece caótico, desordenado y sucio (evidentemente, mi cabeza piensa en restricciones una y otra vez).

Las consabidas frustraciones al saber que no estás haciendo las cosas del mejor modo, esto es propio del aprendizaje, ya que mientras no se alcanza un nivel determinado, haces bastantes chapuzas (cosa que odio, pero que son irremediables).

Exaltación de la comunicación, momentos en los que la expresión del lenguaje es como siempre he creído que debería de ser. Aquí, es cuando a uno se le empieza a ir la olla…

Exaltación de la productividad, escribes poco y hace mucho, las extensiones del lenguaje (dsl) con ese alo tan humano son una pasada, la gran cantidad de gemas y plugins que existen para hacer cosas serias y otras más divertidas. La rapidez desarrollando… editar -> probar

Libertad…  (Se me fue la olla del todo, tenía ganas de gritar como el anuncio de Amena)

Cantidad de cosas nuevas aprendidas… (y otras miles y miles de cosas que dejaré que descubraís)

Al final le he dado un poquito de estilo a mi programita (queda mas glamoroso) y le he añadido algunas cosas divertidas, por ejemplo tags para localizar los posts que voy introduciendo, para ahorrar teclear lo que he hecho es usar las palabras que figuran en el título.


 


Le he añadido una opción para que me suba las fotos a Flickr, de modo que yo saco la foto con la black, la subo a mi servidor personal  y si quiero compartirla con mis amiguetes solo tengo que decirle que la suba a flickr.  (http://www.flickr.com/photos/blackbmonster)





Como complemento + geek, a la vez que subo la foto lo comunica via twitter  (hay nuevas fotos!!!)  (http://twitter.com/blackbmonster)


También le he añadido una opción para ver los mensajes personales de twitter y poder enviar notas.  Ah y una cosa más un pequeño agregador de feeds 🙂


  


Recursos

• ActionMailer
• Acts_as_taggable
• Feed Normalizer
• Twitter4r


Otra cosa, sigo con el tema de google maps, y la única manera que he visto de poder traer los mapas a la black, es descargando directamente las imágenes desde el servidor de google, pasándolas a mi servidor ó que me las mande por email.

Si alguien ha conseguido verlas en el navegador de la black, que me lo diga…

Ruby me mola!!!

Hace un par de días me trajeron una nueva blackberry, la curve. Ya sabéis lo que adoro yo estos cacharritos, la curve esta fenomenal, tiene cámara de fotos y gps y es mucho más pequeñita y manejable que la que tenía antes.  Ahora a su lado parece un ladrillo.

La cosa es que llevaba tiempo pensando en hacer algún tipo de aplicación para la blackberry con java, pero lo de siempre… falta de tiempo.

Ayer por la tarde, recordé un proyecto en el que estaba trabajando Miguel Jimenez y me entonces fue cuando me vino la idea a la cabeza…

Ruby+BlackBerry … guauuuuu para qué diantres voy a andar dándole ahora a java (no lo descarto dentro de un par de días … ) si me puedo hacer una aplicación para lo que quiero en Ruby…

Así que ayer por la noche me puse manos a la obra, la idea consistía en tener un pupurry de cosas:

• Blog
• Galería de fotos
• Ubicaciones GPS

De modo que pensé, bueno si un blog se hace en 15 minutos (url video) esto se debe hacer en unos…. Digamos 45 ¿no?

Bueno, teniendo en cuenta que el diseño para la black es casi nulo, estoy seguro que un profesional de ruby se lo hubiera currado en una hora, a mí me ha costado algo más, pero bueno, todavía estoy aprendiendo… pero no le he dedicado más de 10 horitas

Estoy encantado con el resultado. Os cuento lo que he hecho, básicamente he hecho un blog tipo al del video, por cada post puedo tener tantos comentarios como quiera y tantas fotos como quiera, las fotos se pueden subir desde el teléfono o cualquier sitio, automáticamente se generan dos miniaturas (necesario para cuando se buscan imágenes por gprs) un thumb de 100×100 y una imagen al 50%, también guardo la foto original obviamente.




Después puedo localizar las fotos por entradas del blog (que serían como categorías y albunes de una galería de fotos) o por fecha.

Posiblemente mañana le añada unos tags lo cual me ahorrará el trabajo de localización de imágenes.

Desde luego el andamiaje que genera ruby es ideal para aplicaciones en dispositivos móviles dado lo básicas que son, aún así yo he cambiado las vistas una pizca, para sobre todo adaptar los enlaces al uso que le voy a dar. (las fotos son del explorer yo me he preocupado de que se vea bien en la black que es lo que voy a usar básicamente)




En cuanto a las ubicaciones del GPS, lo que he hecho es dejar un campo en cada entrada del blog, para almacenar la ubicación que nos da el gps. La black cuando copiamos la ubicación del gps, lo que hace es generar un enlace a una página, http://maps.blackberry.com/?lat=42.82735&lon=-1.66602&z=0 esta url, solo funciona desde la blackberry, con lo cual si la copiamos en un mensaje y se la enviamos a alguien no podrá visualizar el mapa.



Yo lo que he tratado de hacer es mostrar la imagen de google maps, cuando se consulte la url guardada, pero desde el navegador de la black, es imposible acceder a google maps. De modo que guardo el enlace del mapa de la black, pero a su vez genero otro enlace correspondiente al mapa de google. Para esto he usado la api de google, (ya que en un futuro quiero hacer más cosas con esto). Y así desde casa, puedo ver la ubicación en el mapa de google.





Recursos
• Ruby + Rails
• Attachment_fu
• RMagick
• YM4R
• Google maps tutorial
• Google Maps API
• Cartographer
• Basic Rails, Geocoding, and Google Maps howto

Lenguajes como novias

Si, seguro que también alguno de vosotros os habéis dejado seducir por otros lenguajes de programación. Los que comenzamos a tener una edad, seguro que hemos pasado ya por varios.

En estos momentos soy un PDP, Programador Dependiente de la Plataforma, de modo que mis opciones en cuanto a la elección del lenguaje quedan por el momento un poquito limitadas.

Sin embargo, adoro la programación y siempre trato de probar todo lo que puedo, antes programaba en Python, muchas utilidades y desde hace algún tiempo es Ruby, el que me tiene “loquito”. Me gustan y flirteo con ellos, pero a muchos de ellos nunca les puedo dedicarles todo tiempo que me gustaría.

Ayer por la noche, leyendo el blog de Ruby, di con este post “7 reasons I switched back to PHP after 2 years on Rails” de Derek Sivers. 

Derek, como se desprende del post, se enamoró de Ruby y lo dejo todo, hasta el momento en que se pregunto si había algo en RUBY que no pudiera hacer con PHP, bueno, no soy quién para decir si dos años es poco o mucho tiempo, creo que es más de los 5 minutos con los que muchos se enamoran de Ruby viendo esas demos tan cañeras y tiempo suficiente para tener un conocimiento profundo de Ruby.
Aunque conozco PHP y RUBY, tampoco puedo decir con rotundidad si se puede hacer todo lo que se hace en PHP en RUBY y todo lo que se hace en RUBY en PHP.

Pero puedo aventurar que sí que se puede. Obviamente el esfuerzo que se debe emplear y/o el resultado que se obtiene puede que no tengan nada que ver en este caso.

Ahora suponiendo por un momento que tenemos dos lenguajes, con los que se puede hacer lo mismo, con el mismo esfuerzo y con los mismos resultados. ¿Cuál escogerías?   (Vb.Net y C#)

Casi con toda seguridad, aquel con el que te encuentres más cómodo. De modo que entiendo a Derek,  aunque no esté del todo  en esta misma disyuntiva.

Pero si él se siente más agustito con su PHP, ¿Por qué no continuar? ¿Quiénes somos los demás para decirle que no cambie?

Por un momento imagina que tienes Java en las venas, que lo lees todo, que escribes un blog de Java, que participas en charlas y conferencias etc… , pero en tu trabajo de 8 a la hora que sea, tú jefe te hace escribir código en (Vb ó C#). ¿Qué harías si fueras tú propio jefe?

En mi caso las decisiones en cuanto a los cambios de lenguaje han venido ocasionadas por un cambio de trabajo o por un cambio de plataforma. Y el conocimiento de muchos otros por mera inquietud. Y puedo decir que de todos he aprendido algo. Y que siempre hay unos con los que te sientes más cómodo que con otros.

Durante una temporada programe en Multibase, un 4GL de Transtools, parecido al 4GL Informix, y aunque era muy potente y programe muchas cosas, nunca me sentí tan agusto como con Clipper que era el lenguaje con el que había programado antes.

En cualquier caso no deja de ser divertido el revuelo que ha levantado al reconocerlo públicamente en el blog de Ruby en O’Reilly, ya que no suele ser una cosa normal (344 comentarios, esta mañana). 

Derek, nos ha dejado un poquito de su experiencia, lo que es de agradecer, ya que este tipo de cosas son enriquecedoras, se podrá estar más o menos de acuerdo con su decisión, pero al fin y al cabo es a él al que le afecta.

La gente prueba y se equivoca, se equivoca y prueba de nuevo. Incluso con el tiempo se prueba otra vez algo que ya se probó… para ver si ha cambiado.

Dentro de las 7 razones hay una que me gusta especialmente, “PROGRAMMING LANGUAGES ARE LIKE GIRLFRIENDS: THE NEW ONE IS BETTER BECAUSE *YOU* ARE BETTER

Vista pasa por la óptica

ó Vista usará gafas

Así es, para ver mejor. Y en este caso no como las de Ciclope “slim” de x-men que las necesita para no andar destrozándolo todo con su poderosa visión.

Hace unos días en hotfix.com se hablaba de



Sin embargo hoy era el día en que se abría la óptica para unos 10.000 cieguillos (no de fin de semana) que podrían probar la tan esperada lente correctora.

Esa  con la que se podrá Ver  lo que no se Vio, Velocidad…  y al parecer el asunto funciona 🙂 yo pobre cieguito…  desde que abandone la XP (Programación eXtrema) y digo esto ya que comparado con lo que tengo aquello era eXtremo de verdad, estoy probando las maravillosas lentes correctoras y de momento puedo decir que Veo mejor.

¿Que yo que sé? con lo del NDA, (Nunca Devuelvas hAcienda) lo que se puede decir o no….

Y el 7º Dia Descanso

Y el séptimo día, descansó


¿Pero? ¿Y si hubiera tenido que seguir un día tras otro y una semana tras otra? Más o menos lo que nos pasa a los desarrolladores, el trabajo nunca termina, con una línea completas un método, con un método una clase, con una clase un caso de uso un espacio de nombres, una biblioteca… siempre habrá detrás otra nueva clase, otra nueva biblioteca y así sin parar.

Un día tras otro…  codificando, depurando, compilando, probando, no pongo meando porque a veces creo que me lo puedo hacer encima por no despegar los dedos del teclado …

Y a todo esto, cientos y cientos de tecnologías a nuestro alrededor que cambian constantemente, ¿y si a Dios le hubiesen cambiado las especificaciones una y otra vez?, y ¿si cada día hubiera tenido una nueva tecnología a su alcance?

Sinceramente, el mundo estaría por hacer. Sólo con el tiempo que lleva aprender, probar, crear un manual de buenas prácticas y realizar un framework adaptable y extensible y bla bla bla, para poder empezar a trabajar… estaría todavía diseñando a Adán.

Y eso gracias a que no dejo que Adán  diera las especificaciones de Eva, porque todavía estaríamos esperando… (Lo digo sin ánimo de ser machista), porque estaríamos  todavía en alguna iteración de la metodología divina, comprobando si el modelo cumple con las especificaciones del cliente.

En fin, si las cosas fueron así de rápidas supongo que serian por que no había, “cliente” y ¿si no había cliente?, ¿si no había especificaciones?, siempre me quedaré con la duda si se pudo hacer  en 5 ó incluso en 4 días y se demoró el asunto. Digo yo, que siendo Dios, podía haberlo hecho todo en UNO, Mundo y Ploffff, toma MUNDO.

De modo que no me queda más que pensar que uso algún tipo de metodología para acometer el trabajo. ¿Cuál?, ¿Cómo hacer un mundo en 6 días y descansar el 7º? ó tal vez usó ¿Cómo hacer el mundo en 4 días y descansar 3?, desde luego que si uso esta no consiguió su objetivo, a pesar de la metodología.

Creo que nos quedaremos sin saberlo…

Volviendo al asunto, que en absoluto es la metodología, si no la gran cantidad de tecnologías de las que disponemos, y la gran cantidad de las que dispondremos en breve.  Haciendo un pequeño resumen de las que necesitamos para desarrollar, pongamos por ejemplo SharePoint… un lenguaje .Net(C# ó VB.Net), Html, ASP.Net, XML, XSLT, JavaScript, Windows Workflow Foundation, InfoPath, TSQL, un SDK gordito y sin ejemplos, con más de 120Mb, 98 NameSpaces y 1.256 clases…

¿Sabéis una cosa? Yo quiero, que llegue el 7º Día.