Clientes para Twitter

Hace un par de días volví a usar Windows por mi nuevo trabajo luego de más de un año en OSX y entre las cosas que me han hecho falta -que no son pocas-, está el cliente que usaba para Twitter en Mac (el oficial). Es mi cliente favorito hasta ahora sin embargo he encontrado unas alternativas bastante aceptables en windows.

Para mi sorpresa al preguntarle a varios usuarios frecuentes de twitter qué cliente usaban en windows, la respuesta más común fue que usaban la web! Yo no me imagino ya usando la web, se me hace que requiere mucho tiempo para seguir dos timelines -si, es que yo uso dos cuentas diariamente- y aparte no me resulta muy natural tener que andar revisando el tab connect para ver mis notificaciones.

Por fortuna si existen variedad de clientes y los mejores que encontré han sido plugins para browssers y no aplicaciones nativas:

  1. Twitter Notifier en Chrome es lo más similar al cliente para mac que he encontrado, la interfaz es muy simple, con las secciones básicas de un timeline, actividad, mensajes directos y perfil. Tiene notificaciones configurables y la opción para usar Growl en OSX además puede manejar varias cuentas sin problemas. Hasta ahora no he visto que soporte manejo de listas, un gran problema.
  2. Echofon en Firefox es muy similar a Twitter Notifier, es de los primeros que probé hace mucho tiempo cuando empezó twitter y se ha mantenido con una interfaz simple y cómoda. No es mi primera opción pues firefox ya no es mi navegador por default, pero bien podría ser de los mejores clientes que hay para Windows.
  3. TweetDeck como extención de chrome es un poco más compleja. Tiene muchas ventanas y ocupa demasiado espacio a mi gusto en la pantalla. Funciona con varias cuentas y podría ser una buena alternativa para quienes buscan una interfaz menos minimalista.

Con esto termino mi review de aplicaciones cross-platform, aunque mi favorita sigue siendo Twitter for Mac.

Here Comes the Sun – Yuna
-Great soundtrack on Savages!-

Indispensables en Mac

Estas son mis aplicaciones de rutina en Mac para mejorar la seguridad en el computador, son de lo primero que instalo siempre que empiezo a usar un PC -sí, es que los Macs también son PCs-. Así sean “muy pocos” los peligros para MacOS siempre es bueno andar con precauciones, además que son todas gratis :) -O pueden serlo-.

  • Si estás en un disco propio o que vayamos a usar de rutina siempre es bueno usar FileVault para proteger la información en caso que el computador caiga en manos indeseadas. FileVault encripta el DD completamente y es importante no olvidar la contraseña o el código de seguridad que nos da Apple. El rendimiento no se ve afectado brutalmente a pesar de ser total el cifrado, de hecho casi en nada y es muy fácil de activar, la opción se encuentra en:
    System Preferences > Security & Privacy > FileVault
  • Activar el Firewall de Mac que funciona de maravilla pero que por defecto viene deshabilitado, para esto deben ir a:
    System Preferences > Security & Privacy > Firewall

    Para aquellos que necesitan mayor flexibilidad de la que ofrece la interfaz por defecto; existe IceFloor que usa el mismo Firewall del Mac pero brinda más opciones a la hora de configurarlo.
  • Además de estas opciones en Firewalls, existe LittleSnitch; que no es propiamente un Firewall, de hecho me gusta referirme a esta app como un Firewall al revés, pues lo que hace es evitar conexiones desde el Mac hacía afuera, en vez de conexiones externas hacia el Mac -que es como funcionan los firewalls convencionales-. Este programa por defecto no es gratis pero existen trucos para tenerlo, que es básicamente lograr la extensión del full trial indefinidamente, bloqueando mediante el mismo LittleSnitch conexiones a sus propios servers… *Clever huh*
  • Find My Mac es un recurso que espero no tener que usar nunca jamás pero por si las moscas es bueno tenerlo configurado, para esto hay que tener una cuenta en iCloud y MacOS Lion o posteriores. Esta app permite tener la ubicación de tu mac desde cualquier lugar en caso de ser extraviada o robada, además de la posibilidad de borrar el disco duro de manera remota.
  • Ghostery es de mis plugins favoritos, sirve para bloquear todo tipo de widgets, trackers, y demás código innecesario que siempre anda por cuanta página en internet y al final una nunca sabe que pueda ejecutar por debajo.
  • HTTPS Everywhere es el complemento de Ghostery, pues siempre que una página tenga soporte para HTTPS obligará al navegador a usarlo, una conexión cifrada siempre es preferible para navegar!
  • Sophos AV es un buen antivirus sin complicadas opciones y permite despreocuparse de su funcionamiento pues es todo muy transparente. Sé que probablemente existan mejores opciones pero con este me basta, es muy útil sobretodo al abrir archivos que puedan estar infectados aunque el sentido común es indispensable también. Es que no se puede andar ejecutando cuanto .dmg se nos atraviese!
  • Este en especial es un must: Estar al día con las actualizaciones de MacOS que aparte de traer nuevas features también arreglan bugs!
  • Me gusta que se borren mis cookies, historial, sesiones, cache, etc.. Cada vez que dejo un PC que no es el mío. Para esto Firefox tiene una configuración que ayuda en la tarea: En la pestaña de Privacy en Preferences de Firefox, seleccionan la opción de use custom settings for history y le dan check a clear history when Firefox closes; si ya son más paranoicos pueden darle check entonces a Always use private browsing mode para más discreción.
  • Sin importar el navegador que usen asegúrense de tener la menor cantidad posible de plugins instalados, solo lo indispensable y sobretodo confiables. También es importante actualizar los plugins y claro está los navegadores.

