martes, agosto 14, 2012

Ratawiki en PhoneGap

Es lo de hoy. PhoneGap es un toolkit basado en una versión de Apache (Cordova) que te permite desarrollar aplicaciones móviles a partir de html, css y javascript.

Mis viajes en metro bien podría aprovecharlos para escribir, y casi todo lo que escribo va a un ratawiki (ratasoft, degen, mis memorias de los 96 grados, canciones para mi nueva banda...). Me choca tener cosas duplicadas y pues no hay 3G en todo el trayecto.

Mi idea es hacer un editor que te permita editar offline las páginas del wiki y sincronizarlas cuando haya conexión.

El lado móvil necesita guardar local la estructura de cada página (en json), incluyendo la última versión que se sincronizó. Necesita permitirte editar las secciones y los metadatos. Y necesita sincronizar con el wiki en vivo.

Ya existe una gran parte de API usando Ratax (JSON-RPC), implementar las cosas que faltan es trivial. Aún con problemas de cambios concurrentes la cosa no es tan grave porque el Ratawiki versiona automáticamente todos los cambios.

Realmente es algo muy fácil, me va a resultar muy útil, y sería otro de esos factores que hacen a Ratawiki superior a los demás wikis.

miércoles, agosto 08, 2012

Metawiki

Hoy tuve una idea y una visión de cómo realizarla.

La idea es: un wiki que pueda tomar fragmentos del propio wiki.

Y la realización es con el buen ratawiki. Verán, en el ratawiki cada página está compuesta de una o más secciones. Esto fue diseñado para crear templates de contenido (que nunca se han usado), pasa crear secciones de código php (maa idea) y para mayor granularidad en los permisos.

Es actualmente posible acceder a documentos y a secciones.

Si no lo saben, ratawiki tiene un backend tradicional basado en xml, pero uno experimental en postgres. Combinando un lenguaje de queries con postgres será posible crear páginas que hagan referencia a otras páginas.

¿Que qué utilidad hay en eso?

Imagina que tu wiki es un listado de productos. Va a ser posible taggear laa páginas de los productos y luego generar un índice.

La página de los 96 grados tiene listados de tocadas, de canciones y de grabaciones. Sería más fácil mantener todo al día si sólo fuera necesario hacer una actualización en lugar de tres o más.

Pero todo lo vi claro cuando estaba diseñando la estructura del sitio de mi nueva banda: va a ser muy útil preparar todo con estas capacidades metawikísticas.

Probablemente no sea necesario un lenguaje de queries, bastará con un set y un iterador.

Una sección tipo 'table' podría además filtrar el contenido. Y podría soportar IO con archivos xlsx o csv. Eso sería totalmente formidable, pondría al ratawiki años luz delante de otros wikis.

Lo más difícil sería implementar eso en xml, lo que significa que tendremos que abandonar el backend clásico (!!), pero habiendo tanto por ganar es un sacrificio que tendremos que soportar.

viernes, junio 08, 2012

PHP en PHP

Cuando empecé a programar el Ratawiki me enfrenté al problema de la personalización de la salida, y pensé que lo mejor sería tomar un HTML existente y reemplazar algunos tags. En ese momento esa solución me permitió conservar diseños preexistentes.

Pero pronto me di cuenta que el título y el contenido no iban a ser suficientes. Entonces preparé un conjunto de diferentes variables y funciones para reemplazar.

Este método funciona bien y ha estado en uso por años. Pero sólo hace poco, cuando tuve que meterle mano, me di cuenta que la solución perfecta es hacerlo en php.

En su momento quizá no lo hice porque de alguna manera pensaba que fuera personalizable al democrático estilo wiki, pero eso nunca se concretó.

Ahora los skins de Ratawiki son archivos PHP, con todas las bondades del lenguaje, principalmente pienso en bloques de control, que fue la adición que necesitaba y me condujo a la epifanía cuando me di cuenta que de hecho estaba pensando programar un nuevo PHP. Todavía cegado por la necedad pensé en un port de Template Toolkit a PHP.

No es necesario reinventar tantas veces la rueda.

domingo, mayo 06, 2012

Ratasoft en progreso

No he tenido mucho chance pero ahí la llevo. En el Ratawiki tengo que terminar de migrar el calendario y los módulos administrativos de wikidata a wikiweb. Hasta el momento no he enfrentado bugs, pero requiere tiempo que no he tenido.

El Rataforo estaba parado por esperar al Ratamarkup (el módulo de formato más-sencillo-que-html), que ya tiene un set de características decente: soporte para los mismos plugins del RataWikiMarkup, además de los mismos formatos de párrafo y texto; sólo faltan listas anidadas y tablas para declararlo un reemplazo completo.

