viernes, 21 de marzo de 2008

Elección de una librería JavaScript


En la actualidad existen muchísimas librearias / frameworks JavaScript que son alternativas válidas a la hora de elegir una que utilizar en nuestros sitios. Esto hace que la elección de una sea difícil para quien nunca las ha utilizado, y en otros casos, la inercia de siempre usar la misma lleva a no siempre elegir la mejor para un proyecto.


El primer punto para poder decidir por una u otra librería es conocer cuales son sus fuertes y sus debilidades, y es eso lo que intentaré hacer en este breve resúmen de cada una. En este caso voy a hablar de Prototype, jQuery, YUI y MooTools.

Prototype - prototypejs.org


Esta es sin lugar a dudas una de las librerías más populares que hay, y sobre ella se han escrito muchos sitios e incluso otras librerías. Tiene una muy buena documentación y es sumamente sencilla de usarse. Es una librería genial para sistemas con mucha lógica en el lado del cliente, en especial por las facilidades que ofrece para crear clases (en particular a partir de la versión 1.6). El problema radica en que Prototype contamina todos los tipos de datos JavaScript con sus propios agregados, lo que hace que si uno está incluyendo plugins en el sitio o está desarrollando un plug-in, pueda romper el JavaScript del otro. Por ejemplo:

var frutas = new Array( "manzana", "pera", "uva" );
for ( var i in frutas )
alert( frutas[i] );


Sin Prototype mostrará 3 carteles, con las 3 frutas, pero si un plug-in cargase Prototype, este código mostraría muchísimas funciones y si se hiciese algo maś interesante que mostrarlas, el resultado sería totalmente inesperado.

jQuery - jquery.com


jQuery es sin lugar a dudas una de mis favoritas. La implementación de XQuery en JavaScript es de las mejores cosas que me han sucedido, pues facilita increiblemente la manipulación del árbol DOM. Aún más, el que permita una programación fluida (cada función retorna un objeto que puede ser utilizado para llamar a la siguiente) permite reducir lo que antes eran complejas piezas de código a una sóla línea muy facilmente legible.

jQuery está muy bien documentada, y no sólo no contamina el espacio publico, sino que está diseñada para poder ser altamente compatible con otras librerías si se lo requiere. Aún más, posee una increible variedad de plug-ins que uno puede incorporar según lo requiera, obteniendose una gran granularidad sobre que cosas se desea incorporar.

Son realmente pocas las limitaciones de jQuery, las maś importantes son la performance (que está en constante mejora, de hecho la versión 1.2.2 logró un gran avance en este sentido) y lo único que sí me ha limitado, es la imposiblidad de establecer ciertos headers a los pedidos AJAX (por ejemplo el encoding).

YUI - developer.yahoo.com/yui/


La YUI es una librería asombrosa. Tiene funcionalidades para hacer muchísimas cosas, y no sólo esto nos resuelve muchísimos problemas, sino que además viene todo skineado de forma muy agradable a la vista (aunque sigue siendo personalizable si se desea). Esta librería permite en forma realmente sencilla hacer aplicaciones web ricas y atractivas.

Sin embargo, YUI tiene algunos problemas que hacen que no sea usada en muchos casos. En primer lugar, su peso. YUI completa pesa más de 3 MB, y si bien es cierto uno nunca carga todo, sino que carga lo mínimo y si precisa más puede siempre utilizar el YUILoader para bajar CSS y JavaScript dinámicamente, lo cierto es que en general, sigue siendo demasiado, y se refleja rápidamente en los tiempos de carga. Por otro lado, YUI tiene un serio problema de documentación. Posee demasiados ejemplos, que no usan ni el 10% de lo que ofrece la librería, y la API Reference dista mucho de ser útil (suele hacer cosas como decir que una función devuelve un Object pero no dar ninguna pista respecto de lo que el mismo contiene) y nunca es claro en que versión se introduce una función / evento, por lo que mantener sistemas viejos es realmetne complicado.

