Kaleidoscope

Kaleidoscope es un app para Mac OS X que sirve para comparar archivos y ver sus diferencias. Esto se utiliza con frecuencia en ambientes de trabajo con sistemas de manejo de código (SCM). Este app además de remplazar la herramienta que trae Xcode, incluye varias innovaciones interesantes.

Lo más que me llama la atención de Kaleidoscope es que tiene un modo para comparar diferencias de imagenes. Estoy seguro que deben haber unos cuantos apps para hacer esto pero esta es la primera vez que me encuentro con uno y realmente me encanta.

Otra cosa interesante es que tiene disponible 3 modos para expresar visualmente las diferencias entre los archivos. Además de esto se integra facilmente con GIT y SVN porque tiene un componente para hacer correr la aplicación desde el Terminal.

Diseño
Esta aplicación fue diseñada por los maestros de Sofa una empresa ejemplo de lo que toda empresa de software debería aspirar ser. Se nota que este producto fue manejado con mucho cuidado y con muchísima atención a los detalles. Es rápido, fácil de usar y se ve bien. Los “keyboard shortcuts” son buenos y tienen un app para el Terminal. Simplemente algo bien pensando y excelentemente ejecutado.

Muy recomendada. Me gustaría saber que piensan.

Published
Categorized as Default

Como crear y aplicar un “patch” con svn

Advertencia: Este “post” podría ser algo aburrido o incomprensible para los lectores que no hace desarrollo web y que no usan un sistema de control de versión para sus proyectos. Si usted es un web developer y no está usando un “version control system” pues la debes estar pasando muy mal. Yo uso subversion (svn) pero pero hay mas para escoger. El más popular entre los “cool kids” hoy día es Git gracias a GitHub pero también está Mercurial, CVS y muchos otros. Cada uno tiene sus ventajas y desventajas así que lea bien antes de seleccionar con cual casarse.

¿Porqué tuve que aprender a hacer esta cosa?

Hoy estaba trabajando en un proyecto que llevo completando hace meses en sesiones de una hora. A este paso terminaré en el 2030 pero terminaré. El punto es que necesitaba mostrarle unos cambios que había hecho a un amigo pero no quería hacer un “commit” porque no estaba seguro. Así que creer un “patch” y eso fue lo que le envié.

Un “patch” es básicamente un file de texto que contiene todas las diferencias generadas desde la revisión pasada del repositorio. Este archivo es ideal para enviar por mail, IM o para reportar “bug fixes” a proyectos “open source” donde no se tiene privilegio de “commit”.

Como hacer un patch con svn (usando el terminal):

  1. Navegue hasta el hasta el directorio principal de su proyecto (debe estar funcionando con svn) Ejemplo: cd ~/Proyects/FavoriteCustomer/
  2. Escriba svn diff > [filename] Ejemplo: svn diff > ~/Desktop/bug_fix.patch

Listo ya creó un “patch”. El segundo comando creará un file con todas las diferencias en su proyecto.

Como aplicar un patch con svn (usando el terminal):

  1. Verifique el archivo de “patch” que va a aplicar y asegúrese que no le hará daño a su proyecto.
  2. Navegue hasta el directoria principal de su proyecto y escriba:
    patch -p0 -i [filename] Ejemplo: patch -p0 -i ~/Desktop/bug_fix.patch

Eso es todo.

Published
Categorized as Default

Electrónica101: TweetDoorBell


El primer proyecto que quiero hacer con el Arduino es un timbre que cuando se presione envie un mensaje a Twitter diciendo que hay alguien el la puerta junto a una foto de la persona. Hoy terminé la primera parte.


En esta versión del proyecto lo que tengo funcionando es un circuito con un botón que cuando se presiona envia un mensaje via puerto serial. Hice un pequeño script en Python que escucha el puerto serial y espera mensajes de parte del Arduino. Cuando el mensaje del Arduino llega este script envia un mensaje a la cuenta de twitter que cree para este propósito.

Lo próximo que voy a hacer es añadir la lógica necesaria para que se tome la foto usando un webcam, la suba a yfrog y añada el url en el post de twitter.

Una vez esto funcione bien lo próximo sería la parte más complicada, que es integrar un timbre común y corriente con el arduino para poder detectar cuando alguien lo toca. Ya tengo una idea de como lo quiero hacer pero no se se si funcione.

Published
Categorized as Default

Electrónica101: LED Interactivo

Hoy pude dedicarle un poco de tiempo a leer Getting Started With Arduino y ya he tenido un par de sorpresas. La más interesante hasta el momento es la idea que se define con el término inglés de “tinkering”.

“Tinkering” se trata de tomar objetos electrónicos descartados y cambiarlos, añadir extraer y combinar elementos para crear nuevos objetos, algunas veces esto se hace sin un objetivo definido. Jugar para aprender.

