viernes, agosto 10, 2012

Tapando el sol con un dedo: Otro ciclista muerto

Hoy una lamentable noticia me descompuso buena parte del día, la madrugada de hoy un conductor ebrio atropelló a un ciclista y después de varias horas el ciclista falleció.
Más detalles de la noticia en http://www.furiosos.cl/2012/08/10/otro-cicilsta-fallece/ , y una nota bastante más completa en https://www.facebook.com/notes/happyciclistas/lamentable-noticia/10151988376725442

Una pena, no puedo más que lamentar lo sucedido y manifestar mis condolencias a la familia y cercanos de Arturo.

Sin embargo hay un factor que me hace pensar, Arturo iba sin casco, según declaró César Vallejo en su declaración en el Facebook de Happyciclistas:
"Cabe señalar que Arturo iba sin su casco, lo que claramente pudo haber amortizado el golpe, tanto en el parabrisas del auto como en el pavimento...."
Si bien las lesiones eran de tal gravedad que condujeron a su muerte, el tec abierto pudo haberse prevenido, y probablemente Arturo hubiera sobrevivido.

Es una discusión eterna, que los "furiosos" van a aludir no referirse a este punto "sensible" solamente "para no desvirtuar el debate respecto a la muerte de una persona por un individuo borracho conduciendo un auto." tal como me respondieron en su Facebook. Se parte con un debate respecto a una muerte por una irresponsabilidad más grande que otra, pero se intenta tapar el sol con un dedo.
Por un lado la irresponsabilidad criminal del conductor ebrio, condenable como homicidio involuntario (algún abogado que me corrija la figura legal), pero por otro la no menor irresponsabilidad de un ciclista respecto a su propia integridad física.

¿Cuántas muertes más son necesarias para que se legisle de manera seria respecto a los espacios de los ciclistas?
¿Cuántas muertes más son necesarias para que los detractores del uso del casco entren en sana razón?

"Desviar el tema, es terminar discutiendo que es mas "seguro" quedarnos encerrados en casa para no morir chocados por un auto." dijo el vocero en Facebook de los "furiosos", respondiéndome.
No se trata de eso, se trata de tomar conciencia que como ciclistas responsables tenemos las herramientas para que nuestro circular sea más seguro en la capital, más considerando que en Chile (y puntualmente en Santiago) NO EXISTE cultura vial.

El uso del casco DEBE ser obligatorio. Si TU como ciclista crees que NO DEBIERA SER ASÍ, piensa en tus familia y en tus seres queridos. Ellos no querrían que por una omisión perdieras la vida, cuando pudiste eventualmente salvarte por usar un casco.

Estoy claro que usar un casco no necesariamente va a salvar mi vida frente a un accidente de tránsito (*), pero es esa pequeña incertidumbre de que eventualmente podría salvar mi vida la que sostiene mi decisión de pedalear con casco.

(*): Tal y cómo usar el cinturón de seguridad (en un automóvil) puede NO salvar mi vida, o los airbags pueden salvarme o asfixiarme. No hay NADA que pueda garantizar tu seguridad al 100%, pero si hay elementos que pueden ayudar a aminorara el daño recibido frente a un accidente.

lunes, mayo 21, 2012

Instalación de Phreeze: Framework MVC para PHP

Desde hace poco estoy desempolvando mis destrezas programando PHP. Estaba entre arreglar mi generador de código (algún día hablaré del mítico DbCommand y su generador de código) y crear unas plantillas Velocity para generar código  PHP o encontrar un Framework FRB (Fácil, Rápido y Bonito)  que me cree los CRUDs que necesito y me permita seguir usándolo sin demasiada dificultad (por eso lo fácil).

No puedo decir que evalué, sino más bien miré, varios Frameworks. CodeIgniter, Zend, CakePHP, y varios otros algo más desconocidos, todos son muy muy completos, pero son tan completos como complejos. Yo buscaba algo fácil. Y llegué a Phreeze.

Phreeze me convención en un video de 3 minutos. La aplicación genera un CRUD completo para bases de datos MySQL con sólo algunos clicks. Me dejé seducir por el video ya que Phreeze es bastante complejo y hay mucho de magia detrás.
A punta de prueba y error logré decifrar como instalarlo en un entorno "no preparado". Hay que decirlo la documentación es completa, pero hasta hace poco carecía de tutoriales, y no es precisamente un Framework para enfrentarse sin un buen ejemplo, o un buen tutorial (personalmente prefiero los 2dos).

Requerimientos previos:

  •  Apache
  •  MySQL, sino no tiene sentido haberlo bajado...
  •  PHP, sino no va a funcionar
  •  PEAR  para PHP
  •  Habilitar mod_rewrite en la configuración del Apache

En mi caso yo uso Ubuntu, así que la instalación la hice usando apt-get y Synaptic (ya se que el nuevo Software Center supuestamente es más simple, pero yo soy de la vieja escuela).