mootools - mootools.net


Para quienes conozcan Prototype, notarán que esta librería tiene muchas cosas que les serán familiares. Muchas de las fuciones que ofrece una están en la otra: $A, each, bind, etc. Igual que Prototype, ofrece herramientas interesantes para generar objetos en JavaScript, y del mismo modo contamina los tipos de JavaScript por lo que hay que tener los mismos cuidados.

Lo original de esta librería es que al contrario de las otras, al momento de la descarga uno elije que cosas desea incluir y nos da un único archivo final que posee sólamente lo que nosotros precisamos.


En general, todo lo que uno hace con una librería se puede hacer con las otras, la diferencia está en cuanto tiempo y esfuerzo esto nos requiere. Idealmente uno debería de tener un buen manejo de un par de estas librerías y ser capáz de diferenciar cuadno conviene una u otra.

Continuar Leyendo…

sábado, 8 de marzo de 2008

Creando una cultura emprendedora


Ayer a la noche tuve con Matías Sulzberger, un compañero de la facultad, una de esas charlas que disparan ideas y movilizan a uno. Charlabamos sobre lo poco que se promovía en nuestra facultad el espíritu emprendedor.


El ITBA es reconocido como una de las mejores facutlades de ingeniería del país, destacada por el excelente nivel de sus egresados. Como alumnos se nos exige al máximo, y en el caso particular de Ing. Informática, debemos en todas las materias hacer un Trabajo Práctico Especial largo y complejo, condición de aprobación de la materia. El mismo tiene por objetivo asegurarse que somos capaces de llevar a la práctica aquello de lo que trata la materia y, como dijo alguna vez una profesora, "darnos una idea de como es el mundo profesional donde las cosas tienen que estar para ayer". Para aquellos que no están al tanto, cito algunos de los trabajos que he tenido que realizar en estos 3 años que llevo en la facultad a modo ilustrativo.

- Un sistema de compartición de archivos simil torrent en ANSI C (armar el protocolo con su RFC, programar el seeder, leecher y tracker, y tener todo documentado cumpliendo los requisitos preestablecidos). 3 alumnos por equipo, poco más de un mes para hacerlo.
- Un framework para juegos de mesa en ANSI C (implementar algoritmos genérios para MiniMax con y sin poda Alfa / Beta, abstraer todos los problemas recurrentes de los juegos y dar soluciones genéricas y personalizables) e implementar 2 juegos con el mismo. Todo documentado y con un manual para quien desee usar el FW. 3 alumnos, poco más de un mes.
- Expandir Minix 2 dandole soporte nativo para FAT12. 3 personas, 3 semana de trabajo.

Recordemos que todos estos trabajos se hacen en paralelo con las cursadas y trabajos que uno pueda tener, y no es raro tener 2-3 prácticos en paralelo. El tiempo es un factor limitante importante y uno suele pasar noches enteras sin dormir programando para cumplir la fecha de entrega.

Estos trabajos cumplen con el nivel de exigencia que pretende la facultad, y nos da esa sensación de tener que tener todo hecho para ayer, pero lo cierto, es que tienen muchas falencias en el darnos una experiencia de como es el mundo profesional.

En primer lugar, salvo por el trabajo práctico de Minix, siempre se ha trabajado desde cero o usando un Framework ampliamente aceptado. Por tanto, salvo con Minix, jamás tuvimos que lidiar con código de terceros, que pueda no estar en óptimas condiciones o que nos imponga limitaciones extras. Esto es un factor que en la vida profesional se vive a diario.

En segundo lugar, son trabajos que para nosotros como alumnos carecen por completo de utilidad. Una vez aprobada la materia esos MBs de código fuente se archivan en nuestro disco rígido y nunca tendrán uso. Si vamos a poner tanto tiempo y esfuerzo en algo, ¿cuanto mejor sería si fuese algo útil?