Cuando pienso en esta idea no puedo evitar pensar en como fue mi proceso de aprendizaje de todo lo que se y hago. Por ejemplo empecé a aprender programación cuando vi unas cuantas lineas de código, vi lo que hacían y las cambié para ver si lograba otro comportamiento. Esto se ha repetido millones de veces a lo largo de muchos años. Ahora el proceso es otro pero empezó de esta forma. Me gusta esta forma de aprender así que estoy más motivado que nunca.


El proyecto de esta semana

Esta semana lo que hice fue un circuito muy simple que detecta cuanta luz recibe un sensor y basado en esto define la frecuencia con la que parpadea un LED. Un proyect simple y el resultado es bastante impresionante (por lo menos para mi).

Una cosa que creo que le añadió un poco más de emoción a este proyecto fue que usé una libreria de Python para leer el resultado de la lectura del sensor. Así que ahora tengo un pequeño dispositivo que sirve para medir cuanta intensidad de luz recibe este sensor desde un script de Python. Me pregunto que puedo hacer con esto…

Published
Categorized as Default

Chrome Developer Tools


Este vídeo es sobre las herramientas para developers que tiene mi nuevo browser favorito (por lo menos esta semana) Google Chrome. Esto fue durante una sesión para expertos en aplicaciones web, en el evento Google I/O 2010.

Un “feature” interesante es que ahora te permite editar el código JavaScript mientras la aplicación está corriendo. En otras palabras, encuentras en error en tu JS editas el cambio y puedes ver los resultados sin tener que hacer refresh o editar el “source”.

¿Has usado los dev tools de WebKit (Safari/Chrome)?
¿Usas Firefox/Firebug?
¿Qué prefieres? 

Published
Categorized as Default

Hacks Diabólicos con JavaScript

Este vídeo recomendado por @bshep está increíble. Este tal Billy Hoffman, experto en seguridad habla de por lo menos 4 o 5 hacks que son posibles solo usando JavaScript en un site malicioso.

Entre estos hacks lo que mas me impresionaron está uno que explica como implementar ping y un port scanner solo con técnicas de JavaScript.

Definitivamente todo web developer tiene que ver este vídeo para entender mejor las vulnerabilidades que hay en las aplicaciones que creamos.

Published
Categorized as Default

Electrónica101: Primeros pasos

Como comenté hace varios días atrás, no tengo idea sobre electrónica pero quiero aprender. Para esto voy a utilizar el ya popular microcontrolador Arduino, principalmente porque hay una comunidad muy grande de hackers y artistas que lo usan constantemente para hacer proyecto muy interesantes.

Mi meta no es ser un experto en electrónica. Lo quiero es poder aprender poco a poco mientras hago pequeños hacks que sea divertidos y que incluyan al web de alguna manera.

Tengo algunas ideas en mente pero creo que me tomará un par de meses tener suficiente conocimiento como para ejecutarlas. Espero poder compartir el proceso en este blog durante los próximos meses. 

Este primer post es para celebrar que ya llegó el libro y los componentes necesarios para empezar a jugar. Odio admitir que el Arduino está en mi casa tirado hace bastante tiempo.

Si alguien más se anima está bienvenido a participar de este “reto”. Lo único que puedo prometer es “geek cred”.

Published
Categorized as Default

Privacidad y Facebook

Desde que Facebook anunció hace poco el nuevo Graph API y especialmente el feature de Instant Personalization todo el mundo se ha vuelto loco. Todos los días alguien tiene algo que decir sobre el tema. Así que ya no pude resistir.

Para no tener problemas de seguridad con Facebook o con cualquier otro social network o servicio online sólo tienes que seguir una regla muy simple.

No pongas en el internet nada que no quieras compartir con TODO el mundo. En el internet no hay nada privado.

Si sigues este simple consejo no debes tener problemas y por favor dejen de escribir sobre Facebook y la privacidad.

Published
Categorized as Default

Necesito aprender de electrónica

Hace ya más de un año que me compré un Arduino. Esta plataforma para hacer prototipos se supone que sea fácil de usar y programar.

Por el lado de programar es muy cierto, usa el lenguaje Arduino programming language basado en Processing. Esta es la parte fácil porque se programar.

Donde se me complica es en la parte de la electrónica. No tengo idea de lo que estoy haciendo. Así que me decidí a aprender este tema. Me compré el libro mas básico que pude encontrar y un kit de partes para empezar con esto.

Voy a tratar de documentar el proceso para que otros se puedan beneficiar. Ya tengo en mente un par de cosas que quisiera hacer pero no se muy claramente por donde empezar. Cualquier ayuda es bienvenida.

Published
Categorized as Default