Still true after almost 5 years…no rules, just one BE OPEN

I love this video, and it is still true!

  • Everyone connected
  • Is that a good thing, or a bad thing?
  • The wisdom of the crowd
  • Time and place matter anymore?
  • Who decides? We do!
  • It is a mass collaboration
  • Could we create a world without borders?
  • Who is driving it. You. Me. All of us.
  • No rules, except one: BE OPEN!

En que programan los chapines?

A ver quiénes contestan esta duda que durante algún he tenido. Imagino que el espectro es bien amplio.

Sin duda estarán los clásicos,  que se deleitan con C o C++, e incluso pienso que más de alguno goza escribiendo Asembler. 

Habrán quienes ya llevan su tiempo en el campo y sienten cierta nostalgia por RPG, COBOl, FORTRAN. Algunos que aprendieron con Pascal disfrutaran todavía usarlo, o recrearse con Delphi.

Sin duda habrá Javeros, que programan en cualquiera de las tecnologías que Java ofrece. Habrán los que usan Struts, Velocity, Cocoon, J2EE y sus hijas, Servlets, Hibernate, Seam, Swing, SWT, JPA, Drools, Castor, jasper, etc. Algunos preferirán Tomcat, otros JBoss, algunos Gerónimo, etc. Aparecerán los amantes de Netbeans y los defensores de Eclipse. 

Read more En que programan los chapines?

Que pasa con la RAM cuando la apagamos?

¿Qué pasa con nuestra memoria RAM cuando apagamos nuestra computadora? Si me lo hubieran preguntado antes de leer este artículo, sin dudarlo y con mucha confianza hubiese dicho “se borra”. Nunca pensé que con enfriar un poco el chip de la RAM puede mantenerse los datos por más de 10 minutos!!

Read more Que pasa con la RAM cuando la apagamos?

Leyes con Wikis

Dando vueltas por ahí, me encontré con una noticia que me dio mucho que pensar: Nueva Zelanda puso en marcha un proyecto mediante el cual los ciudadanos pueden aportar sus ideas y comentarios para un proyecto de ley. Nada nuevo ¿verdad? En una democracia todos aportan a las nuevas leyes y lo hacen por representación. Lo innovador es que las personas no colaboran a través de sus diputados, sino que a través de un wiki que el gobierno abrió para tal propósito.

Las leyes en cuestión es la Police Act de 1958 y las Police Regulations de 1992, que al parecer no son nada superficiales. Actualmente el proyecto sirve para darle forma a la ley, que de todos modos tiene que pasar por el congreso para ser aprovada. La página está en MediaWiki, que es el mismo motor de Wikipedia y que está a disposición de quien lo quiera bajar. El sitio estuvo caído algunas veces por el tráfico internacional, pero poco a poco el tráfico ajeno se reducirá para que la página sirva para la finalidad que tiene.

 

Poco a poco irán apareciendo nuevos conceptos como este, y aquello que hace diez años se leía en libros futuristas, poco a poco está tomando forma. Se acercan tiempos en los que tendremos que repensar conceptos que antes creíamos etéreos, como la representatividad.

 

¿Será una buena idea? ¿Estaremos en veinte años haciendo las leyes de esa manera? ¿Que pasaría con la figura del diputado? En vez de “designar” a algunas personas que decidan por nosotros, tendremos la oportunidad de realmente influenciar. El concepto de “pueblo” puede afianzarse o el concepto de individuos que eligen revalorizarse.

 

 

Si a veces le temo a la tiranía en que puede derivar la democracia, ¿que pasaría en un entorno así? ¿Estaríamos dispuestos a que las leyes que nos rijan las decidan personas con pensamientos tan diversos? Si en un país sajón alguien decidiera proponer una ley para esclavizar a los que no son canches, y una mayoría apoya la idea en un wiki ¿sería justo? Justo o no sería una desición totalmente “democrática”.

Las minorías podrían correr peligro, las ideas populistas podrían revolotearse como virus, y podrían haber problemas. ¿Y la minoría más común y más importante de todas, el individuo, estaría a salvo en un mundo así?

 