Hablando con Matías anoche, charlabamos sobre como en EE.UU. muchas materias tienen por trabajos prácticos hacer cosas como "aplicaciones de Facebook". Esto es genial, ya que uno no sólo está poniendo en práctica su conocimiento de tecnologías web, sino que está armando algo que le resulta interesante, que vive a diario, que tiene una utilidad más allá de la materia en sí misma y dode uno tiene que lidiar con restricciones y requisitos impuestos por fuera (Facebook por ejemplo establece limitaciones en lo que se puede hacer por JavaScript) y que se asemejan mucho más a la vida profesional.

Sería genial en el ITBA, así como en otras universidades, se pusiese en práctica algo así. Poder trabajar no sólo para aprobar la materia sino en algo que nos interese y tenga una utilidad en sí misma, algo que es en sí mismo un emprendimiento. Si los alumnos se acostumbrasen de temprano a hacer proyectos y ponerlos en marcha con un fin más allá de aprobar la materia, verían que emprender cosas no es realmente una ciencia, sólo requiere ganas, pasión por lo que se hace y sentarse frente a la PC.

Matías me comentó él ya charló esto con los directores de la carrera, y aunque todos están de acuerdo, no se aprecian cambios. Es así que surgió la idea de organizar un "club de emprendedores" dentro de la facultad organizado por los mismo alumnos, así como surgió el South American Buisness Forum. Ser nosotros mismos los que invitemos a los alumnos a un espacio común donde puedan informarse, conocerse, armar equipos de trabajo y empezar a convertir sus sueños en realidades.

Analizando nuestros compañeros, sólo 3-4 hemos empezado proyectos propios, sin embargo, muchos otros se han incorporado y colaborado con las ideas de otros. Ya sea por desconocimiento, por la falta de un equipo o porque tienen las ganas pero no una idea, son muchos los que no emprenden, y si se formase un espacio dentro de la facultad donde puedan conocerse, charlar y trabajar las posibilidades de que surja algo interesante se ven muy incrementadas, después de todo, la facultad se supone es un lugar donde las ideas deben fluir y surgir en forma natural.

Por ahora es sólo la idea. Esto está muy verde, pero la verdad es que no me deja de dar vueltas en la cabeza. Hay que armar documentos y charlar con los directivos, pero lo veo altamente realizable. Si alguien quiere colaborar con ideas, tiempo o lo que fuere es más que bienvenido.

Continuar Leyendo…

viernes, 22 de febrero de 2008

Palermo Valley, cuna de emprendimientos argentinos


No se trata de una nueva subdivisión de nuestro querido barrio de Palermo ni mucho menos. Palermo Valley es, como lo define su principal propulsor, un estado mental. Un meme bajo el que identificarnos y mostrarnos al mundo.


Desde hace un par de semanas, Santiago Siri viene empujando la idea de Palermo Valley, un meme bajo el que poder agrupar a todos los emprendimientos web de Buenos Aires y catapultarlos al mundo, y por medio de sus subliminales mensajes en Twitter y otros medios afines, ha logrado muchos otros nos interesemos. Es así como logró vencer a Vanesa Kolodziej, quien originalmente no quería saber nada con el tema, y terminó comprando el dominio palermovalley.com y creando el blog que allí reside.

En medio de esta vorágine que se creó de manera tan súbita, alguien comentó en Twitter que se debería de hacer un bar geek en Palermo, y de allí devino la idea de hacer un encuentro casual de emprendedores, al mejor estilo after office, donde todos podamos encontrarnos a charlar, compartir unas cervezas y nuestras ideas. Socializar, conocer mejor las otras ideas que están surgiendo en el Valley.

La convocatoria se hizo con muy poco anticipación, y sin embargo, hubo una asistencia que ningún organizador esperaba. Más de 70 personas se hicieron presentes desbordando ampliamente la capacidad del bar elegido y obligando a muchos a quedarse charlando y tomando cerveza en la calle. Un auténtico efecto Digg que dejó al bar en cuestión sin cerveza fría en menos de 2 horas. Un verdadero orgullo ver a tanta gente con tantas ganas e ideas, tanta gente que ama la web y quiere ofrecer su trabajo al mundo.

