miércoles, 8 de febrero de 2012

Aprendiendo Vim en un rato (+ video)

Vim

(post dedicado a los programadores anticuados como yo, y a los que me miran raro cuando me ven usar una Mac desde la línea de comandos)

Vim es uno de los editores más minimalistas, sólo superado por su antecesor Vi.

Una descripción rápida en español, provista por el sitio oficial dice:

¿Qué es Vim?

(Una explicación en seis kilobytes - versión completa en español en el sitio oficial)

Vim ("VI IMproved") es un "clon de VI", es decir, un programa similar al editor de textos "VI".

Vim no solo trabaja en modo de texto en cualquier terminal, sino que también tiene un interfaz gráfica para el usuario, es decir, menús y soporte para el ratón.

Disponibilidad: Vim está disponible para muchas plataformas y tiene muchas características añadidas en comparación con VI (véase http://www.vim.org/viusers.php). Vim es compatible con casi todos los comandos de VI - excepto con los errores(bugs) en VI. ;-)

Sistemas Operativos: Vim está disponible para muchos sistemas: AmigaOS, Atari MiNT, BeOS,DOS, MacOS, NextStep, OS/2, OSF, RiscOS, SGI, UNIX, VMS, Win16 + Win32(Windows95/98/00/NT) - y especialmente FreeBSD y Linux.

Copyright: El copyright está en las manos del autor principal y mantenedor, Bram Moolenaar.  Vim es un "programa-de-caridad" ("charity-ware"), es decir que se sugiere que hagas una donación a los huérfanos en Uganda(véase ":help Uganda ").

Fuentes: Vim es OpenSource y todos son bienvenidos para ayudar a mejorarlo!

En la mayoría de las distribuciones de Unix/Linux, incluyendo Mac OS X, Vim ya está instalado y disponible. En Windows hay que descargarlo, al igual que si uno quiere estar seguro de tener la última versión en cualquier otra plataforma.

La forma más sencilla de empezar a usar Vim es escribiendo desde la línea de comandos:

vimtutor

Este comando en realidad carga Vim con un tutorial (en inglés) ya abierto. En realidad es una copia temporal del archivo del tutoríal, de manera de poder editar y practicar sin perder nada. El tutorial lleva unos 20~30 minutos, y para quienes lo encaren, espero que no se asusten cuando comienza explicando cómo moverse por el archivo utilizando las teclas HJKL. A no desesperar: las flechas también funcionan, pero sobre todo para quienes son buenos tipeando (no es mi caso), poder moverse sin tener que quitar las manos de la parte principal del teclado termina siendo sumamente útil.

Para quienes quieran aprender un poco más y darle una chance a Vim, que seguirá estando cuando las interfaces estilo Minority Report pasen de moda, tienen más información en Vim University. Dejo debajo un video (en inglés; menos de 6 minutos en total) donde se explica cómo crear macros.

Como Vim está centrado en el teclado, presten atención a la esquina inferior derecha del video, donde se van mostrando las teclas que el autor pulsa (ya que la mayoría son comandos que no se ven en el editor). Espero que les de una idea de la relación simplicidad/flexibilidad de este editor.

martes, 31 de enero de 2012

Video: HTML 5 para los no iniciados y curiosos, por Cristian Prieto (y más de Alt.NET Hispano)

Alt.NET Hispano

Los amigos de Alt.NET Hispano, coordinados por el infatigable Jorge Gamba, han publicado el video de otra reunión VAN (Virtual Alt.NET).

La sesión que menciono en en título, e incluyo debajo, es una de las últimas, pero aprovecho para hacer una actualización sobre la actividad del grupo, que sigue manteniendo un espectro de intereses bastante amplio, con centro en .NET y su ecosistema, pero llegando a montones de otros entornos, como Ruby, JavaScript o HTML5, como en este caso.

Como mencioné en un viejo post, Alt.Net Hispano realiza sesiones en vivo (utilizando Live Meeting) de entre 60 y 120 minutos con frecuencia semanal, a veces más de una por semana, que quedan disponibles en video posteriormente, sobre multitud de temas, siempre en español.

Com complemento a aquel viejo post, dejo una lista de las sesiones publicadas desde diciembre de 2010 hasta ahora (en total el grupo lleva publicadas ¡81 sesiones!).

Fecha Tipo Título Presentador
Duración
81 2012/01/28 VAN Introducción a fubuMVC Francisco Ruiz 1:56
80 2011/12/17 VAN HTML 5 para los no iniciados y curiosos Cristian Prieto 2:04
79 2011/10/08 VAN vNext, ASP.NET 4.5, Webmatrix 2 y MVC4... (Parte 2) Cristian Prieto 1:52
78 2011/09/24 VAN vNext, ASP.NET 4.5, Webmatrix 2 y MVC4... (Parte 1) Cristian Prieto 1:48
77 2011/08/06 VAN Node.js Hernán García 1:52
76 2011/07/23 VAN Conceptos de HTTP y Fiddler web debugger Leonardo Micheloni 2:13
75 2011/06/18 VAN Identity Providers, oAuth y Autenticaciones on-line Carlos Peix 
Nelo Pauselli 
2:16
74 2011/06/11 VAN Generación de código, con Essential Pedro Molina 2:35
73 2011/05/28 VAN Pex, Moles y Code Contract Esteban Gringerg 2:11
72 2011/05/27 VAN REST Services y WCF's Web Api Pablo Cibraro 
Gustavo Machado
José Romaniello
1:50
71 2011/05/21 VAN Reescribiendo ensamblados con Mono.Cecil José Romaniello 2:17
70 2011/05/13 ALT.NET Café Web Frameworks 1:34
69 2011/03/05 VAN Conform - Parte 2 Fabio Maulo 2:14
68 2011/02/26 VAN Audit (parallel model) con NHibernate 3 Fabio Maulo 2:04
67 2011/02/19 VAN CQRS Andrea Magnorsky 2:09
66 2011/02/12 VAN Estrategias para el manejo de sesión de NHibernate Parte II Nelo Pauselli
José Romaniello
2:09
65 2011/02/04 ALT.NET Café La Inmortalidad de la Medusa - Arquitectura 1:25
64 2011/01/29 VAN Programando con Windows Azure Angel "Java" López 2:10
63 2010/12/04 VAN Estrategias para el manejo de sesión de NHibernate Nelo Pauselli 2:16
62 2010/11/27 VAN ASP.NET MVC 3 & NuGet Cristian Prieto 1:59
61 2010/11/26 VAN Code Smells & Refactoring Martín Salías 2:02
60 2010/11/20 VAN Ruby on Rails Mario Chávez 1:54
59
2010/11/17
VAN
Entity Framework
Jorge Fioranelli
2:31
58 2010/11/16 VAN Cloud Computing Martín Salías 2:27

Hay muchísimo material para disfrutar, y les dejo el video de Cristian para abrir el apetito.

Unable to display content. Adobe Flash is required.

lunes, 30 de enero de 2012

Llegaron los monos a Heroku (+ video)

Mono en Heroku

Heroku es un servicio PaaS (Plataforma como Servicio), que permite publicar en la nube aplicaciones Ruby (el lenguaje soportado originalmente), Node.js, Scala, Java y Python.

La plataforma es fabulosa porque tiene un modelo de escala muy interesante, y es muy sencillo montar aplicaciones de manera gratuita por bastante tiempo, hasta que el volumen de tráfico y consumo de recursos requiere que se pase a un plan pago (lo que en muchos casos debería suceder cuando la aplicación ya está generando dinero).

Por otro lado, Heroku es una de la plataformas en su tipo con mayor simpleza para el despliegue y mantenimiento de las aplicaciones. Fuertemente basada en los flujos de trabajo de GIT, el sistema distribuido de control de versiones (creado por Linus Torvalds), para las plataformas soportadas directamente, desplegar una aplicación es tan simple como ejecutar desde la línea de comandos, parados sobre nuestro repositorio de GIT local:

git push heroku master

Y listo. Heroku se encarga de resolver todas las dependencias de acuerdo a las convenciones de cada plataforma (bundle en Ruby, NPM en Node, etc), lo que usualmente es muy rapido, y hace que nuestra aplicación esté disponible en segundos.

Bueno, esto ya debe ser conocido por la mayoría de los lectores de este blog. La novedad es que Ben Hall, un colega desarrollador que trabaja regularmente en ASP.NET y Rails, encontró la manera de desplegar en Heroku una aplicación basada en Mono (la implementación abierta y gratuita de .NET).

La aplicación de prueba está escrita en C# y basada en el framework Nancy (basado en Sinatra, un framework web minimalista para Ruby; Nancy es el nombre de la hija de Frank Sinatra). Como Ben explica en este post, este mecanismo no está soportado en lo más mínimo por Heroku, pero abre el camino para que eventualmente sea soportado (nótese que todos los lenguajes soportados además de Ruby fueron agregados en los últimos seis meses, aproximadamente).

Aunque el proceso es bastante experimental (requiere desplegar unas cuantas piezas de infraestructura sobre el stack Cedar de Heroku, que es el más nuevo de los sabores, y provee proceso sobre Ubuntu 10.04, y sobre el que corren todos los nuevos lenguajes.

La prueba final de que esto puede pasar de ser un experimento a algo más es que Chris Kemp, del equipo de Soluciones Técnicas de Salesforce.com (la compañía dueña de Heroku) grabó este video (en inglés) en el que muestra cómo poner en práctica la receta de Ben. Disfrutenlo, y esperemos que dentro de un tiempo podamos tener soporte más directo para Mono en Heroku.

viernes, 27 de enero de 2012

Ya llegó Ruby 3.2

Ruby On RailsYa se liberó una nueva versión de Ruby on Rails, uno de los más famosos frameworks para desarrollo web. De hecho, se liberó la 3.2 y casi inmediatamente la actual 3.2.1 resolviendo algunos temas menores aparecidos en cuanto la primer tanda de desarrolladores comenzaron a probar en masa.

Las características principales de la nueva versión son:

Modo de desarrollo y ruteo más rápidos

Mientras que las versiones anteriores de Rails re-evaluaban el código todo el tiempo durante el modo de desarrollo, la actual toma la idea de ActiveReload y solamente re-evalúa el código que haya sido modificado, acelerando mucho el ciclo de prueba-corrección-nueva prueba.

También se optimizó mucho la velocidad de resolución de rutas, incorporando el nuevo motor Journey.

Explicación de consultas

La nueva versión de ActiveRecord agrega un método explain que devuelve el detalle de resolución de una consulta, facilitando entender la forma en que el motor la resolvió para poder analizar la conveniencia de modificar índices o relaciones. De hecho, en el modo de desarrollo cualquier consulta que tarde más de cierto tiempo (medio segundo, por omisión) explica su resolución en la consola, como una medida de alerta que ya incluye el primer paso del diagnóstico.

Logging con etiquetas

La nueva versión de ActiveSupport brinda especial flexibilidad para poder dejar constancia en los logs de los dominios, usuarios, id de petición y otros datos que facilitan el análisis de operaciones o problemas en ambientes con muchos usuarios.

 

Los interesados en probar la nueva versión, pueden descargarla del sitio oficial. Como siempre, utilizando RVM se puede probar en paralelo con cualquier otra versión que tengamos instalada.

Si son usuarios de Mac (sobre todo si usan Mac OS Lion) ahorren tiempo leyendo las instrucciones del amigo Luis Petek sobre cómo sortear algunos detalles menores con ese entorno durante la instalación.

 

viernes, 20 de enero de 2012

C++ sigue siendo relevante (y está de moda de nuevo)

El Mapa de C++

Mientras que el Assembler (mi primer lenguaje de programación) perdió gran parte del brillo salvo para quienes programan para una plataforma exclusiva de hardware, C y C++ siguen siendo los lenguajes preferidos para gran parte del desarrollo de aplicaciones que requieren alto desempeño y optimización de recursos.

Es cierto, son lenguajes complejos y un tanto problemáticos (un gran poder conlleva una gran responsabilidad, decía el tío de Spiderman), y en la práctica pocas aplicaciones se escriben completamente en C++ pero hoy día pocas aplicaciones se escriben en un único lenguaje, de todas maneras (entre manipulación de datos, scripting, lógica, etc, casi siempre usamos dos o tres sin darnos cuenta). En el caso clásico de los juegos, por ejemplo, los motores de animación, detección de colisiones, etc, muchas veces se escriben en C++ mientras que la lógica final suele escribirse a más alto nivel, en lenguajes como LUA o Python.

Pero C/C++ siguen manteniendo un amplio reinado (como puede verse en este mapa creado por Elena SagalaevaVladimir "Jim" Gorshunin), y su avance sigue siendo importante aun cuando usamos lenguajes dinámicos o compiladores a demanda (estilo Java/.NET), porque los motores por debajo son cada vez más eficientes gracias a los progresos en C++, en algún punto. También, el auge de los dispositivos móviles (teléfonos y tabletas), ha hecho que la economía de recursos y el tiempo de respuesta  (sobre todo en interfaces multitouch) sea nuevamente un tema crítico.

Entre otras cosas, estos lenguajes siguen siendo casi únicos en la capacidad de determinar el consumo de ciclos de procesador y memoria en forma explícita, y los agregados a C++ 11 lo han hecho un poco más flexible y -un poco- menos peligroso, al utilizar técnicas modernas como inferencia de tipos, mejoras en el soporte de genéricos, inicializadores, expresiones lambda, todo un nuevo modelo para ejecución de tareas en múltiples hilos, incluyendo variables por hilo de ejecución, soporte para recolección de memoria, y muchísimas otras características basada en la biblioteca estándar, como soporte de tuplas y tablas hash, expresiones regulares, punteros inteligentes, meta-programación a través de plantillas, y muchísimo más.

Para una lista completa de novedades sobre el estándar aprobado recientemente, incluyendo preguntas frecuentes, pueden leer este documento mantenido por el creador de C++, Bjarne Stroustrup.

Finalmente, demostrando que el interés por el código nativo y la nueva versión de C++ es generalizado entre los participantes más activos en la industria, en los primeros días de febrero se realizará en Redmond, Washington, EEUU (dentro de uno de los auditorios del Campus de Microsoft) la conferencia Going Native 2012, que cuenta con un interesantísimo grupo de expositores (vean debajo los nombres y las empresas de las que provienen). El evento podrá ser presenciado en vivo o más tarde a demanda, desde la misma página.

Día 1 (2 de febrero)

Dia 2 (3 de febrero)

Espero que los programadores nativos los disfruten.