Estamos entrando en una época en que el conocimiento, la información, tiene especial valor. Las demás personas pueden beneficiarse cada vez más de lo que śe, y de lo que opino, así como yo puedo beneficiarme de ellos. Los lazos entre personas distante físicamente se afianzan para crear proyectos interesantes, y tenemos que comenzar a pensar que el mundo cambiará más rápido de lo que creemos, y eso puede ser algo muy malo, o puede ser algo fascinante que haga mejor a cada ser humano en el mundo. Comencemos a hacer las cosas para que suceda lo segundo.

Generación de código

Cuando se aprende a programar, se encuentra el arte que hay detrás de ello. Cada paradigma y cada estilo llevan su arte dentro. Cualquier persona que gusta de escribir programas, añora los retos que un proceso complicado conlleva. Ante un problema cuya solución es complicada, las horas pasan rápido y la cantidad de neuronas que se ponen a funcionar dan una sensación equivalente a la adrenalina.

 

 Lastimosamente, en el mundo de la programación, también hay muchas tareas que son sencillas y amargamente tediosas. Existen procesos en los que es necesario hacer algo una y otra vez, y en las que los métodos convencionales de reutilización de código son poco eficaces con algunas tareas.

 

 Muchos años atrás me topé con ese problema: las tareas repetitivas no son agradables de realizar, y representan un porcentaje sustancial de un sistema de cómputo. Odiaba estar frente a esos casos en lo que había que hacer muchos catálogos, que en escencia eran mapear la base de datos a una pantalla para presentarlos al usuario y este fuera capaz de modificarlos.

 

 ¿Qué hacer para quitarme de encima esas aburridas tareas? Fui buscando soluciones y probando varias técnicas, y poco a poco fui llegando a la conclusión de que hay una forma eficiente y divertida de solucionar esas tareas: generando código. Haciendo programas que hicieran programas. Un concepto sencillo que se aplica todos los días al momento de utilizar un compilador.

 

 Una vez tomada la desición de que la generación de código hacía el trabajo más emocionante, comencé a darme cuenta de las muchas otras ventajas que este método tenía. El trabajo se podía estandarizar de una gran manera, los errores se reducían en un gran margen, al solucionar un error en un lado se solucionaba en todos lados, se podían implementar mejores prácticas de manera sencilla, y muchas otras que iré mencionando con el tiempo.

 

A la fecha me sorprende el poco uso que se hace de la generación de código. Fuera de los compiladores comunes, pocas tareas se autimatizan. Estamos todavía con el concepto de hacer software como artesanía. Cada programador tiene su estilo y sus preferencias, sus estándares, sus reglas, su método de documentación. Un sistema que involucra un equipo de cinco programadores tendrá cinco estilos de programación, cinco paradigmas a veces convergentes.

 

Pronto apareció el concepto de industralización del software. Creo que hemos llegado a un punto en el que no es factible seguir haciendo software a la antigua. Los recursos humanos son muy limitados, y hay que asignarlos a las tareas más difíciles. Por todos lados aparecen frameworks que hacen más sencilla, o más legible, o más inteligente la programación, pero hay un problema de fondo: estamos mejorando los mangos de las herramientas, su ángulo de filo, las estamos haciendo ergonómicas, pero la producción sigue siendo manual. Es momento de hacer máquinas que hagan esas tareas, máquinas que corten, máquinas que permitan la producción en masa de nuestro producto final: programas.

 

 La idea de realizar un programa en assembler, salvo casos muy específicos, aparece en nuestros días como una estupidez. Todos se han habituado al uso de compiladores. Pero falta dar un paso más allá y darnos cuenta de que escribir el código como se hace hoy, es también una estupidez.

 

 Es sorprendente que no existan más lenguajes de dominio específico (DSL por sus siglas en inglés). El uso de los DSL’s debe ser una herramienta importante en una organización. Hay muchas tareas que se pueden automatizar y no se hacen. En muchos casos XML se utiliza como herramienta de parseo, para crear lenguajes específicos. Si bien esto es una mejora, tiene sus limitaciones.

 

 Cada vez hace falta más software, y los encargados de dar el producto tenemos que hacernos más eficientes, tenemos que producir más en menos tiempo. La generación de código no es la herramienta única, ni la que solucionará todos los problemas, pero es de las que más me gusta. En diez años creo que será tan común encontrarla entre las herramientas de un equipo de desarrollo como un compilador, y ojalá muchos de los proyectos que aparezcan comiencen en este lado del mundo, porque tenemos la habilidad de hacerlo. Póngamonos pilas y comencemos a generar código.