En sí, el encuentro se limitó a charlas individuales para conocer a los demás e intercambiar ideas, opiniones, conseguir invites a betas / alphas cerradas y poder ver que es lo que se verá online de acá a unos meses. La única excepción a esto fué el obligado discurso bienvenida / agradecimiento de los organizadores (Vanesa y Santiago) en el que Santiago se limitó a dejar muy en claro, y con un poco de humor como es habitual en él, cuales son las reglas de Palermo Valley.

En virtud de verdad, el término no es obra de Santiago, sino de su padre, quien hizo tal comentario al enterearse de la cantidad de startups que se habían asentado en la zona donde también están desarrollando Popego, a él le debemos este nuevo estandarte bajo el que nos paramos frente al mundo; a él mis agradecimientos.

Continuar Leyendo…

miércoles, 6 de febrero de 2008

Ser emprendedor


Ante la pregunta de si nos gustaría ser millonario, la gran mayoría responde que sí, pero cuantos realmente trabajan para lograrlo?


El principal problema creo yo, radica en que pocos piensan que realmente sea posible hacerse millonario si no es ganando la loteria o algo así. Pero si uno se pone a mirar a su alrededor encontrará que son muchas más personas las que se hicieron millonaria por sus propios medios que las que no. Como ya lo cité en otra ocasión, miren la cantidad de gente jóven que es millonario por labor propia.

Uno no se hace millonario trabajando, sino que debe trabajar para hacerse millonario. Y esta es una diferencia importantísima. Trabajando todos los días por un sueldo vamos a poder vivir, pagar alquileres, comida, darnos algunos gustos, etc. Pero el margen de ahorro no es excesivametne elevado, e incluso cuando lo sea, conforme pasan los años y uno se casa, tiene hijos, etc. los gastos tienden a crecer mucho más rápidamente que el sueldo. Viviremos, pero no seremos millonarios. Por otro lado, el día que dejamos de trabajar, automáticamente nuestra capacidad de subsistencia depende de cuanto duren nuestros ahorros. No somos capaces de mantener el mismo nivel de vida de forma indefinida.

Si por el contrario, el trabajo que uno realiza es para construir activos, es decir, cosas que generen dinero por si mismas, el dejar de trabajar no tiene que implicar recortar gastos. Empresas, sitios web, inventos que patentar, inmuebles, todo lo que pueda generar dinero sin que nosotros estemos necesariamente ahí sirve para este fin, el qué depende de los intereses particulares de cada uno.

Si uno es capáz de acumular activos, rápidamente se encuentra con que posee un ingreso extra de dinero que no depende de su trabajo, es un extra. Cuando se logra que el mismo iguale o supere a sus gastos totales, usted deja de NECESITAR trabajar para vivir, es oficialmente rico.

Ahora bien, en la teoría es simple, pero en la práctica no se ve todos los días. Como dije antes creo el principal motivo es la mera falta de convicción, el no dedicar algunas horas semanales a construir activos.

Hace un año, en mi antiguo trabajo, me ofrecieron trabajar full-time durante el verano y así poder ganar más dinero. En ese momento yo lo ví como una buena oportunidad y accedí. Hace poco se me planteó nuevamente la misma posibilidad, pero esta vez me he negado repetidas veces. Mi tiempo vale mucho más que el 33% extra de sueldo, es mi tiempo lo único que necesito invertir para poder hacer proyectos que me den dinero el día de mañana, es mi tiempo la única inversión que necesito en mi plan para ser millonario.

Es momento en mi vida de ponerme a trabajar para ser millonario. Todas las semanas me estoy renuniendo con mis socios a generar ideas, desarrollarlas y analizarlas. Queremos dejar de esperar a que vengan las oportunidades yestamos saliendo a su encuentro. Cualquiera puede hacerlo, es cuestión de estar decidido. ¿Lo estás tú?

Continuar Leyendo…