Además de todo esto, no está de más leer las recomendaciones de Apple y tomar lo que nos convenga :) .

Por último con el reciente boom de FlashBack lo que deben hacer para asegurarse de que no cuentan con semejante huésped es correr estos comandos en la Terminal y seguir estos pasos en caso de estar infectados. Si no usan Safari las probabilidades de tenerlo son minúsculas pero corran los comandos igual. En mi opinión el  hecho de que exista tanto bombo con el descubrimiento de este virus se debe a que por un lado son muy raros y eso es bueno, y por el otro a que el OS se ha popularizado mucho en estos últimos años y ya es rentable sacar virus para los usuarios de Mac -pues no tiene mucho sentido crear virus para un OS con pocos usuarios cuando se sabe que el mundo usa Windows-.
Obviamente también se debe a que los usuarios de otros OS generalmente son muy haters y cada vez que puedan encontrar defectos -que claro los hay- en Mac los van a magnificar hasta el infinito.

Editado: Hoy salió la actualización que arregla el desastre de FlashBack, solo tienen que instalarla :) .

Foo Fighters – All My Life

How To: Pjax en Django Form

Esta es de las cosas que aprendo gracias a mi trabajo. Y resulta ser algo muy cool, les muestro: En este demo luego de activar el checkbox de pjax (si no están en internet explorer) -que asumo que no, para no enojarme apuff-. Pueden navegar por la página sin que esta haga refresh nunca. Nunca. Jamás. Y lo mejor es que el atrás, adelante e historial de su navegador sigue funcional.

Me explico si aún no ven la maravilla; esto es poder usar ajax en toda su web permitiendo navegar entre contenidos de diferentes urls con acciones de back y forward. En pocas palabras PushState + Ajax = pjax.

Para usar pjax en Django necesitan:

Sigan los pasos del setup y si tienen alguna duda, respondo en comentarios; pues la idea no es traducir tutoriales.

Hasta ahora todo suena bien hasta que se presenta el envío de un formulario por get. El truco está en que realmente no se hará nunca un submit como tal. Más bien se imita el submit de un form por get, que básicamente es el envío de datos por url -que gracias a pjax es posible-. Así:

$('#form-id').on('submit', function(e){
    e.preventDefault();
    $.pjax({
        url: $(this).attr('action') + '?' + $(this).serialize(),
        container: '#pjax-container-id'
    });
});

El serialize de jQuery retorna los datos de la forma listos para el url y es todo :) .

Dentro de los posibles problemas que se pueden presentar está que el action que le definan a la forma no sea la url exacta que usa Django para procesar esta vista; por ejemplo la falta del slash al final de la url puede generar una redirección y esto ocasiona múltiples procesos pjax al tiempo.

Para hacer debug de pjax simplemente agreguen esto a los parámetros:

error: function(e, xhr, err){
    alert('Error: ' + err);
}

Para todo lo demás están los comments :P .

Jack White – Love Interruption

Boolean desde JS a Python

En algún momento me encontré con el dilema de recibir booleanos en una función de Python que es llamada desde Javascript y la manera más limpia de hacerlo me pareció simplemente enviar un string desde el JS con algún valor, por ejemplo “true” y otro vacío “”; también podría usarse null. Si hacen la prueba en Python se puede ver que cualquier cadena no vacía en booleano es true, la cadena vacía resulta false y el null viene siendo None que también resulta false en booleano.

The Cardigans – Communication

PS: Gracias a @JamF0x por la alternativa de null !

Enter en un Form Ajax

Cuando se tiene una función ajax para manejar un formulario la gracia de todo es que las operaciones sean instantáneas y no se requiera nunca refrescar la página. La magia de ajax se pierde cuando el usuario termina; y en vez de darle click al botón que tiene bind, puesto con el mayor de los cuidados llamando a nuestra querida y mágica función ajax; el usuario da enter y nuestro form se envía dejando una pantalla blanca para nada mágica. La solución es tan simple como agregar este evento al form:

<form action="" method="post" onsubmit="return false;">
...
</form>

El botón sería algo así:

<input type="submit" value="Aceptar" />

O si prefieren el tag button:

<button type="submit">Aceptar<button>

Lo que sucede al definir onsubmit como “return false;” es que el formulario no hará el submit como normalmente lo haría, de hecho, no hará ningún submit. Esto arregla el problema inicial, ahora solo deben manejar el llamado ajax como deseen :) . En Django recomiendo usar dajax (L)

Lykke Li – Get Some (God bless Sweden (L) )

Baby Steps en Django

Antes de empezar a hablar de proyectos y demás addons de Django (pronunciado yan-goh, pues la ‘D’ es silenciosa) debí empezar por este post. Primero que todo muy resumido les digo que Django es de lo mejorcito en frameworks para desarrollo web y está hecho en Python.

Para usarlo por supuesto deberán tener instalado python en su útima versión estable preferiblemente. Si usas MacOS ya viene por defecto y es solo hacer esto para probar:

Python Consola

Lo siguiente es descargar Django descomprimirlo como prefieran y por consola cambiar al directorio donde se descomprimió y ejecutar lo siguiente:

Instalando Django

Que por supuesto yo no voy a correr porque ya lo tengo instalado :P .

Les pédira el pass de administrador y hará lo suyo…

Comprobamos que está django instalado; primero abrimos python y luego importamos django y le pedimos la versión instalada:

Comprobar instalación

(more…)

Bootstrap!

El título del post bien podría ser suficiente y ya podrían parar de leer los que saben a lo que voy. Pero tu que seguiste leyendo, entérate:

  • Bootstrap es un toolkit de estilos CSS, muy web 2.0 y muy muy bonito, listo para usar  y creado por Twitter.
  • En su última versión le agregaron también funciones de JavaScript que complementan el CSS.
  • Es cross-browser :) .
  • Bootstrap también viene en versión LESS; esto es CSS un poco más inteligente y reutilizable (L) .
  • La documentación habla por sí sola, es el vivo ejemplo de Bootstrap en acción y todo muy bien explicado.
  • Para los que ya usan uni-form, es completamente compatible usando estos templates.

Este proyecto resulta de lo más interesante para programadores que no tienen tiempo, no saben diseñar (vamos, que ninguno de nosotros programa y diseña. No mientan por favor) ni tienen dinero para pagar por un diseño. Y sé que en esta definición se van un poco ;) . Bootstrap tiene la paleta de colores ideal para la mayoría de páginas y además puede acomodarse con otros colores. Por todo eso, recomiendo mucho este proyecto, existen muchas alternativas, pero me parece esta la más fácil de usar, muy funcional y atractiva.

Bootstrap en GitHub

Amy Winehouse – Tears Dry On Their Own

Servidor VPN Gratis, o no

Pues nada, que quiero un servidor VPN gratis y esta es la forma de ternerlo. Lean que tal vez la cosa funcione y hasta puedan conseguirse uno propio.