En cuanto eso esté listo comenzaré con la posibilidad de dar likes y compartir actividad del foro en Facebook.

Y en cuanto estos tres rubros estén cubiertos reinauguraremos oficialmente el rataforo.

Entonces será tiempo de terminar el panel de control del Ratawiki y hacer uno para el Rataforo.

Y de ahí el camino es menos claro, podríamos:
* migrar NetC4 a Facebook
* levantar de nuevo el servidor de Ratchat
* continuar con el desarrollo de DeGen
* etc?

Creo que tenemos para rato...

lunes, abril 30, 2012

Escapes avanzados en shell 2

Hace algún tiempo posteé sobre los escapes avanzados en el shell, usando la sencilla frase I'm here como ejemplo. Mi solución fue mejorada desde entonces al doble.

La alternativa #1: 'I'\''m here', definitivamente mejor que 'I'"'"'m here'.

La alternativa #2 sólo funciona con zsh: coloca tu cursor en la I, presiona C-SPC (control+spacebar), colócate después de la e y presiona M-" (alt+", o quizás tengas mejor suerte con escape y luego "). ¡Es magia!

¿Y para qué sirve eso?, escucho preguntar en la quinta fila. Cuando haces tu hacking desde la terminal, siempre es útil poder hacer algunos one-shot SQL queries usando encantamientos antiguos que requieren el uso de echo. Digo, igual y alguien más (además de mí) lo quiere hacer y no sabe cómo.

martes, abril 24, 2012

Sobreviviendo al blogosoftware chafa

En un principio, en el 2000, Ratasoft.net era un blog hecho y derecho. Y el formato en sí ya existía antes de que los términos weblog o blog cobraran fama. El blog corría sobre el SAR (Sistema de Administración Remota), un grupo de scripts en perl que programé precisamente para evitar el ciclo del ftp (bajar/editar/subir) y permitir a otros colaboradores postear y participar.

En el 2003 cambié la plataforma a Ratawiki y el formato de blog estuvo olvidado hasta apenas el 2010, que fue cuando programé una extensión que usa un foro de SimpleMachines como backend.

Pero no completamente satisfecho con el SMF, me di a la tarea de buscar una buena plataforma de blog que permitiera postear desde los dispositivos más erizos: mi Wii, mi smartphone (Android), mi iPad o mi Palm TX. Y sí hay software, pero digamos que teclear html en un teclado en pantalla no es mi idea de diversión. El problema requiere un cambio de paradigma: email.

Blogger acepta posts via email, pero la calidad del html producido depende enteramente de tu MUA. Otro cambio de paradigma: usar Ratamarkup y un proceso que reciba el post, lo procese y lo cargue. Y pensé que sería más fácil postear directamente a mi propio backend que a Google, así que programé un nuevo Rataforo pensando en usarlo como backend.

Y pues qué les puedo decir: ya funciona.

Ya encarrerados, estoy programando un script que tome este post con formato gacho y automágicamente lo ratamarke. De hecho el HTML que me generó el Blogger de Android no estuvo tan chafa. Y el GoogleCL no estuvo tan rifado, así que este blog se quedará aquí, y el Ratablog se quedará en Rataforo.

viernes, noviembre 04, 2011

zsh

Soy un perfeccionista, y no puedo evitar invertir una gran cantidad de tiempo en tener las herramientas necesarias.

Cuando empecé a usar FreeBSD me enamoré de tcsh y su aparente simplicidad, específicamente a la hora de hacer un for,

foreach FILE (`find . -name '*.log'`)
gzip $FILE
end
que me parecía bastante más sencillo que el equivalente de bash,
for FILE in `find . -name '*.log'; do gzip $file; done
pero un poco inóptimo porque no puedes en tcsh escribir un foreach en una sola línea.

Aún con algunos problemillas, fui usuario devoto de tcsh durante unos 7 años.

Pero estuve un tiempo confinado al universo de Windows XP (con Cygwin). Algunos problemas de rxvt-native y UTF-8 me empezaron a fastidiar y decidí probar zsh, que aparentemente funcionaba bien con CMD.
Ahí comenzó una etapa de descubrimiento que no ha terminado. Ese mismo for puede hacerse en zsh así:

for FILE in **/*log; do gzip $FILE; done
lo que resulta bastante cómodo; o
foreach FILE (**/*log); gzip $FILE; end
que además de familiar es también muy cómodo.

Así como eso, hay muchas otras bondades ocultas de zsh, un shell que incorpora lo mejor de bash, ksh y tcsh. Soy fan de zsh.