La habilitación de mod_rewrite tiene sus "ques":

  • Se debe editar el archivo de configuración de sitios de Apache reemplazando donde dice
    AllowOverride None
    por
    AllowOverride All
    para que  los directorios que deban ser afectados por este módulo.
    En Ubuntu el archivo se encuentra en:
    /etc/apache2/sites-enabled/000-default
  • Habilitar el módulo mod_rewrite copiando el archivo a la carpeta de módulos habilitados (comando en una sola línea):
    cp /etc/apache2/mods-available/rewrite.load/etc/apache2/mods-enabled/rewrite.load
  • Reiniciar Apache:
    service apache2 restart


Supongo que está de sobra decir que los comandos se ejecutan en modo root ( sudo su - , o derechamente con sudo) .


Instalación:

  • Bajar el archivo comprimido desde la página oficial y descomprimir en alguna carpeta que sea visible desde su servidor web, por ejemplo /var/www/phreeze (de hecho llamarla phreeze es lo recomendado).
  • Ajustar los permisos para la carpeta temporal de Phreeze, en 
    /var/www/phreeze/builder/temp
    ejecutando
    chmod -R 777 /var/www/phreeze/builder/temp
    Los permisos 777 suelen ser  "complicados", pero claramente no van a asignar todos los permisos en un servidor de producción.
    ¡HÁGANLO SOLAMENTE EN MÁQUINAS DE DESARROLLO NO EXPUESTAS!
    (Sí, les grité, pero fue sólo para asegurarme que entienden esto.)
  • Verificar que funcione visitando http://localhost/phreeze/builder
  • Generar sus CRUDs.

Instalación de los CRUDs:

  • Descompriman el archivo que les generó Phreeze en alguna carpeta. Procuren  respetar los parámetros de configuración que dieron en el builder.
  • Ajusten los permisos de la aplicación a 755
    chmod -R 755 *
  • Cambien los permisos de la carpeta template_c a 777
    chmod -R 777 templatec
    Esto es para permitir que las plantillas puedan ser compiladas a la carpeta local.
    OJO
    : Yo uso Smarty, Phreeze permite usar Smarty o Savant como motores de plantillas (templates), la carpeta template_c es de Smarty, si usan Savant es otra carpeta.

Los comandos los ejecutan en la carpeta donde descomprimieron su aplicación.

Creo que con eso tienen para entretenerse. Les recomiendo que vean los tutoriales en video de Phreeze, son muy ilustrativos de como se usa la aplicación.

martes, marzo 13, 2012

jQuery Mobile borrar item en listview usando swipe

En este momento estoy usando jQuery Mobile para desarrollar algunas interfaces para unas aplicaciones móviles. Gracias a PhoneGap puedo compilarlas para Android y pasan de ser un desarrollo 100% a una desarrollo que sigue siendo web, pero tiene olor a aplicación.

Dentro de la interfaz me enfrenté al problema que lo limitado del espacio en pantalla no me permite incluir demasiados botones, y requería de una manera para eliminar ítemes de una lista en modo inset. Quise copiar un poco la interfaz de webOS (de la difunta Palm)  para esto, una interfaz muy similar a la que provee iOS en el iPhone.


La idea:

  • Deslizar el dedo desde izquierda a derecha para eliminar un ítem.
  • Deben aparecer botones que permitan borrar el ítem o cancelar la operación de borrado.
  • Al seleccionar borrar se debe confirmar la eliminación antes de hacerla efectiva.


El código y el ejemplo:

Observaciones:
La variable onswipe marca como activa la acción de eliminación. Si se está eliminando un item, no se podrán eliminar otro.
Una vez que se hacen aparecer los botones para la eliminación es necesario desactivar los eventos tap y click sobre el ítem de la lista, sino va a tomar la acción por defecto y los botones no van a poder capturar el evento de click sobre ellos.
Se ha utilizado la etiqueta "button" en vez de "a" (para enlaces) para evitar que el framework aplique los estilos de lista (en este caso lista tipo inset).

Está probado en Android y en iOS y funciona. Seguramente alguien lo va a poder mejorar.
El código toma bastantes referencias de lo discutido en https://forum.jquery.com/topic/adding-an-iphone-style-swipe-to-delete-button-to-a-listview . Lamentablemente el código original no me funcionó.

martes, febrero 07, 2012

Uso de bicicletas, ni licencias ni patentes son la solución


Señor director: 
Respecto a la carta de don Luis Villagra, sobre el uso de bicicletas, las infracciones en que incurren los ciclistas, y a su pregunta ¿Cómo es posible que una persona se monte en una bicicleta y salga a la calle sin tener la menor idea de las normas y la ley del tránsito?
Respondo: De la misma manera que hay automovilistas que por su manera de conducir se cuestiona su conocimiento sobre la Ley de Tránsito. Está demostrado que la licencia no es indicador de competencia que los valide para circular en las calles, quizás si lo sería complementar con un test psicológico.
 
