<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results for 'app:weblogs' matching tag 'PHP'</title><link>http://msmvps.com/search/SearchResults.aspx?q=app:weblogs&amp;tag=PHP&amp;orTags=0&amp;o=DateDescending</link><description>Search results for 'app:weblogs' matching tag 'PHP'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Ense&amp;#241;ando a programar (Parte 1)</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/19/ense-241-ando-a-programar-parte-1.aspx</link><pubDate>Mon, 19 Oct 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1733324</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;El tema que se&amp;ntilde;ala el t&amp;iacute;tulo de este post es un tema ampl&amp;iacute;simo, del que habr&amp;iacute;a tanto para decir y discutir. Veamos de tratar algunos puntos, que surgen de experiencia personal, e ideas sin probar que van rondando mi cabeza desde hace unos a&amp;ntilde;os.&lt;/p&gt;
&lt;p&gt;Primero, una aclaraci&amp;oacute;n: si bien gran parte de mi actividad semanal (en estos tiempos, m&amp;aacute;s del 60% del tiempo que empleo), est&amp;aacute; dedicado al dictado de cursos&amp;nbsp;(en empresas e institutos ac&amp;aacute; en Argentina, o en charlas en distintas ciudades) me considero no un instructor de programaci&amp;oacute;n, sino un desarrollador de software que por esos accidentes de la vida termin&amp;oacute; dedicando tanta cantidad de sus horas al dictado de clases. Pero no soy una persona pedag&amp;oacute;gica, o que haya estudiado para ense&amp;ntilde;ar sino, como muchos otros instructores, soy alguien que programa y que muestra algunos temas de programaci&amp;oacute;n, desde mi propio &amp;oacute;ptica personal (hace a&amp;ntilde;os que no doy un curso oficial o de Sun o de Microsoft, prefiero dar mis temas a mi forma y con mis temarios).&lt;/p&gt;
&lt;p&gt;Segundo: prefiero programar que ense&amp;ntilde;ar. Contrariamente a lo que algunos de Uds. podr&amp;iacute;an pensar, para m&amp;iacute; ense&amp;ntilde;ar no es la mejor forma que imagina de pasar mi tiempo profesional, por lo menos en cursos presenciales de la forma en que me toca ahora dictar. Prefiero escribir, leer, programar ejemplos, pruebas de conceptos, aplicaciones completas, describir temas en posts, antes&amp;nbsp;que estar dictando una clase presencial (una charla es otra cosa: es m&amp;aacute;s interesante, es para presentar un tema, y llamar a la acci&amp;oacute;n a los asistentes, sin tener que seguir por semanas hablando de lo mismo). Cuando tengo, digamos, un curso para las 18:30, ya s&amp;eacute; que ese d&amp;iacute;a no puedo trabajar hasta las 18hs en un proyecto, o no puedo irme a almorzar tarde, o no puedo salir de viaje a otra ciudad, o no puedo&amp;hellip;&amp;nbsp; o voy a salir demasiado tarde para ir a cenar tranquilo, o pasar por tal lado, o &amp;hellip; y mil cosas m&amp;aacute;s. Un curso es un clavo en el medio de cualquier agenda a armar. Tambi&amp;eacute;n pasa que un curso que no es nocturno, parte al medio cualquier d&amp;iacute;a de trabajo, especialmente cuando trabajo en un equipo Scrum. Como los cursos tienen d&amp;iacute;as ocupados durante varias semanas, tambi&amp;eacute;n se me complica organizar cualquier visita al interior de mi pa&amp;iacute;s, para dar una charla sobre un tema. En definitiva, curso presencial con muchas clases, es un incordio para cualquier agenda.&lt;/p&gt;
&lt;p&gt;Y una de las cosas que m&amp;aacute;s me cansan, a esta altura de mi vida, es hablar, hablar y hablar durante horas en un curso. Vuelvo a mi cubil, a veces, bastante cansado y congestionado, nada m&amp;aacute;s de hablar. Imagino que en cualquier momento comienzo a dar una clase mostrando cosas en el proyecto y explicando lo que hago escribiendo en el Notepad&amp;hellip; :-)&lt;/p&gt;
&lt;p&gt;Hechas esas confesiones personales, respiro hondo,&amp;nbsp;y paso a comentar algunos problemas que detecto&amp;nbsp;en los cursos que conozco, los m&amp;iacute;os.&lt;/p&gt;
&lt;p&gt;Muchos de mis cursos se pueden circunscribir a estos tipos:&lt;/p&gt;
&lt;p&gt;- Grupo de gente que conoce algo de programaci&amp;oacute;n, que pueden estar en distintos niveles, y quieren aprender un tema de tecnolog&amp;iacute;a, ejemplo: ASP.NET o JSP.&lt;/p&gt;
&lt;p&gt;- Curso con m&amp;aacute;quina o sin m&amp;aacute;quina y proyector&lt;/p&gt;
&lt;p&gt;Bien, comienzo por los temas que veo que no est&amp;aacute;n del todo bien y se pueden mejorar, o cambiar completamente por otro &amp;ldquo;approach&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Notemos que los cursos presenciales tienen un gran problema: son, justamente presenciales. Hay que combinar los horarios de todos los que quieren participar, reservar tal tiempo a tal hora y lugar; tambi&amp;eacute;n&amp;nbsp;tienen que estar todos presentes. Esto es un resabio de como se ense&amp;ntilde;aba en las universidades que comenzaron a aparecer en la Edad Media: como no hab&amp;iacute;a libros, el papel no exist&amp;iacute;a o era caro y los profesores escasos, la &amp;uacute;nica forma de ense&amp;ntilde;ar era presencial: juntar un grupo que ten&amp;iacute;a que escuchar a un profesor mientras daba un tema. En aquellos a&amp;ntilde;os incluso&amp;nbsp;se estudiaba para&amp;nbsp;ejercitar la memoria ante la escasez de elementos para tomar apuntes.&lt;/p&gt;
&lt;p&gt;Pasaron los siglos y veo seguimos con el mismo esquema. Algunos problemas derivados de esto:&lt;/p&gt;
&lt;p&gt;- Cada asistente tiene que venir, a cada clase. Si llueve, si est&amp;aacute; complicado en el trabajo, si se enferma, por lo que fuera se pierde una clase que en generle al es irrecuperable presencialmente. Tiene que estar disponible cada d&amp;iacute;a al horario en que se dicta el curso, por varias semanas a veces. Y si un d&amp;iacute;a se le complica asistir lo m&amp;aacute;s probable es que falte o que llegue tarde y no pueda aprovechar bien la clase.&lt;/p&gt;
&lt;p&gt;- Cada asistente mismo tiene que estar con el &amp;aacute;nimo m&amp;aacute;s despierto, durante varias horas, para captar todo lo que se dicta en el curso.&lt;/p&gt;
&lt;p&gt;- Como un curso presencial implica asignar recursos escasos, como lugar, proyector o m&amp;aacute;quinas, sala, etc., entonces cada clase dura por lo menos 3 horas durante las cuales o se dan demasiados temas, de tal forma que no hay tiempo de asimilar, o se dan pocos y el curso se encarece por durar m&amp;aacute;s tiempo.&lt;/p&gt;
&lt;p&gt;- El instructor tiene que explicar algo que ya explic&amp;oacute;, probablemente, cuarenta veces.&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;Como los asistentes, el instructor tambi&amp;eacute;n tiene que estar con todas las luces, explicar de forma clara y tener todas las neuronas prendidas en cada clase, que se repite y repite a lo largo del a&amp;ntilde;o.&lt;/p&gt;
&lt;p&gt;- No siempre el lugar de dictado es el adecuado: o no est&amp;aacute; cerca o no tiene todos los elementos en condiciones.&lt;/p&gt;
&lt;p&gt;- No todos los asistentes tienen el mismo nivel de conocimientos inicial con lo que no todos van aprovechando el contenido de la misma forma.&lt;/p&gt;
&lt;p&gt;- Si trabajan con m&amp;aacute;quina, el curso se alarga. Se necesita&amp;nbsp;m&amp;aacute;s tiempo para corregir ejemplos en cada m&amp;aacute;quina. Tambi&amp;eacute;n pasa que&amp;nbsp;algunos asistentes terminan antes y otros quedan trabados. Coordinar las distintas velocidades es dif&amp;iacute;cil de manejar. Muchas veces sugiero trabajar de a grupos, con poco &amp;eacute;xito. Pasa cuando los asistentes son particulares que no se conocen entre s&amp;iacute; y hay una m&amp;aacute;quina por persona: la gente prefiere encarar por su cuenta, en solitario, cada ejercicio. Esto trae como consecuencia que&amp;nbsp;la clase se alarga. O hay que alargar&amp;nbsp;el curso completo, con el consiguiente aumento del costo final.&lt;/p&gt;
&lt;p&gt;- Aun teniendo pr&amp;aacute;ctica para captar un tema, un asistente puede necesitar su tiempo para entenderlo. Necesita practicar y jugar con un ejercicio un tiempo. No siempre es posible disponer de ese tiempo: muchas veces porque hay que seguir con otro tema. &lt;/p&gt;
&lt;p&gt;- Si no trabajan con m&amp;aacute;quina, muchas veces los asistentes no se toman el tiempo para practicar. Hay varias razones: est&amp;aacute;n tomando el curso en el trabajo pero no tienen m&amp;aacute;quina adecuada para practicar. O est&amp;aacute;n tapados de trabajo y no tienen tiempo. O sus jefes no les asignan tiempo para practicar. O podr&amp;iacute;an practicar en una m&amp;aacute;quina personal, al volver a casa, pero ah&amp;iacute; tambi&amp;eacute;n: hay otros temas de que ocuparse. Me ha pasado dejar ejercicio a un curso y que de los veinte integrantes s&amp;oacute;lo uno o dos practic&amp;oacute; algo entre dos clases. Cuando esto se repite, a lo largo de las clases, llega un momento que el contenido que se trata no se asimila porque no se practic&amp;oacute; lo anterior. Llegados a ese punto, sin pr&amp;aacute;ctica de lo ya tratado&amp;nbsp;es dif&amp;iacute;cil captar todas las facetas del contenido nuevo. Tambi&amp;eacute;n a algunos asistentes se les complica instalar todo lo que necesitan para practicar. Una vez, recuerdo, puse un ejercicio entre clases en un curso de cuarenta personas. Lo&amp;nbsp;escrib&amp;iacute;&amp;nbsp;mal planteado a prop&amp;oacute;sito. A la siguiente clase, solo uno de los asistentes se dio cuenta del problema: era el &amp;uacute;nico que lo hab&amp;iacute;a encarado.&lt;/p&gt;
&lt;p&gt;- El lugar de dictado puede estar a varios kil&amp;oacute;metros de donde un asistente vive y trabaja.&lt;/p&gt;
&lt;p&gt;- Si el curso es en el propio trabajo,&amp;nbsp;un asistente puede sufrir interrupciones, o por tener un tema &amp;quot;urgente&amp;quot; para solucionar, debe abandonar&amp;nbsp;la clase.&lt;/p&gt;
&lt;p&gt;- Si el curso es en el trabajo, pero despu&amp;eacute;s o antes de hora de oficina, a muchos no les es f&amp;aacute;cil participar por tener otras actividades o no poder llegar m&amp;aacute;s temprano.&lt;/p&gt;
&lt;p&gt;- De vez en cuando me pasa que algunos asistentes no tienen mucha motivaci&amp;oacute;n para hacer el curso: los &amp;ldquo;mandaron&amp;rdquo; al curso y no tienen un soporte, un apoyo, de parte de sus empleadores, para sacar provecho del mismo (especulo, pero eso puede ser tambi&amp;eacute;n un &amp;ldquo;test de proactividad&amp;rdquo; de su empleador o contratante).&lt;/p&gt;
&lt;p&gt;- Otras veces, el asistente est&amp;aacute; motivado porque necesita trabajar pero hace tiempo que no toma un curso. Las tecnolog&amp;iacute;as nuevas lo sobrepasan y termina&amp;nbsp;necesitando de m&amp;aacute;s tiempo para aprovechar el contenido.&lt;/p&gt;
&lt;p&gt;- Si el curso es por cuenta de cada integrante, no lo paga una empresa, entonces&amp;nbsp;probablemente tenga que asistir despu&amp;eacute;s de hora un d&amp;iacute;a de semana&amp;nbsp;o un s&amp;aacute;bado. En esos horarios tambi&amp;eacute;n tendr&amp;aacute; que pelear su tiempo con otras actividades, familiares, o de estudio formal.&lt;/p&gt;
&lt;p&gt;- El temario es introductorio para un lenguaje de programaci&amp;oacute;n, pero no se ense&amp;ntilde;a a programa. Se pide expl&amp;iacute;citamente que se conozca de programar y de base de datos. Y algunos asistentes no tienen esos conocimientos en firme.&lt;/p&gt;
&lt;p&gt;- Otro caso es cuando el temario es intermedio o avanzado.&amp;nbsp; Puede pasar que de los que asisten, algunos ya saben varios puntos del temario y se aburren. Mientras, otros necesitan repasar o incluso aprender un tema, porque no llegan al nivel que se necesita para el curso. Esto pasa cuando los cursos son para asistentes de distintas empresas o que se inscriben por su cuenta.&lt;/p&gt;
&lt;p&gt;- Cuando el temario lo arma una empresa, el que arma el temario pide todos los temas habidos y por haber, pero luego no se asigna tiempo para que los asistentes practiquen en el medio del trabajo de cada d&amp;iacute;a.&lt;/p&gt;
&lt;p&gt;- Pr&amp;aacute;cticamente todo el material que doy queda disponible en mi sitio personal. A la quinta o sexta clase del curso, alguien se acerca y me pregunta: &amp;iquest;d&amp;oacute;nde puedo bajar los ejemplos? Yo me pregunto entonces: &amp;iquest;c&amp;oacute;mo hizo para seguir las anteriores clases, si nunca repas&amp;oacute; los ejemplos que YA se dieron? Detecto ac&amp;aacute; que no han tenido tiempo para practicar entre clases.&lt;/p&gt;
&lt;p&gt;Y en mi caso en particular, muchas veces los cursos no se abren por falta de inscriptos: se necesita un n&amp;uacute;mero m&amp;iacute;nimo para costear los activos inmovilizados (proyector, m&amp;aacute;quinas si es con pr&amp;aacute;ctica, lugar, instructor) que no siempre se cubre. Tambi&amp;eacute;n me pasa armar una lista de correo para los asistentes del&amp;nbsp;curso (por ejemplo, en los m&amp;iacute;os de Java) . Luego de dos a&amp;ntilde;os, les cuento que solo cuatro personas, entre decenas que asistieron,&amp;nbsp;se inscribieron para hacer m&amp;aacute;s preguntas.&lt;/p&gt;
&lt;p&gt;No quisiera afirmar que siempre es as&amp;iacute; como describo arriba. Pero me asombra la cantidad de veces que algunos de esos &amp;ldquo;anti-patrones&amp;rdquo; aparecen, por lo menos, en muchos de los cursos que me ha tocado dictar. As&amp;iacute; que pienso, desde hace alg&amp;uacute;n tiempo, que debo mejorar en algunos temas. O motivar m&amp;aacute;s, o hacer algo para que estos anti-patrones no aparezcan tan frecuentemente. Una sorpresa agradable: los cursos de Scrum son los m&amp;aacute;s participativos de todos: son casos&amp;nbsp;donde pr&amp;aacute;cticamente no pr&amp;aacute;cticamente no aparecen estos &amp;ldquo;issues&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Y un tema, disculpen, m&amp;aacute;s personal: otra &amp;ldquo;constante&amp;rdquo; que detecto. Ante un curso de cuarenta personas, pregunto cu&amp;aacute;ntos conocen mi blog.&amp;nbsp;S&amp;oacute;lo uno levanta la mano. Pasan las semanas, y al final del curso, despu&amp;eacute;s de dos meses, pregunto de nuevo. Y ahora, son 1 o 2 las manos levantadas. As&amp;iacute; que algo tengo que hacer: o mejorar los contenidos o escribir m&amp;aacute;s claro o de temas que les interesen m&amp;aacute;s. Muchas veces escribo para que lo explicado quede m&amp;aacute;s claro. Si algo no se entiende en una clase presencial, quisiera que&amp;nbsp;se pueda leer y releer por ac&amp;aacute;. Pero veo que he tenido poca llegada en ese tema, por lo menos en los asistentes a mis cursos presenciales.&lt;/p&gt;
&lt;p&gt;Pero tambi&amp;eacute;n detecto y especulo un patr&amp;oacute;n: los que programan y no leen blogs (m&amp;iacute;o o de cualquiera), en general,&amp;nbsp;no se mantienen actualizados y necesitan cursos presenciales. Los que programan y leen blogs son otro grupo: se mantienen actualizados y no necesitan cursos presenciales, apenas algunas charlas introductorias como primeros pasos en un tema. Luego, ellos mismos aprenden de una nueva tecnolog&amp;iacute;a, patr&amp;oacute;n, estilo arquitect&amp;oacute;nico o herramienta.&lt;/p&gt;
&lt;p&gt;Habiendo repasado estos puntos, &amp;iquest;c&amp;oacute;mo se podr&amp;iacute;a mejorar? Tengo algunas ideas al respecto, tomadas de otros &amp;aacute;mbitos, y de lo que veo que puede funcionar, pero son temas para seguir en la segunda parte de este post. Mientras tanto: &amp;iquest;tienen alguna sugerencia?&lt;/p&gt;
&lt;p&gt;Nos leemos!&lt;/p&gt;
&lt;p&gt;Angel &amp;ldquo;Java&amp;rdquo; Lopez &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;</description></item><item><title>VAN (Reuni&amp;#243;n Virtual) en ALT.NET Hispano sobre Generaci&amp;#243;n de C&amp;#243;digo</title><link>http://msmvps.com/blogs/lopez/archive/2009/09/25/van-reuni-243-n-virtual-en-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx</link><pubDate>Fri, 25 Sep 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1726628</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;Gracias a la comunidad de ALT.NET Hispano, mañana sábado 26 de septiembre, participaré de una VAN (Reunión virtual) sobre generación de código (hora internacional 6PM GMT, son15hs Buenos Aires). La idea es que al principio presente algunas ideas, ejemplos de AjGenesis, panorama de generación de código, comentar otras herramientas y aproximaciones, pros y contras,&amp;#160; y luego, se discutan los temas, entre todos.&lt;/p&gt;  &lt;p&gt;Quisiera presentar:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Los por qué de la generación del código&lt;/li&gt;    &lt;li&gt;Qué pedirle a una herramienta de generación de código&lt;/li&gt;    &lt;li&gt;Elevar el nivel de abstracción, partiendo de un modelo&lt;/li&gt;    &lt;li&gt;Resolviendo paso a paso, la aplicación más simple&lt;/li&gt;    &lt;li&gt;Mostrar que es más que templates/plantillas&lt;/li&gt;    &lt;li&gt;Resolver una aplicación con entidades, desde el mismo modelo, en distintas tecnologías y plataformas (Java, .NET, PHP)&lt;/li&gt;    &lt;li&gt;Generación de código como servicio en línea&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Si no conocen qué es una reunión VAN, pueden consultar &lt;a href="http://www.zachariahyoung.com/zy/post/2009/01/Introduction-to-Virtual-ALTNET.aspx"&gt;VAN meetings&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para ver cómo se desarrolla una VAN de ALT.NET Hispano, y qué software necesitan para asistir, ver &lt;a href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones-VAN"&gt;Descripcion-de-Reuniones-VAN&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pueden ver &lt;a href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;el historial de anteriores reuniones VAN&lt;/a&gt; (visiten las que dieron, por ejemplo, sobre NHibernate, WPF y demás)(ya había participado de &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx" target="_blank"&gt;VAN sobre Scrum&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Gracias al bueno de &lt;a href="http://geeks.ms/blogs/jgamba" target="_blank"&gt;Jorge Gamba&lt;/a&gt; (&lt;a href="http://twitter.com/jorgegamba" target="_blank"&gt;@jorgegamba&lt;/a&gt;) que publicó el evento en su blog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/jgamba/archive/2009/09/24/van-hispano-2009-09-26-generacion-de-codigo.aspx" target="_blank"&gt;[Evento] Viendo la luz respecto a “Generación de Código”&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Copio de ahí:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;La comunidad &lt;a href="http://altnethispano.org"&gt;ALT.NET Hispano&lt;/a&gt; realizará un evento virtual con el tema &lt;a href="http://msmvps.com/blogs/lopez/archive/2007/08/02/sobre-la-generaci-243-n-de-c-243-digo.aspx"&gt;Generación de Código&lt;/a&gt;, con la exposición principal del reconocido especialista y maestro en desarrollo de software &lt;a href="http://www.ajlopez.com/"&gt;Angel “Java” Lopez&lt;/a&gt;. Será el día sábado 26 de septiembre a la hora internacional 18:00 GMT/GTU (Greenwich), con una duración aproximada de 2 horas. Para atender la reunión deben usar el programa &lt;a href="http://office.microsoft.com/en-us/help/HA101733831033.aspx"&gt;Microsoft Office Live Meeting 2007 client&lt;/a&gt;, abriendo el enlace &lt;a href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Adicionalmente, pueden plantear sus comentarios e inquietudes sobre el tema de la reunión en la discusión &lt;a href="http://groups.google.com/group/altnet-hispano/browse_thread/thread/47667d4fc07235b4"&gt;Invitación a VAN Hispano Sábado 26 de septiembre - &amp;quot;Generación de código&amp;quot; con Angel &amp;quot;Java&amp;quot; Lopez&lt;/a&gt;, en nuestra &lt;a href="http://groups.google.com/group/altnet-hispano/"&gt;lista de correo&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;La comunidad ALT.NET hispano está muy activa, y los invito a participar de ella. Jorge escribe:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;les dejo la lista de recursos compartidos de los que disponemos en la comunidad:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://groups.google.com/group/altnet-hispano"&gt;Lista de Correo del Grupo de Usuarios&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://altnet-hispano.pbworks.com/"&gt;Wiki&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://twitter.com/AltNetHispano"&gt;Twitter&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/bLoe4"&gt;Facebook&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.viddler.com/explore/AltNet-Hispano/videos/"&gt;viddler&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://altnet-hispano.pbworks.com/Mapa"&gt;Mapa de ubicación geográfica&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.google.com/calendar/embed?src=fpf8r6u1n4f0hd2p50t0mcoa28%40group.calendar.google.com"&gt;Calendario de eventos&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Como comenta Jorge, pueden ir leyendo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2007/08/02/sobre-la-generaci-243-n-de-c-243-digo.aspx"&gt;Sobre la generación de código&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2008/08/25/diez-reglas-principales-en-generaci-243-n-de-c-243-digo.aspx"&gt;Diez reglas principales en generación de código&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/07/22/la-generaci-243-n-de-c-243-digo-y-el-trabajo-de-desarrollo-de-software.aspx"&gt;La generación de código y el trabajo de desarrollo de software&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PHP Toolkit for ADO.NET Data Services – erasing bounds of technologies: PHP + .NET</title><link>http://msmvps.com/blogs/sergun/archive/2009/08/23/php-toolkit-for-ado-net-data-services-erasing-bounds-of-technologies-php-net.aspx</link><pubDate>Sun, 23 Aug 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1717516</guid><dc:creator>Sergun</dc:creator><description>&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergun.metablogapi/7851.image_5F00_1A588F17.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="" border="0" alt="" align="right" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergun.metablogapi/4214.image_5F00_thumb_5F00_11A810BE.png" width="242" height="273" /&gt;&lt;/a&gt;Microsoft Interoperability team announced an release of the new project which is the bridge between PHP and.NET and erases bounds of technologies even more. This project allows developers on PHP even more easier to access and use all power of .NET&amp;#160; services which based on ADO.NET Data Services. &lt;/p&gt;  &lt;p&gt;From the point of view of working out the scheme looks classically enough. By working out it is necessary to use utility PHPDataSvcUtil which is in PHP Toolkit for ADO.NET Data Services. This utility will generate proxies-classes on PHP using metadata which are accessible to service on the basis of ADO.NET Data Services. After that on PHP also it will be necessary to connect libraries PHP Toolkit to the project for ADO.NET Data Services. Further, after all these simple actions it will be possible to use all power of ADO.NET Data Services platform within of appendices on PHP in more convenient way.&lt;/p&gt;  &lt;p&gt;Let&amp;#39;s look how the code on platform PHP for executing of queries to ADO.NET Data Services will look. Firstly it is necessary to connect a file with proxies-classes, which generated by PHPDataSvcUtil utility:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;?PHP&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;require_once&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;#39;NorthwindClient.php&amp;#39;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    define(&lt;span style="color:#006080;"&gt;&amp;quot;SERVICE_URI&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;http://localhost:8080/Northwind.svc&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;?&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;After that it is possible to create the objects of a class which implements the logic of the client and to carry out queries to remote service. Unfortunately, here we cannot take advantage of LINQ syntax for construction of queries to service. Therefore it is necessary to write query manually in the form of URI.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;?PHP&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    $client = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NorthwindEntities(SERVICE_URI);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    $query = $client-&amp;gt;ExecuteQuery(&lt;span style="color:#006080;"&gt;&amp;quot;Customers?\$filter=Country eq &amp;#39;UK&amp;#39;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;?&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now, after successful designing of query it is possible to access for a data and to show result to the user:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;?PHP&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;($query &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; $customer)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;echo&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;p&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;echo&lt;/span&gt; $customer-&amp;gt;CustomerID;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;echo&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;echo&lt;/span&gt; $customer-&amp;gt;CompanyName;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;echo&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;?&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Here it is well visible, that we access to strongly typified objects, and result we receive in the form of objective collections. Such way is very similar to how we work with services of ADO.NET Data Services within&amp;#160; the .NET-client. These of entity classes also have been generated by utility PHPDataSvcUtil.&lt;/p&gt;

&lt;p&gt;Pablo Castro (program manager, ADO.NET Data Services) and Claudio Caldato (program manager, interoperability, techincal strategy team) have made the small &lt;a href="http://channel9.msdn.com/posts/jccim/Consuming-data-over-the-web-between-PHP-and-NET-with-REST-and-ADONET-Data-Services/"&gt;review&lt;/a&gt; of this library on Channel 9 in which they tell more details&lt;/p&gt;

&lt;p&gt;At last that the project is the project with an open source code is very interesting and is accessible on CodePlex. Besides, the project is developed by company Persistent Systems, but fund by Microsoft. &lt;/p&gt;

&lt;p&gt;Links: &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The announcement in a blog of Astoria team - &lt;a title="http://blogs.msdn.com/astoriateam/archive/2009/08/21/announcing-the-php-toolkit-for-ado-net-data-services.aspx" href="http://blogs.msdn.com/astoriateam/archive/2009/08/21/announcing-the-php-toolkit-for-ado-net-data-services.aspx"&gt;http://blogs.msdn.com/astoriateam/archive/2009/08/21/announcing-the-php-toolkit-for-ado-net-data-services.aspx&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;The description in a blog of Interoperability team - &lt;a title="http://blogs.msdn.com/interoperability/archive/2009/08/21/a-new-bridge-for-php-developers-to-net-through-rest-php-toolkit-for-ado-net-data-services.aspx" href="http://blogs.msdn.com/interoperability/archive/2009/08/21/a-new-bridge-for-php-developers-to-net-through-rest-php-toolkit-for-ado-net-data-services.aspx"&gt;http://blogs.msdn.com/interoperability/archive/2009/08/21/a-new-bridge-for-php-developers-to-net-through-rest-php-toolkit-for-ado-net-data-services.aspx&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Channel9 - &lt;a title="http://channel9.msdn.com/posts/jccim/Consuming-data-over-the-web-between-PHP-and-NET-with-REST-and-ADONET-Data-Services/" href="http://channel9.msdn.com/posts/jccim/Consuming-data-over-the-web-between-PHP-and-NET-with-REST-and-ADONET-Data-Services/"&gt;http://channel9.msdn.com/posts/jccim/Consuming-data-over-the-web-between-PHP-and-NET-with-REST-and-ADONET-Data-Services/&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;The project at CodePlex - &lt;a title="http://phpdataservices.codeplex.com/" href="http://phpdataservices.codeplex.com/"&gt;http://phpdataservices.codeplex.com/&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Comparativa de rendimiento PHP vs. ASP.NET</title><link>http://msmvps.com/blogs/lfranco/archive/2009/08/14/comparativa-de-rendimiento-php-vs-asp-net.aspx</link><pubDate>Fri, 14 Aug 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1715571</guid><dc:creator>lfranco</dc:creator><description>&lt;p align="justify"&gt;Joe Stagner ha publicado recientemente una &lt;a href="http://misfitgeek.com/blog/aspnet/php-linux-windows-asp-net-performance-ndash-redux/" target="_blank"&gt;comparativa de rendimiento de PHP versus ASP.NET&lt;/a&gt;, en diferentes sistemas operativos. En diferentes sistemas se entiende PHP claro :-P, ya que ASP.NET funciona en sólo en Windows y en Windows ;-)&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/lfranco/comp_5F00_34B6C9C3.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="comp" border="0" alt="comp" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/lfranco/comp_5F00_thumb_5F00_2A42C918.png" width="244" height="117" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;El tema de por si me ha resultado muy interesante, ya que estos benchmarks (si están bien echos) siempre arrojan un poco de luz acerca del rendimiento ‘real’ de diferentes lenguajes o tecnologías, y nos permiten tener algo tangible en que basar nuestras decisiones, no simples ‘leyendas urbanas’.&lt;/p&gt;  &lt;p align="justify"&gt;Pues bien, le he dado una lectura a dicha comparativa y pese a que Joe es un convencido desarrollador de PHP, los resultados me han dejado de piedra: &lt;strong&gt;Resulta que ASP.NET es más rápido que PHP!&lt;/strong&gt; Ein? Como? Espera, espera... pero si siempre he oído que es al contrario!&lt;/p&gt;  &lt;p align="justify"&gt;A ver si ahora resultará que una de las mayores ventajas de PHP sobre ASP.NET no es tan cierta como creía... pues entonces que le queda? Ah! Si! El tema de la multiplataforma, aunque en el mismo artículo se señala que el acceso a ficheros con PHP sobre plataformas Windows y a MySQL adolecen de serios problemas de rendimiento. Entonces tal vez la facilidad de aprendizaje? Pues sinceramente, creo que (al menos para mí) es más fácil aprender ASP.NET que PHP, aunque esto supongo que depende de cada persona.&lt;/p&gt;  &lt;p align="justify"&gt;Personalmente tengo predilección por ASP.NET, pero considero a ambas tecnologías como fantásticas herramientas, y conozco a estupendos profesionales de ambos lados. Además, como todos sabemos la herramienta ayuda, y mucho, pero lo que realmente marca la diferéncia es la capacidad de las personas que la utilizan. Conozco grandes profesionales que con un palo y dos cañas te montan auténticas birguerías.&lt;/p&gt;  &lt;p align="justify"&gt;No se, la verdad es que me gustaría hacer la prueba por mi mismo. Alguien se anima a realizar alguno de estos tests y lo comprobamos?&lt;/p&gt;  &lt;p align="justify"&gt;Espero comentarios! :-)&lt;/p&gt;  &lt;p align="justify"&gt;Artículo de Joe:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="http://misfitgeek.com/blog/aspnet/php-linux-windows-asp-net-performance-ndash-redux/" href="http://misfitgeek.com/blog/aspnet/php-linux-windows-asp-net-performance-ndash-redux/"&gt;http://misfitgeek.com/blog/aspnet/php-linux-windows-asp-net-performance-ndash-redux/&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Un saludo,&lt;/p&gt;
** crossposting desde el blog de Lluís Franco en geeks.ms **</description></item><item><title>Enlaces y noticias IV</title><link>http://msmvps.com/blogs/lopez/archive/2009/07/19/enlaces-y-noticias-iv.aspx</link><pubDate>Sun, 19 Jul 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1703061</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;Sigo con la costumbre coleccionar enlaces, de distintos temas. Los que me llamaron la atención:&lt;/p&gt;  &lt;h3&gt;PHP&lt;/h3&gt;  &lt;p&gt;Es el lenguaje más usado para el desarrollo de sitios dinámicos en la web. Tiene la simplicidad necesaria, y también el soporte de clases, librerías, acceso a base de datos como para hacerlo más poderoso. Tal vez se ha quedado en el desarrollo web, perdiendo en el terreno de programas de consola, servicios, o de ventanas. Hay montañas de código de ejemplo para estudiar y aprender. Algunos enlaces:&lt;/p&gt;  &lt;p&gt;&lt;a title="PHP programming tips and tricks Code Purity" href="http://blog.code-purity.com/archives/2009/7/14/php_programming_tips_and_tricks/"&gt;PHP programming tips and tricks Code Purity&lt;/a&gt;    &lt;br /&gt;&lt;a title="Scripts Directory of PHP, ASP, ASP.NET, Java, Javascript, Perl and more! - Scripts" href="http://www.scripts.com/"&gt;Scripts Directory of PHP, ASP, ASP.NET, Java, Javascript, Perl and more! – Scripts&lt;/a&gt;    &lt;br /&gt;&lt;a title="43 Must Read PHP Articles and Resources Hi, I&amp;#39;m Grace Smith" href="http://www.gracesmith.co.uk/43-must-read-php-articles-and-resources/"&gt;43 Must Read PHP Articles and Resources Hi, I&amp;#39;m Grace Smith&lt;/a&gt;    &lt;br /&gt;&lt;a title="How To Create Your Own Stats Program (JavaScript, AJAX, PHP) Noupe" href="http://www.noupe.com/php/how-to-create-your-own-stats.html"&gt;How To Create Your Own Stats Program (JavaScript, AJAX, PHP) Noupe&lt;/a&gt;    &lt;br /&gt;&lt;a title="25 Resources to Get You Started with PHP from Scratch - Nettuts+" href="http://net.tutsplus.com/articles/web-roundups/25-resources-to-get-you-started-with-php-from-scratch/"&gt;25 Resources to Get You Started with PHP from Scratch - Nettuts+&lt;/a&gt;    &lt;br /&gt;&lt;a title="15 Wonderfully Creative Uses for PHP" href="http://net.tutsplus.com/tutorials/php/15-wonderfully-creative-uses-for-php/"&gt;15 Wonderfully Creative Uses for PHP&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hay cantidad de sitios manejadores de contenidos (CMS) pueden ver&lt;/p&gt;  &lt;p&gt;&lt;a title="10 New PHP Content Management Systems(CMS)" href="http://www.dreamcss.com/2009/07/10-new-php-content-management.html"&gt;10 New PHP Content Management Systems(CMS)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://php.opensourcecms.com/" href="http://php.opensourcecms.com/"&gt;http://php.opensourcecms.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para un rápido Altas, bajas y modicaciones ver &lt;a href="http://www.ajaxcrud.com/" target="_blank"&gt;AjaxCRUD.com - Use PHP &amp;amp; AJAX to CRUD from a mysql database (create / read / update / delete)&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No creo que alguien pueda pasar fácilmente de PHP a ASP.NET pero pueden leer &lt;a title="Move from PHP to ASP.NET" href="http://msdn.microsoft.com/en-us/rampup/dd861537.aspx"&gt;Move from PHP to ASP.NET&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tiene sus años, pero es interesante &lt;a title="Understanding MVC in PHP - O&amp;#39;Reilly Media" href="http://www.oreillynet.com/pub/a/php/2005/09/15/mvc_intro.html"&gt;Understanding MVC in PHP - O&amp;#39;Reilly Media&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Un armador de proyectos, a la Apache Ant, pero en PHP: &lt;a title="Phing" href="http://phing.info/trac/"&gt;Phing&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Comenzando con Joomla &lt;a title="Beginners - Joomla! Documentation" href="http://docs.joomla.org/Beginners"&gt;Beginners - Joomla! Documentation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Veo implementando el &lt;a href="http://en.wikipedia.org/wiki/Template_Attribute_Language" target="_blank"&gt;Template Attribute Language&lt;/a&gt; en PHP: &lt;a title="http://phptal.org/" href="http://phptal.org/"&gt;http://phptal.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;DEBEN VER &lt;a href="http://phpcamp.net/index.php" target="_blank"&gt;PHPCamp: learn something new everyday&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para perderse en enlaces, &lt;a href="http://delicious.com/ajlopez/php"&gt;http://delicious.com/ajlopez/php&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;.NET&lt;/h3&gt;  &lt;p&gt;Para los que quieren ver manejadores de contenido (CMS) en ASP.NET:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://aspx.opensourcecms.com/" href="http://aspx.opensourcecms.com/"&gt;http://aspx.opensourcecms.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El área de código abierto de .NET está bien activo: &lt;a title="Open Source .NET projects" href="http://spreadsheets.google.com/pub?key=pKxDW35algYebfs8nssTjIQ"&gt;Open Source .NET projects&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para estudiar: &lt;a title="Expert to Expert- Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) Going" href="http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx/"&gt;Expert to Expert- Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) Going&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Un ejemplo de referencia &lt;a title="FabrikamShipping - Home" href="http://code.msdn.microsoft.com/FabrikamShipping"&gt;FabrikamShipping – Home&lt;/a&gt; con Geneva Framework, autenticación federada y tutti li fiocci.&lt;/p&gt;  &lt;p&gt;Un camino a explorar: reemplazar ORM (Object Relational Mapping) en runtime por generación de código: &lt;a title=".NET ORM, Object Relational Mapping for .NET Telerik" href="http://www.telerik.com/products/orm.aspx"&gt;.NET ORM, Object Relational Mapping for .NET Telerik&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Librería para Twitter &lt;a title="http://tweetsharp.com/" href="http://tweetsharp.com/"&gt;http://tweetsharp.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;ASP.NET MVC 1.0 ejecutando en Mono &lt;a title="shaml-architecture - Google Code" href="http://code.google.com/p/shaml-architecture/"&gt;shaml-architecture - Google Code&lt;/a&gt; Basado en &lt;a title="s#arp-architecture" href="http://code.google.com/p/sharp-architecture/"&gt;s#arp-architecture&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para mapear objetos &lt;a title="http://automapper.codeplex.com/" href="http://automapper.codeplex.com/"&gt;http://automapper.codeplex.com/&lt;/a&gt; (menos para el bueno de &lt;a href="http://weblogs.shockbyte.com.ar/rodolfof" target="_blank"&gt;Rodolfo Finochietti&lt;/a&gt; que prefiere hacerse su propio mapeador :-)&lt;/p&gt;  &lt;p&gt;Siempre es molesto el DataBinding a propiedades simples, habría que ver qué tal funciona &lt;a title="http://www.codeproject.com/KB/cs/ObjectBindingSource.aspx" href="http://www.codeproject.com/KB/cs/ObjectBindingSource.aspx"&gt;http://www.codeproject.com/KB/cs/ObjectBindingSource.aspx&lt;/a&gt; (nested property binding)&lt;/p&gt;  &lt;p&gt;Más de todo esto en &lt;a href="http://delicious.com/ajlopez/dotnet"&gt;http://delicious.com/ajlopez/dotnet&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Generación de código&lt;/h3&gt;  &lt;p&gt;El proyecto Sculpture está muy bien armado, aunque focalizado en .NET &lt;a title="http://sculpture.codeplex.com/" href="http://sculpture.codeplex.com/"&gt;http://sculpture.codeplex.com/&lt;/a&gt; Es open source, se trasladó a la empresa:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.dawliasoft.com/" href="http://www.dawliasoft.com/"&gt;http://www.dawliasoft.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tienen una implementación de referencia: &lt;a title="VotingManager.zip" href="http://www.dawliasoft.com/Portals/0/Learn/VotingManager.zip"&gt;VotingManager.zip&lt;/a&gt; que partiendo de 55 líneas, consiguen generar una aplicación de 4111 líneas. Bueno, nada que el &lt;a href="http://ajgenesis.codeplex.com" target="_blank"&gt;AjGenesis&lt;/a&gt; no pueda hacer… :-) … pero es más bonito.&lt;/p&gt;  &lt;p&gt;&lt;a title="Hibernate Class Generation Using hbm2java - O&amp;#39;Reilly Media" href="http://onjava.com/pub/a/onjava/2005/12/14/hibernate-class-generation-with-hbm2java.html?page=last"&gt;Hibernate Class Generation Using hbm2java - O&amp;#39;Reilly Media&lt;/a&gt; Estoy reviendo esto, quiero comenzar a usar el tag &amp;lt;meta&amp;gt; para usar hibernate.cfg.xml y archivos .hbm.xml para alimentar como modelo a &lt;a href="http://ajgenesis.codeplex.com" target="_blank"&gt;AjGenesis&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Para estudiar dos “approachs” &lt;a title="Angle Bracket Percent - CodeDom vs T4- two approaches to Code Generation" href="http://blogs.msdn.com/davidebb/archive/2009/06/03/codedom-vs-t4-two-approaches-to-code-generation.aspx"&gt;Angle Bracket Percent - CodeDom vs T4- two approaches to Code Generation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Veo el editor de T4 &lt;a title="T4 Editor - tangible T4 Editor plus UML tools" href="http://t4-editor.tangible-engineering.com/T4-Editor-Visual-T4-Editing.html"&gt;T4 Editor - tangible T4 Editor plus UML tools&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Desde AjGenesis puedo leer el archivo .dbml de Linq2Sql, que se puede generar desde la línea de comando con SqlMetal, tengo que estudiar &lt;a title="Oleg Sych - » T4 Toolbox- LINQ to SQL classes generator" href="http://www.olegsych.com/2009/01/t4-toolbox-linq-to-sql-classes-generator/"&gt;Oleg Sych - » T4 Toolbox- LINQ to SQL classes generator&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Yo tenía esta idea, pero la deseché por ser algo “convoluted”, pero es interesante: &lt;a title="Using ASP.Net for Code Generation" href="http://www.delphicsage.com/home/blog.aspx?d=600&amp;amp;title=Using_ASPNet_for_Code_Generation"&gt;Using ASP.Net for Code Generation&lt;/a&gt; . En su tiempo, usé también PHP como lenguaje de generación, pero me gustó tener un lenguaje dedicado a generación con objetos dinámicos (AjBasic) con acceso a un framework de base (.NET por ahora), cosa que no tiene PHP en principio. Y en cuanto a usar ASP.NET, me obligaba a usar un lenguaje tipado .NET, que me resistía a hacerlo.&lt;/p&gt;  &lt;p&gt;Siguiendo con T4, el lenguaje de templates de Visual Studio, a estudiar &lt;a title="Angle Bracket Percent - The MVC T4 template is now up on CodePlex, and it does change your code" href="http://blogs.msdn.com/davidebb/archive/2009/06/26/the-mvc-t4-template-is-now-up-on-codeplex-and-it-does-change-your-code-a-bit.aspx"&gt;Angle Bracket Percent - The MVC T4 template is now up on CodePlex, and it does change your code&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Parece interesante &lt;a title="Sample Fluent NHibernate T4 Templates for Code Generation via LINQ To SQL" href="http://www.pnpguidance.net/Post/SampleFluentNHibernateT4TemplatesCodeGenerationLINQToSQL.aspx"&gt;Sample Fluent NHibernate T4 Templates for Code Generation via LINQ To SQL&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.metacase.com/blogs/stevek/blogView" target="_blank"&gt;Steven Kelly&lt;/a&gt; siempre tiene algo interesante sobre DSM (Domain Specific Models) y generación de código. Comenta sobre &lt;a href="http://www.codegeneration.net/cg2009/" target="_blank"&gt;Code Generation 2009&lt;/a&gt; en &lt;a title="Code Generation 2009 round-up" href="http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;amp;entry=3423259520"&gt;Code Generation 2009 round-up&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para los que estén con el framework .NET de Lohtka, CSLA, pueden visitar el&lt;/p&gt;  &lt;p&gt;&lt;a title="CslaGenerator Google Groups" href="http://groups.google.com/group/CslaGenerator"&gt;CslaGenerator Google Groups&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ruby es un lenguaje que se presta a la generación de código, ver esto, de hace algunos años, pero a cargo del bueno Jack Herrington, autor de Code Generation in Action (alguien que vió la luz!!! :-) :&lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e1c89a3c-3fa7-4139-a58a-282866a26e43" style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/p&gt;  &lt;p&gt;Como siempre, más información en &lt;a href="http://delicious.com/ajlopez/codegeneration"&gt;http://delicious.com/ajlopez/codegeneration&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Lenguajes de Programación&lt;/h3&gt;  &lt;p&gt;Descubriendo un clásico: &lt;a title="Let&amp;#39;s Build a Compiler" href="http://compilers.iecc.com/crenshaw/"&gt;Let&amp;#39;s Build a Compiler&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Un texto corto &lt;a href="http://forums.devshed.com/other-programming-languages-139/how-does-an-interpreter-compiler-work-312483.html" target="_blank"&gt;How does a an interpreter compiler work&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para estudiar &lt;a title="Create a Language Compiler for the .NET Framework Using C#" href="http://msdn.microsoft.com/en-us/magazine/cc136756.aspx"&gt;Create a Language Compiler for the .NET Framework Using C#&lt;/a&gt; usa Reflection.Emit, bien a lo macho… :-)&lt;/p&gt;  &lt;p&gt;Hay que escribir intérpretes y compiladores, “compiler generators are for sissies” :-), pero si quieren, pueden ver &lt;a href="http://www.ssw.uni-linz.ac.at/coco/" target="_blank"&gt;The Compiler Generator Coco/R&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Más para ver &lt;a title="Free Compiler Construction Tools- Lexers, Parser Generators, Optimizers (thefreecountry.com)" href="http://www.thefreecountry.com/programming/compilerconstruction.shtml"&gt;Free Compiler Construction Tools- Lexers, Parser Generators, Optimizers (thefreecountry.com)&lt;/a&gt; y &lt;a title="Basics of Compiler Design (pdf)" href="http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/basics_lulu.pdf"&gt;Basics of Compiler Design (pdf)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para estudiar:&lt;/p&gt;  &lt;p&gt;&lt;a title="Michael Feathers on Programming Languages" href="http://www.infoq.com/interviews/michael-feathers-programming-languages"&gt;Michael Feathers on Programming Languages&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Synrc Io Language CLR" href="http://synrc.com/io-language.htm"&gt;Synrc Io Language CLR&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Io (programming language) - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Io_(programming_language)"&gt;Io (programming language) - Wikipedia, the free encyclopedia&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="InfoQ- The Ioke JVM Language- The power of Lisp and Ruby with an intuitive syntax" href="http://www.infoq.com/news/2008/11/ioke"&gt;InfoQ- The Ioke JVM Language- The power of Lisp and Ruby with an intuitive syntax&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Ending the Era of Patronizing Language Design" href="http://blog.objectmentor.com/articles/2009/07/13/ending-the-era-of-patronizing-language-design"&gt;Ending the Era of Patronizing Language Design&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Un volver a vivir:&lt;/p&gt;  &lt;p&gt;&lt;a title="History of the BASIC family of languages" href="http://dotnetmasters.com/HistoryOfBasic.htm"&gt;History of the BASIC family of languages&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Otro para el canal “Volver”, entorno de desarrollo xBase:&lt;/p&gt;  &lt;p&gt;&lt;a title="Xailer - El entorno de desarrollo definitivo en xbase" href="http://www.xailer.com/"&gt;Xailer - El entorno de desarrollo definitivo en xbase&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Free Pascal compilers and Pascal Programming - Freebyte&amp;#39;s Guide to" href="http://www.freebyte.com/programming/pascal/"&gt;Free Pascal compilers and Pascal Programming - Freebyte&amp;#39;s Guide to&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Se acuerdan de MUMPS? &lt;a title="MUMPS - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/MUMPS"&gt;MUMPS - Wikipedia, the free encyclopedia&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para leer &lt;a title="APL, COBOL, &amp;amp; Dijkstra Paul Murphy ZDNet.com" href="http://blogs.zdnet.com/Murphy/?p=568"&gt;APL, COBOL, &amp;amp; Dijkstra Paul Murphy ZDNet.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Podría volver a estudiar: &lt;a title="COBOL Programming Course" href="http://www.csis.ul.ie/cobol/Course/Default.htm"&gt;COBOL Programming Course&lt;/a&gt;, &lt;a title="The COBOL Programming Language" href="http://www.engin.umd.umich.edu/CIS/course.des/cis400/cobol/cobol.html"&gt;The COBOL Programming Language&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Lista para buscar recursos &lt;a title="Free Programming Tools, free compilers, free software components and" href="http://www.freebyte.com/programming/"&gt;Free Programming Tools, free compilers, free software components and&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Excelente contenido &lt;a title="Google Code University Programming Languages" href="http://code.google.com/intl/it-IT/edu/languages/index.html"&gt;Google Code University Programming Languages&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hay que ir viendo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://clojure.org/" target="_blank"&gt;Clojure&lt;/a&gt; ver &lt;a title="InfoQ- Rich Hickey on Clojure&amp;#39;s Features and Implementation" href="http://www.infoq.com/interviews/hickey-clojure"&gt;InfoQ- Rich Hickey on Clojure&amp;#39;s Features and Implementation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.scala-lang.org/" target="_blank"&gt;Scala&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Yo sigo trabajando en reimplementar las ideas de Clojure en C#, lo llamaba AjClojure, pero Rick Hickey (el creador de Clojure) me pidió que le cambiara el nombre (al fin tengo evidencia de que alguien lee &lt;a href="http://twitter.com/ajlopez" target="_blank"&gt;mi Twitter&lt;/a&gt;!!! :-) Así, que en un rapto de imaginación, se llama AjSharpure. Pueden ir viendo mis avances en:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://code.google.com/p/ajlisp/source/browse#svn/trunk/AjSharpure" href="http://code.google.com/p/ajlisp/source/browse#svn/trunk/AjSharpure"&gt;http://code.google.com/p/ajlisp/source/browse#svn/trunk/AjSharpure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Más para ver sobre los lenguajes que me interesan en:   &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/programminglanguages"&gt;http://delicious.com/ajlopez/programminglanguages&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/smalltalk"&gt;http://delicious.com/ajlopez/smalltalk&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/logo"&gt;http://delicious.com/ajlopez/logo&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/scala"&gt;http://delicious.com/ajlopez/scala&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/lisp"&gt;http://delicious.com/ajlopez/lisp&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/forth"&gt;http://delicious.com/ajlopez/forth&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/haskell"&gt;http://delicious.com/ajlopez/haskell&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/python"&gt;http://delicious.com/ajlopez/python&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/ruby"&gt;http://delicious.com/ajlopez/ruby&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/functionalprogramming"&gt;http://delicious.com/ajlopez/functionalprogramming&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/cobol"&gt;http://delicious.com/ajlopez/cobol&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;MVPs&lt;/h3&gt;  &lt;p&gt;El bueno de &lt;a href="http://weblogs.shockbyte.com.ar/rodolfof" target="_blank"&gt;Rodolfo Finochietti&lt;/a&gt; fue nombrado Microsoft MVP por segundo año consecutivo. Felicitaciones @rodolfof! &lt;a href="http://weblogs.shockbyte.com.ar/rodolfof/archive/2009/07/01/mvp-for-another-year.aspx" target="_blank"&gt;MVP for another year&lt;/a&gt;. También felicitaciones para el pibe Woloski, que renovó el nombramiento.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Popularidad de Lenguajes de Programaci&amp;#243;n</title><link>http://msmvps.com/blogs/lopez/archive/2009/07/08/popularidad-de-lenguajes-de-programaci-243-n.aspx</link><pubDate>Wed, 08 Jul 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1698705</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;Me temo que &lt;a href="http://en.wordpress.com/tag/ajlisp/" target="_blank"&gt;AjLisp&lt;/a&gt; y &lt;a href="http://en.wordpress.com/tag/ajbasic" target="_blank"&gt;AjBasic&lt;/a&gt; lo usamos yo y nadie más… snif… :-). Pero hay lenguajes más populares que esos. Ya es clásica la lista de TIOBE Software:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/langpop01.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;donde aparece Java como el lenguaje más popular, lo que no me asombra. Pero sí me llama la atención la popularidad de C y C++, que deben tener su gran uso en el ambiente Unix, Linux, y otros. Como cuarto, encuentro hoy, Julio de 2009, a PHP, que lo entiendo: la mayor parte del código de sitios dinámicos está en PHP, lejos quedaron los años del predominio del venerable Perl. Y recién en sexto y séptimo lugar, está Visual Basic (parece que agrupan el de .NET y el clásico), y C#. Vean que al final de la lista, aparecen lenguajes con mínimos porcentajes, pero aparecen: RPG, Pascal, Abap, Lisp/Scheme. Más abajo, en la misma página encontraran la lista de posición 21 a 50, donde aparecen COBOL, Objective-C, Fortran, Logo, Prolog, Ada (todavía anda por ahí? :-), Scala, Erlang…. y esta es la lista de 51 a 100:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;ABC, AD, Algol, Alpha, Applescript, Beta, Boo, C shell, cg, Clean, Cobra, cT, Curl, Dylan, Eiffel, Euphoria, Factor, Fan, Icon, IDL, Inform, Io, Lingo, MAD, Magic, Maple, Mathematica, MAX/MSP, MOO, MUMPS, Natural, Oberon, Occam, Oz, PL/I, Postscript, PowerBuilder, Progress, Q, R, Revolution, REXX, S-lang, SIGNAL, SPSS, SuperCollider, VBScript, Verilog, VHDL, XSLT&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notable lista, recomendaría tantos lenguajes de esa lista, simplemente para aprender nuevas formas de programar (notable que aparezca todavía MUMPS, REXX, tendría que ver con más detalle a Io). Esta lista de popularidad se basa en el examen de búsquedas en Google, hace un tiempo pasaron a agregar MSN y Yahoo.&lt;/p&gt;  &lt;p&gt;Pero en estos días, encontré otra página:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://langpop.com/" href="http://langpop.com/"&gt;http://langpop.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/langpop02.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;con información de ranking de popularidad, pero con agrupadas con distintas fuentes, como Yahoo Search, search en Google Code, Freshmeat, Craiglist, Amazon.&lt;/p&gt;  &lt;p&gt;En lo que veo hoy ahí, julio de 2009, según Yahoo Search C es más popular que Java. Pero para Craiglist, primero PHP, segundo SQL (!!!), en Amazon ganan C, C++ y C#, por encima de Java. Y así, noto dispersión de los resultados, dependiendo de la fuente.&lt;/p&gt;  &lt;p&gt;La popularidad de un lenguaje importa. No tanto para entender el lenguaje (muchos lenguajes “boutique” tienen interesantes conceptos, a estudiar con detalle), sino para tener una idea de qué tecnología ha sido adoptada por la comunidad, pero habría que ver más allá: por qué la eligieron, y en qué tipo de proyectos. Dudo que haya muchas aplicaciones desktop, en PHP.&lt;/p&gt;  &lt;p&gt;Resumen: gran cantidad de lenguajes, hay lenguajes viejos, desde COBOL y Smalltalk, y más “nuevos” como Boo, Ruby, Python. Y `cuatros grandes grupos: Java, C/C++, lenguajes .NET (VB.NET, C#), PHP, como claros grupos líderes.&lt;/p&gt;  &lt;p&gt;Pienso que, como desarrolladores de software, debemos tener contacto con esos cuatro grupos, y además, con alguno de los “otros”, para aprender otras ideas y formas de programar.&lt;/p&gt;  &lt;p&gt;No&amp;#160; me enojo si intentan ver &lt;a href="http://en.wordpress.com/tag/ajlisp" target="_blank"&gt;AjLisp&lt;/a&gt; o &lt;a href="http://en.wordpress.com/tag/ajbasic" target="_blank"&gt;AjBasic&lt;/a&gt;… :-)&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Volviendo a AjContab</title><link>http://msmvps.com/blogs/lopez/archive/2009/07/05/volviendo-a-ajcontab.aspx</link><pubDate>Sun, 05 Jul 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1698201</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;Hace ya un tiempo que vengo pensando en reflotar AjContab:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.ajlopez.com/ajcontab/" href="http://www.ajlopez.com/ajcontab/"&gt;http://www.ajlopez.com/ajcontab/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Encuentro este mensaje viejo, en la lista de Arquitectura del MUG de Argentina&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mail-archive.com/arquitectura@mug.org.ar/msg00504.html" target="_blank"&gt;http://www.mail-archive.com/arquitectura@mug.org.ar/msg00504.html&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;AjContab es un viejo ejemplo que daba en mis cursos de .NET 1.x, hace unos años. Debería reescribirlo, en ASP.NET 2, VS2008, tal vez ASP.NET MVC? Veré. Pero en estos días habia tweeteado:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://twitter.com/ajlopez/status/2258288758" href="http://twitter.com/ajlopez/status/2258288758"&gt;http://twitter.com/ajlopez/status/2258288758&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/ajcontab01.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;La idea es tener:&lt;/p&gt;  &lt;p&gt;- Múltiples Tenants    &lt;br /&gt;- Múltiples Empresas     &lt;br /&gt;- Múltiples Planes de Cuenta por Empresa     &lt;br /&gt;- Múltiples Ejercicios     &lt;br /&gt;- Usuarios y Roles     &lt;br /&gt;- Minutas/Asientos     &lt;br /&gt;- Reportes como Balance, Libro Diario, Libro Mayor&lt;/p&gt;  &lt;p&gt;Al escribirlo en PHP/MySql, podría colocarlo fácilmente en línea. Me serviría como ejercicio de repaso de PHP, y comenzaría a tener un proyecto con Ajax, Javascript, JQuery quizás? Trataría de codificarlo liviano, para no ponerle demasiada arquitectura o parafernalia al principio. En todo caso, eso lo dejaría para la versión .NET o Java.&lt;/p&gt;  &lt;p&gt;Será interesante ver cómo los usuarios reciben la idea de tener un sistema así en la web. En el Proyecto Medusa (que mencioné hace poco, en &lt;a title="Generación de código con AjGenesis para Mere Mortals Framework" href="http://msmvps.com/blogs/lopez/archive/2009/06/22/code_2D00_generation_2D00_for_2D00_mere_2D00_mortals_2D00_framework.aspx"&gt;Generación de código con AjGenesis para Mere Mortals Framework&lt;/a&gt;), está incluido el desarrollo de un sistema contable en web. AjContab me serviría para afilar las uñas en el tema de poner este tipo de aplicaciones andando.&lt;/p&gt;  &lt;p&gt;En cuanto tenga algo publicado, escribo por acá. Keep tuned! :-)&lt;/p&gt;  &lt;p&gt;Sugerencias? Bienvenidas!&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez    &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Review: HostingFest</title><link>http://msmvps.com/blogs/anandn/archive/2009/02/01/review-hostingfest.aspx</link><pubDate>Sun, 01 Feb 2009 06:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1667718</guid><dc:creator>anandn</dc:creator><description>&lt;p&gt;I have been using the services of &lt;a target="_blank" href="http://www.hostingfest.com/"&gt;HostingFest&lt;/a&gt; ever since the erstwhile ServerDivision was closed down nearly three years back. The main reason for choosing HostingFest was that it is being run and managed by Nasir who provided extraordinary support for me at Server Division.&lt;/p&gt;
&lt;p&gt;HostingFest provide both Windows &lt;a target="_blank" href="http://www.hostingfest.com/Windows-Hosting.aspx#windows-shared-hosting"&gt;shared&lt;/a&gt; and &lt;a target="_blank" href="http://www.hostingfest.com/Windows-Hosting.aspx#windows-reseller-hosting"&gt;reseller&lt;/a&gt; hosting but I purchased their platinum windows based reseller hosting package. The package consists of 8 GB hosting space, plenty of bandwidth, 100 SQL Server 2005 databases and unlimited MySQL databases with HELM 3 control Panel. It also includes &lt;a target="_blank" href="http://www.hostingfest.com/Windows-Hosting-Details.aspx"&gt;support&lt;/a&gt; for ASP.NET 2.0, ASP.NET 3.5, PHP and ColdFusion. The server speed was good at all times and they have separate servers for files, mails and databases.&lt;/p&gt;
&lt;p&gt;Every hosting provider will have problems with their servers at some point of time. This is true with Hosting Fest as well but a key fact to note with regard to hosting fest is that they promptly resolve all issues immediately and also post an update on their website if the issue is major. They also developed an add-on for backup and restore of SQL Server databases and I have used it once. I am not sure whether they provide it now but it was a useful tool.&lt;/p&gt;
&lt;p&gt;I would suggest them to provide SQL Server 2008 as well along with their packages with HELM 4 or DotNetPanel control panel. It would be also great if they can provide hosting in europoean servers so that users in Asian countries will get better speed. They don&amp;rsquo;t offer unlimited space as others but you get what you pay.&lt;/p&gt;
&lt;p&gt;HostingFest provides excellent support through their dedicated help desk and all issues are promptly solved either by Nasir or Noman. I highly recommend HostingFest for all users especially developers who require reliable hosting with a friendly touch.&lt;/p&gt;</description></item><item><title>&amp;quot;Ver la luz&amp;quot; con generaci&amp;#243;n de c&amp;#243;digo y AjGenesis</title><link>http://msmvps.com/blogs/lopez/archive/2008/06/10/quot-ver-la-luz-quot-con-generaci-243-n-de-c-243-digo-y-ajgenesis.aspx</link><pubDate>Tue, 10 Jun 2008 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1633619</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;Ayer dí una charla gratuita sobre generación de código, usando &lt;a href="http://www.ajlopez.com/ajgenesis" target="_blank"&gt;AjGenesis&lt;/a&gt;. Espero haber transmitido la idea de que es más que generación de código, y que va más allá de la tecnología actual.&lt;/p&gt; &lt;p&gt;Quisiera enumerar algunos posts relacionados con el tema, y comentarlos, así como enumerar enlaces y recursos.&lt;/p&gt; &lt;h3&gt;Posts sobre generación de código&lt;/h3&gt; &lt;p&gt;&lt;a title="Sobre la generaci&amp;oacute;n de c&amp;oacute;digo" href="http://msmvps.com/blogs/lopez/archive/2007/08/02/sobre-la-generaci-243-n-de-c-243-digo.aspx"&gt;Sobre la generación de código&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Este es el primer post a leer. Vemos ahí que el cambio de tecnología es una constante en la historia de desarrollo de software, y que no se ve en el horizonte una unificación de nada, ni de lenguajes ni de plataformas. Cada año que pasa, sabemos más de hacer sistemas, pero curiosamente, cada sistema nuevo necesita más codigo que el anterior, en general. Aún usando tecnologías que nos alivian el trabajo, por ejemplo, algún ORM (Object Relational Mapper), si la tecnología triunfa, el propio mercado nos lleva a hacer sistemas más complejos y grandes, y lo que ahorramos en código a escribir, luego lo perdemos en la mayor complejidad de lo sistemas que tenemos a nuestro alcance construir.&lt;/p&gt; &lt;p&gt;También se enumeran otras alternativas a la generación de código, y sus problemas. Las herramientas CASE son muy rígidas, o generales o abarcativas, así como UML y otras iniciativas. Lo que necesitamos son modelos específicos de nuestro dominio, y poder generar lo que querramos, de la forma que nos convenga. De ahí la necesidad de contar con un generador de código que no esté orientado a una tecnología a generar en particular, que sea de código abierto, y que genere lo que nosotros le indicamos, no lo que los autores de la herramienta quieren o pensaron inicialmente.&lt;/p&gt; &lt;p&gt;El usar frameworks propietarios, quedarse en una sola tecnología, tratar de generar todo en runtime apelando a metadata, o generar código desde XML aplicando transformaciones XSLT, son alternativas que creo que son inferiores o más complejas, como se explica en ese post.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Generando C&amp;oacute;digo- Hello World con AjGenesis" href="http://msmvps.com/blogs/lopez/archive/2006/11/19/generando-c-digo-hello-world-con-ajgenesis.aspx"&gt;Generando Código- Hello World con AjGenesis&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Esta es la &amp;quot;prueba ácida&amp;quot; de todo generador de código. Si una herramienta de ese tipo no nos ayuda a crear programas &amp;quot;Hola mundo&amp;quot;, con variantes, en distintas tecnologías, entonces no es lo bastante flexible. AjGenesis hace hincapié en la flexibilidad, la adaptibilidad a lo que Uds quieran producir, sin atarlos a una forma o metadata en particular.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Generando aplicaciones con AjGenesis" href="http://msmvps.com/blogs/lopez/archive/2007/06/25/generando-aplicaciones-con-ajgenesis.aspx"&gt;Generando aplicaciones con AjGenesis&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Un post algo viejo, pero que muestra cómo se pueden generar aplicaciones no triviales con esta herramienta.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="AjGenesis- Modelo generado desde los assemblies" href="http://msmvps.com/blogs/lopez/archive/2007/11/27/ajgenesis-modelo-generado-desde-los-assemblies.aspx"&gt;AjGenesis- Modelo generado desde los assemblies&lt;/a&gt;&lt;br /&gt;&lt;a title="AjGenesis- Modelo desde la Base de Datos" href="http://msmvps.com/blogs/lopez/archive/2007/11/25/ajgenesis-modelo-desde-la-base-de-datos.aspx"&gt;AjGenesis- Modelo desde la Base de Datos&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Posts sobre cómo el modelo puede partir de otras fuentes, cualquiera que Uds. vean que sea conveniente. Luego, la propia herramienta puede mejorar, completar el modelo, hacer inferencias, o Uds. mismos completarlos, por ejemplo, si el modelo de base de datos no es lo bastante rico para darnos algo de semántica sobre el sistema que tenemos entre manos.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Generando c&amp;oacute;digo para NHibernate (Parte 3)" href="http://msmvps.com/blogs/lopez/archive/2007/10/29/generando-c-243-digo-para-nhibernate-parte-3.aspx"&gt;Generando código para NHibernate (Parte 3)&lt;/a&gt;&lt;br /&gt;&lt;a title="Generando c&amp;oacute;digo para NHibernate (Parte 2)" href="http://msmvps.com/blogs/lopez/archive/2007/09/25/generando-c-243-digo-para-nhibernate-parte-2.aspx"&gt;Generando código para NHibernate (Parte 2)&lt;/a&gt;&lt;br /&gt;&lt;a title="Generando c&amp;oacute;digo para NHibernate (Parte 1)" href="http://msmvps.com/blogs/lopez/archive/2007/08/05/generando-c-243-digo-para-nhibernate-parte-1.aspx"&gt;Generando código para NHibernate (Parte 1)&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Para ver que pueden usar AjGenesis para facilitar el desarrollo usando alguna librería reconocida por la comunidad, pueden leer esta serie de enlaces, donde gracias a una idea de Omar&amp;nbsp;del valle Rodríguez, se desarrollaron templates para usar NHibernate, y generar hasta una capa de presentación web para probar lo generado.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Hacia el AjGenesis Recipes" href="http://msmvps.com/blogs/lopez/archive/2007/11/20/hacia-el-ajgenesis-recipes.aspx"&gt;Hacia el AjGenesis Recipes&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Es un trabajo en progreso, para incorporar interacción con el usuario durante el proceso de generación de código.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Usando AjGenesis y NAnt" href="http://msmvps.com/blogs/lopez/archive/2007/11/01/usando-ajgenesis-y-nant.aspx"&gt;Usando AjGenesis y NAnt&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Explicación y enlaces para usar AjGenesis desde NAnt. Si alguien necesita una interfaz gráfica NAnt-GUI, pueden bajarla desde &lt;a title="NAnt-GUI" href="http://groups.google.com/group/codegeneration/t/2aef426f02370d1"&gt;NAnt-GUI&lt;/a&gt;&amp;nbsp;(preparado por Carlos Marcelo Santos, del &lt;a href="http://groups.google.com/group/codegeneration" target="_blank"&gt;grupo de generación de código&lt;/a&gt;)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Genesis Studio- una IDE para AjGenesis" href="http://msmvps.com/blogs/lopez/archive/2007/12/24/genesis-studio-una-ide-para-ajgenesis.aspx"&gt;Genesis Studio- una IDE para AjGenesis&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;No todo lo tienen que hacer desde la línea de comando, o desde el NAnt/NAnt-GUI. El bueno de Jonathan Cisneros desarrolló esta herramienta WinForm, con sintaxis de color y muchas mejoras en la experiencia de usuario, que pueden bajar desde:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/ajgenesisstudio" href="http://www.codeplex.com/ajgenesisstudio"&gt;http://www.codeplex.com/ajgenesisstudio&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Preservando c&amp;oacute;digo en AjGenesis" href="http://msmvps.com/blogs/lopez/archive/2007/11/11/preservando-c-243-digo-en-ajgenesis.aspx"&gt;Preservando código en AjGenesis&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Si necesitan generar código, pero luego modificarlo, pueden usar algunas capacidades de AjGenesis para delimitar qué parte regenerar y cuales conservan.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Code Generation as a Service" href="http://msmvps.com/blogs/lopez/archive/2008/04/03/code-generation-as-a-service.aspx"&gt;Code Generation as a Service&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;La última adición al AjGenesis: ahora pueden generar código usando una interfaz web. Esto permite que&amp;nbsp;ya sea en Internet, o desde la intranet de su empresa, puedan generar código controlado, que cumpla con los estándares que se hayan adoptado.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Más posts sobre AjGenesis en&lt;/p&gt; &lt;p&gt;&lt;a title="AjGenesis" href="http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx"&gt;AjGenesis&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Si necesitan pasarle información a alguien que no maneja el español, pueden probar con mis artículos en &amp;quot;Anglish&amp;quot; (Angel&amp;#39;s English):&lt;/p&gt; &lt;p&gt;&lt;a title="http://ajlopez.wordpress.com/category/ajgenesis" href="http://ajlopez.wordpress.com/category/ajgenesis"&gt;http://ajlopez.wordpress.com/category/ajgenesis&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Enlaces&lt;/h3&gt; &lt;p&gt;EL sitio sobre generación de código es&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codegeneration.net"&gt;http://www.codegeneration.net&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Ahí encontraran comentarios, herramientas, preguntas frecuentes sobre generación de código en general. Tienen una base de datos de herramientas publicadas. Hay enlaces sobre generación de código para distintas tecnologías, como Java, .NET, PHP y también temas de MDA (Model-Driven Architecture).&lt;/p&gt; &lt;p&gt;Otros enlaces que tratamos en las charlas son:&lt;/p&gt; &lt;p&gt;&lt;a title="CodeSmith Tools - The best .NET template based source code" href="http://www.codesmithtools.com/"&gt;CodeSmith Tools&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="MyGeneration Software" href="http://www.mygenerationsoftware.com/"&gt;MyGeneration Software&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="AndroMDA.org - Home" href="http://www.andromda.org/"&gt;AndroMDA.org - Home&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Mantengo todo tipo de enlaces relativos a generación de código en&lt;/p&gt; &lt;p&gt;&lt;a href="http://del.icio.us/ajlopez/codegeneration"&gt;http://del.icio.us/ajlopez/codegeneration&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Lista de correo sobre generación de código&lt;/h3&gt; &lt;p&gt;Existe un Google Group que se puede consultar por email, en español, dedicado a la generación de código. Ahí, además de otros temas, se trata de generación de código con AjGenesis, la generación de templates. En los archivos del grupo se publican ejemplos armados por los miembros.&lt;/p&gt; &lt;p&gt;Pueden ver los mensajes y suscribirse, en:&lt;/p&gt; &lt;p&gt;&lt;a title="http://groups.google.com/group/codegeneration" href="http://groups.google.com/group/codegeneration"&gt;http://groups.google.com/group/codegeneration&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Conclusión&lt;/h3&gt; &lt;p&gt;Espero que quede claro que lo importante es usar generación de código como solución pragmática, pero basado en la abstracción de un modelo. Hacer el ejercicio de abstracción de generar un modelo adecuado para lo que necesitemos, es un &amp;quot;must&amp;quot; que me parece el primer paso para separarnos de los problemas de cambios en las tecnologías, herramientas y plataformas.&lt;/p&gt; &lt;p&gt;Luego, el modelo debe ser de libre definición. Y el texto o código generado, también: debe ser el tipo de texto o código que hubiéramos generado nosotros mismos. Finalmente, la herramienta de generación de código tiene que estar disponible en código totalmente abierto, para que se pueda extender, entender o usar de la forma que querramos.&lt;/p&gt; &lt;p&gt;Tengo que escribir más sobre la importancia del modelo, y que pueden hacer el suyo propio: no hay modelo fijo, pueden partir desde la base de datos, desde los archivos XML de los ejemplos, o desde donde quieran. También tengo que escribir sobre la posibilidad de hacer modelos que se deriven de otros modelos. Y escribir haciendo énfasis en que lo que construimos, en realidad, es un sistema experto. De ahí, que desde el principio, incorporé un lenguaje de programación que puede tomar decisiones, completar y modificar el modelo.&lt;/p&gt; &lt;p&gt;Como ven, con AjGenesis, ¡sky is the limit! :-)&lt;/p&gt; &lt;p&gt;Nos leemos!&lt;/p&gt; &lt;p&gt;Angel &amp;quot;Java&amp;quot; Lopez&lt;br /&gt;&lt;a href="http://www.ajlopez.com/"&gt;http://www.ajlopez.com/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Curso de PHP y MySQL gratuito en l&amp;#237;nea</title><link>http://msmvps.com/blogs/lopez/archive/2008/06/07/curso-de-php-y-mysql-gratuito-en-l-237-nea.aspx</link><pubDate>Sat, 07 Jun 2008 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1632610</guid><dc:creator>lopez</dc:creator><description>&lt;p&gt;Desde hace unas semanas, que estoy publicando lecciones de mis cursos presenciales de PHP y MySQL en mi mini sistema de&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ajlopez.net/cursos" target="_blank"&gt;AjLearning&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pueden ver el curso en:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ajlopez.net/cursos/Course.php?Id=4" target="_blank"&gt;Desarrollo de Sitios con Php y MySql&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;img src="http://www.todocontenidos.com/ajlearning/ajlearningphp.png" alt="" /&gt; &lt;/p&gt; &lt;p&gt;Como explico en la introducción del curso:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Como el curso de &lt;a href="http://ajlopez.net/cursos/Course.php?Id=1"&gt;Introducción a Java&lt;/a&gt;, estas lecciones nacen de los ejemplos que dicto en mis cursos presenciales. PHP, junto con MySQL, se ha convertido en la tecnología más usada en desarrollo web con programación en el servidor. Con PHP, se puede comenzar sencillo, y luego, armar aplicaciones web más complejas. &lt;/p&gt; &lt;p&gt;&lt;br /&gt;Como no siempre es posible asistir a un curso, me pareció interesante poner estas páginas en línea. No es lo mismo que un curso presencial, donde uno comparte experiencias con otros, o está en contacto con algún instructor. Pero también tiene sus ventajas: uno puede ir avanzando a su propio ritmo, y repasar todo cuanto quiera. &lt;/p&gt; &lt;p&gt;&lt;br /&gt;Espero que les sirva. El curso va ir creciendo. Todos los días publico una lección adicional (no necesariamente de este curso). Mantengo una lista de lecciones publicadas en mi post: &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2008/04/08/a-lesson-a-day-keeps-the-doctor-away.aspx"&gt;A lesson a day keeps the doctor away&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Siempre quería publicar las lecciones, pero estaba el cuestión tiempo para armar un curso completo. Por eso, tomé la decisión de publicar una lección por día, para tener siempre un mini avance, que no será mucho, pero ya se han acumulado como 100 lecciones, entre este curso y el de introducción a Java. Estoy comenzando a publicar algo del curso de JSP, y tengo pendiente comenzar con el de .NET. &lt;p&gt;El propio sistema de base va a ir avanzando: quiero incorporar preguntas y respuestas, pequeños problemas y ejercicios interactivos. &lt;p&gt;Nos leemos! &lt;p&gt;Angel &amp;quot;Java&amp;quot; Lopez&lt;br /&gt;&lt;a href="http://www.ajlopez.com/"&gt;http://www.ajlopez.com/&lt;/a&gt;</description></item></channel></rss>