Aplicaciones esenciales para Mac

Hace ya un año que mi portátil es una Mac (en casa sigo con Linux 🙂 ). Una de las razones que más me detenía para decidirme por una Mac era mi duda sobre cantidad de programas que para este OS. Incluso al inicio estuve un poco preocupado por eso. Pero ahora estoy tranquilo, porque en poco tiempo descubrí que la la cantidad de software para Mac disponible es increíble. Aplicaciones para MacOSX hay por todas partes, y suelen ser muy buenas aplicaciones. Para contarles un poco de mi experiencia en este mundo, les comparto algunas de las aplicaciones que he encontrado más necesarias y las que suelo utilizar más. Claro, en gustos se rompen géneros, porque si alguna no les gusta siempre hay alternativas. A la larga cada computadora es un reflejo de su dueño, y lo que le quieras poner a la tuya es cosa tuya. Algunas propuestas, ojalá les sirvan.

[QuickSilver.-> http://quicksilver.blacktree.com/]


De todas las aplicaciones que listo aquí, mi preferida es QuickSilver. Resulta un tanto complicado explicar su funcionamiento y qué es en sí. La mejor manera de comprenderlo es instalarlo. Se puede considerar un reemplazo del spotlight, pero tiene mucho más. Cuando se aprende a utilizarlo, se dejan de utilizar accesos o menús para abrir aplicaciones, para hacer búsquedas, buscar personas, etc.

[BonEcho.-> http://www.mozilla.org/projects/bonecho/releases/2.0a1.html]

¿Qué es BonEcho? Es simplemente un Firefox optimizado para Mac. ¿Qué es Firefox? Mmm, esa la tienen que saber. Exactamente, el mejor browser que hay. Así es, el famoso explorador que tiene una cantidad asombrosa de plugins. Le pegaron, el que tiene menos grietas de seguridad. Sip, también es ese que sigue estándares y que todos queremos usar. Sip, ese mismo Firefox.

[NeoOffoce.-> http://www.neooffice.org/neojava/en/index.php]


Simplemente una versión basada en openOffice con la diferencia de que usa las gráficas nativas de MacOSX en vez de utilizar X para la interfaz gráfica, por lo que es más bonito. Por lo demás es un openOffice con todas las ventajas del popular paquete de ofimática.

Read more Aplicaciones esenciales para Mac

Songbird, el reproductor multimedia del futuro.

Firefox y Thunderbird son los dos mejores ejemplos del software libre y de código abierto que han demostrado funcionar y que la gente los use. Personalmente apoyo mucho a los programas de código abierto, y hace mucho que el 90% de programas que utilizo son de este tipo.

Songbird Hace ya algunos meses que entré en el mundo Mac, y una de las cosas que más me ha molestado es que no he encontrado una alternativa a iTunes. Siempre fui usuario de Winamp y sobre todo de XMMS. A la larga lo que yo busco es un reproductor sencillo, liviano, con búsquedas rápidas y capacidad de hacer playlists, lo demás es vanidad, y si no tengo que pagar por él mejor. Como no hay otro me he tenido que quedar con iTunes, pero hoy encontré una alternativa que me llamó mucho la atención: songbird. Lo bajé, lo probé y hasta ahora estoy contento con él. No es XMMS, es más estilo iTunes, pero tiene la ventaja de ser código abierto y de tener aspiraciones a ser el firefox de los reproductores multimedia.

Read more Songbird, el reproductor multimedia del futuro.