El problema radica en que carecemos totalmente de cultura vial. No existe concepción de sana convivencia entre peatones, ciclistas y automovilistas, siendo que por fuerza debemos compartir las mal diseñadas vías de la ciudad. Los casi nulos intentos para que deje de primar la ley del más fuerte, o aquellos para la integración entre las partes con la incorporación de ciclovías de juguete, u originalidades como el bicicletero móvil, no son suficientes para promover el desarrollo de cultura vial. 
Las calles SI PUEDEN COMPARTIRSE entre vehículos motorizados y bicicletas, y las veredas SI PUEDEN COMPARTIRSE entre peatones y ciclistas, el secreto está en que ninguno se crea el dueño y señor de estos espacios, los países desarrollados así lo han demostrado. 
José Ignacio Santa Cruz
Peatón y ciclista

Enviada al diario La Tercera en respuesta a la  carta de don Luis Villagra. Veamos si la publican.

Actualización: 
Y salió publicada mi carta, aunque me vuelve a quedar claro que el comité editorial puede editar las cartas según su propio criterio:
http://diario.latercera.com/2012/02/15/01/contenido/opinion/11-100662-9-uso-de-bicicletas.shtml Vean las sutiles diferencias.
Y si quieren seguir el tema desde la carta original:

martes, enero 10, 2012

STPivot: JPivot con esteroides vs Open Source

Errata: En el artículo enfatizo en el tema distribución pagada. Revisando en más detalle la licencia GPL (v3 que es la actual)  se refieren precisamente al tema:
"If I distribute GPL'd software for a fee, am I required to also make it available to the public without a charge? (#DoesTheGPLRequireAvailabilityToPublic)
No. However, if someone pays your fee and gets a copy, the GPL gives them the freedom to release it to the public, with or without a fee. For example, someone could pay your fee, and then put her copy on a web site for the general public."
Resumiendo, puedes cobrar por la distribución de tu software, que es lo que sucede en este caso. También se refieren a que si compras el software, puedes publicarlo libremente sin "represalias" por parte de los creadores.

Hace un tiempo atrás me enteré de STPivot, un proyecto muy interesante que buscaba ser una alternativa bastante más novedosa al JPivot que viene por defecto en la edición Community de Pentaho.



Dado que es un proyecto que estaba siguiendo, me interesé y fui al sitio de Google Code para ver desde donde podía descargar la nueva versión y probarla.

Sorpresas:
  1. STPivot tiene nuevo sitio, y se ve muy prometedor.
  2. El enlace download me lleva a una ÚNICA opción de pago en Paypal. Por la módica suma de 95 euros puedo obtener el código fuente (aún publicitado como "Open Source" bajo licencia GPL v3), documentación y ejemplos.

Noten ciertas observaciones que puse en rojo:

  • Licencia  GPL v3
  • Nueva versión, ie no se trata de un producto distinto.

Al principio pensé que podía optar a una opción de descarga "recortada", sin documentación, ni ejemplos, pero no, es un todo o nada.   Google Code  sigue con la versión del 2010 en el SVN del STPivot.


  • Contribuciones de pago mínimo de 95 euros. No digo que no sea válido, ya verán cuál es el motivo de mi molestia.
  • Enlace a Paypal. Único medio para obtener el pack completo.
Haciendo mis tareas, revisé las "sutilezas" de la licencia GPL v3:


Resumiendo:
SI EXIGES un pago entonces tu software NO ES Open Source. 
Fácil y bonito, no hay que tener más de 2 dedos de frente para entenderlo.

Errata: La cita al GPLv3 se refiere puntualmente a pagos a posteriori, ie recibes el software y después te cobran por ello (imagino que algo así como "Me enteré que Ud. está usando mi software. Por favor págueme ene cientos USD.")

No me molestaría hacer una donación por este software. Tampoco me molestaría pagar por la documentación, tutoriales, manuales, ejemplos o capacitación (lo que parece bastante razonable).
SI me molesta que; independiente del destino de los fondos, lo loable de la causa, el costo de haber desarrollado el software; te quieran meter el dedo en el ojo de esta manera, disfrazando de Open Source algo que derechamente no lo es.
Este STPivot es otro producto, con otra licencia; y debiera incluso llevar otro nombre. No es una actualización al STPivot cuyo código está en el SVN de Google Code.

En el peor de los casos hagan lo que hace OpenBravo, entreguen una suite completa, con todo el código fuente sin documentar, con pocos y crípticos manuales o instrucciones online, y vendan todo el resto. Una estrategia que parece funcionar cuando decoras tu nombre con "Open" algo. Pero no le falten el respeto al Open Source, la gente puede no conocer, pero no son tontos.