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.

Comienza la búsqueda….

Como dije hace un rato, estoy reorganizando muchas cosas. Ahora quiero mantener toda la información que se pueda en línea, alguna privada y alguna pública. Tiempo atrás hice un post sobre Jreepad y wikis y como estos me ayudaban a organizar conocimientos. Luego de muchos intentos, me quedo con el concepto de Jreepad: un arbolito sencillo con notas en cada uno de sus nodos. Es para mí un poco más estructurado que un wiki, y estoy aprendiendo que necesito tener algunas cosas estructuradas antes de hacerme bolas. Así que estoy haciendo algunas búsquedas para encontrar un equivalente a Jreepad, sólo que en linea. Sería muy bueno que tuviera tags y categorías, como WP para tener las cosas ordenadas y no al mismo tiempo. Por lo que he visto no hay muchos parecidos. Si no me va a tocar hacer uno porque si me interesa una aplicación así. ¿Alguien sabe de alguna parecida?

Cambia, todo cambia…

“Cambia, todo cambia” dice Mercedes Sosa en su canción. Y como todo cambia, ahora mi sitio también va a cambiar un poco. A causa de alguno de los problemas más tristes y serios de Guatemala, tuve que cambiar un poco mis paradigmas mentales y físicos del mundo tecnológico. Me tocó volver a Linux totalmente (experiencia muy agradable) y re pensar mis modelos de datos en línea. Estoy cambiando de hosting de LunarPages a DreamHost, y aprovecho para cambiar la estructura del sitio.

Una de mis dudas ha sido si meter mil cosas en un mismo blog o no, pero decidí hacer más de un blog con finalidades diferentes. Ahora http://guisho.com será únicamente un blog personal, más o menos un diario extendido con cosas que desee publicar. En estos días, cuando tenga tiempo, estaré sacando otro par de blogcitos con mis opiniones de economía, de tecnología y fotos.

Pero mientras tanto tengo un tanto de chance para cambiar los dominios, subdominios, DNS, bases de datos y demás así, que denle tiempo al tiempo.