Lo quiero para evadir algo que llamo discriminación en internet basada por su puesto en la ubicación de tu ip; esto es que lo no ubicados en EUA -y otros sitios privilegiados- no podamos disfrutar de muchos servicios como debe ser. El caso de netflix recientemente, pero también, spotify, pandora, youtube… Y hasta el mismo google te sesga los resultados dependiendo de la ubicación (aunque esto es completamente configurable, ¡que sería el colmo que no!)

Se trata de que escriba un review del servicio Super VPN Service, pero como para hacer un review primero tengo que probarlo entonces realmente no hay mucho que pueda recomendar, criticar ni describir; así que les diré las características que tiene el servicio y cuando/si me lo dan entonces ya escribiré un review más acertado. Espero que por la sinceridad no vayan a negarme el VPN :) .

Características del servicio:

  • Conexión usando los protocolos PPTP&L2TP
  • Servidores ubicados en Estados Unidos y Alemania
  • Tráfico ilimitado
  • Alta velocidad de conexión
  • Encriptación de 128 bits
  • Traspasa el firewall de tu ISP
  • Nadie (proveedores… cof cof ley lleras) guarda logs ni rastrea lo hagas en internet
  • Tu IP se mantiene oculta mientras uses Super VPN services
  • Funciona en Windows, Linux y Mac
  • También en móviles con plataformas Android/Windows/Mobile/iPhone/Blackberry/Symbian
  • Fácil de instalar y usar
  • Activación instantánea de la cuenta VPN

South para no-geeks

Tratando de explicar este post a alguien que ni idea de nada de nada, se me ocurrió algo que vale la pena poner acá para cualquiera que quiera enterarse siquiera de tablas de bases de datos.

no-geek: ¿May pero todo eso al fin para que sirve?

May: Imagina que estas jugando stop (ese juego cuando una era chiquita, que con una letra debes llenar una tabla en el menor tiempo). Y han jugado ya cuatro letras y tienes la hoja llena de campos, no cabe otra columna más. Luego llega alguien nuevo y dice que quiere jugar pero que sería mejor si agregaran el campo nombre de mascota. ¿Habría que cambiar de hoja y hacer la tabla de nuevo, no?

no-geek: Si, eso pasaba a veces

May: Si hubieses tenido South, se te habría agrandado la hoja y agregado el campo nombre de mascota

Got it? :) :nerd:

South

South es una herramienta que permite las migraciones en Django. Esto sirve al momento en que surgen cambios en el modelo y ya se ha creado la base de datos; y en el peor de los casos, ya se cuentan con datos por lo que hacer Drop y Sync DB no es una opción.

South se encarga automáticamente de identificar cuales fueron los cambios en el modelo y crea las migraciones necesarias para actualizar la base de datos, de esta forma en cada cambio se crean nuevas migraciones y mediante el historial de migraciones se pueden obtener versiones anteriores o posteriores de la BD.

Instalando South

En la página muestran varias formas de instalarlo, pero yo preferí irme por lo convencional y descargar el paquete desde aquí en la version 0.7.3 y luego instalarlo por la Terminal (en MacOS). El comando que usé luego de ubicarme en el directorio de South fue el siguiente:

sudo python setup.py install

Seguido me pide mi contraseña de administrador para instalar y si todo sale bien la última línea será algo así:

Finished processing dependencies for South==0.7.3

Para comprobar que efectivamente si se instaló South correctamente, importamos desde manage.py la aplicación y sino sale error we’re ready to go :) :

import south

Para empezar a usar South en algún proyecto, simplemente agréguenlo en el archivo settings.py de su proyecto de Django (que hallan creado previamente) en INSTALLED_APPS así:

INSTALLED_APPS = (
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 # Uncomment the next line to enable the admin:
 'django.contrib.admin',
 # Uncomment the next line to enable admin documentation:
 # 'django.contrib.admindocs',
 'prueba',
 'south'
)

Lo que sigue es hacer Sync DB. Yo uso eclipse, así que en Package Explorer hago click “derecho” (entre comillas, pues no existe tal cosa en MacOS, mas bien click con dos dedos ;) ), selecciono Django y luego Sync DB.

Django SyncDB

Pininos en South

Este tutorial no es más que mi versión de como hice los primeros pasos del tutorial que aparece en la página oficial.

(more…)