Geek & Roll » Uncategorized

Mac OS necesita una barra de tareas

Axel April 14th, 2011 Uncategorized 15 comentarios

Cada vez que digo que a Mac OS le urge una barra de tareas (taskbar) como la de windows me llueven tomatazos, pero de verdad creo que sería una enorme mejoría.

El dock es muy bonito (de hecho, creo que esa ese es su principal objetivo, y lo cumple con creces), pero deja mucho que desear para cualquier power-user.

El dock tiene dos funciones: la primera, ser un lanzador de aplicaciones (launcher). En esto es muy bueno. La segunda es mostrar las aplicaciones que están ejecutandose. Esto está muy bien para usuarios casuales, que abren cinco ventanas cuando mucho. Sin embargo, si vas más allá de eso (y muchos vamos mucho más allá de eso), el dock es inconveniente.

Al estar orientado a aplicaciones, el dock de Mac OS muestra una serie de íconos correspondientes a las aplicaciones que se ejecutan en la computadora, independientemente del numero de ventanas que tengamos abiertas en dicha aplicación. Si tenemos, digamos, cuatro documentos de texto abiertos, el dock mostrará solamente el ícono de la aplicación en la que estos se abrieron. Para seleccionar uno de estos documentos desde el dock hay que ir al ícono de la aplicación, hacer un click secundario y seleccionar el la ventana correcta de la lista que se despliega.

Screen shot 2011-04-14 at 8.36.06 AM

El proceso por medio del dock es el siguiente:

  • identificar visualmente cual es la aplicación que necesitas seleccionar
  • hacer click secundario
  • identificar cual es la ventana correcta de la lista desplegada
  • hacer click en el item de la lista.
  • Agrega un paso más si tienes el dock escondido para ahorrar espacio de pantalla.

Una tarea tan repetitiva (¿Cuántas veces al día cambiamos de ventana?) no debería hacerte pensar. Esa interrupción de una fracción de segundo para una tarea tan trivial debería considerarse mal diseño.

Por otro lado, una barra de tareas (orientada a documentos) nos presenta una lista de botones, uno por cada ventana, donde se identifica la aplicación y el documento que esta tiene cargado. De un vistazo se identifica la ventana correcta, y con un click ya la tenemos al frente.

taskbar

El proceso por medio de la barra de tareas es algo así:

  • identificar visualmente el botón que necesitas seleccionar
  • hacer click.

El proceso es mucho más sencillo, y además, al tener los botones siempre desplegados (y no escondidos detrás del ícono una la aplicación) este proceso se da aún más rápido.

Además, el espacio que necesita una barra de tareas es mucho menor que el que necesita el dock.

Obviamente no espero que Apple integre una barra de tareas ni siquiera en un futuro remoto, pero lo que sí me sorprende es que no exista ninguna aplicación de terceros que haga esto en serio. Existen algunos workarounds con ciertas aplicaciones, pero ninguna hace algo tan simple y con un patrón tan probadísimo como este.

EXPOSÉ

Es cierto, exposé, que es una capa donde se muestran miniaturas de las ventanas abiertas, puede ser muy útil para seleccionar la ventana correcta, pero de nuevo, si tienes más de cierta cantidad de ventanas las cosas se ponen difíciles. O no me digan que es muy sencillo seleccionar una ventana si exposé está así:

expose

Vengan los tomatazos.

Cómo instalar git en Windows

Cesar November 13th, 2010 Uncategorized 3 comentarios

Ya antes he hablado de git, el sistema de control de versiones que me hizo no odiar los sistemas de control de versiones. Git está muy amarrado a GNU/Linux en donde se instala fácilmente, pero no significa que no lo podamos instalar en Windows.

La manera más fácil, práctica y que te deja con un sistema completamente funcional es usando cygwin. En versiones anteriores, usar git con cygwin requería de compilación y magia negra, pero ahora que se incluye en su lista de paquetes es tan sencillo como point, click, listo.

Al final tendrás no solo git, sino también cygwin que te permite tener un ambiente GNU/Linux en tu máquina Windows. Eso para mi es invaluable.

Paso a paso
Descargamos cygwin de su sitio y ejecutamos el instalador, seleccionando la opción de instalar desde Internet. Después de varias pantallas donde podemos seleccionar una lista de mirrors y configurar un servidor proxy si lo necesitamos, llegamos a la pantalla de selección de paquetes:

cygwin

En la barra de búsqueda, buscamos git y dentro de la categoría devel seleccionamos git. Al presionar siguiente, el instalador automáticamente selecciona todas las dependencias y se pone a descargar e instalar todo. Esto puede tomar un tiempo, dependiendo de nuestra conexión a Internet y el mirror seleccionado.

Finalmente recomiendo seleccionar la opción de crear acceso directo al escritorio. Al dar doble click se abre una ventana similar al Command Prompt, pero las similitudes terminan ahí, ya que esa ventana es una terminal GNU/Linux hecha y derecha. Desde esa terminal pueden usar las herramientas GNU más habituales como bash, vi, nano, curl, perl, python y obviamente git. Si algo no está, pueden ejecutar el instalador de cygwin de nuevo y agregar las herramientas que desean.

Tema de Ubuntu 10.10 Maverik en Lucid 10.04

Cesar September 20th, 2010 Uncategorized 2 comentarios

Normalmente actualizo mis instalaciones de Ubuntu cuando sale el Beta, aunque no es lo más recomendado cuando dependes de la estabilidad de tu sistema operativo. Si aún no puedes actualizar a 10.10 porque te da miedo el Beta, pero quieres probar el nuevo tema, estas de suerte porque es muy sencillo gracias a un PPA con los paquetes actualizados.

Para agregar el PPA e instalar los nuevos temas (Radiance y Ambiance) desde la consola:


sudo add-apt-repository ppa:murrine-daily/ppa
sudo aptitude update
sudo aptitude install light-themes gtk2-engines-murrine

Listo. En el diálogo de apariencia (puedes abrirlo dando click derecho en el escritorio y seleccionando la opción de cambiar la imagen de fondo) deben de aparecer los temas actualizados.

Bonus: Si como yo, eres fan del menu global (si, como el de la mac) y quisieras poder tener el que trae Unity, pero sin toda la interfaz para netbooks, también es posible agregando el PPA de los responsables de Unity.


sudo add-apt-repository ppa:canonical-dx-team/une
sudo aptitude update
sudo aptitude install appmenu-gtk libqtgui4 indicator-applet-appmenu indicator-appmenu

En mi caso fue necesario cerrar la sesión de Gnome y volver a entrar. En ese momento el menu global cargó automáticamente, pero en caso de que no lo hiciera basta con dar click derecho sobre el panel superior y agregar al panel el “Indicator Applet Appmenu”; después de 5 minutos estaba fuera de mi panel, como que no se lleva muy bien con el panel estándar de Gnome. En específico no me gusta:

  1. Cómo se acomoda con el menu de aplicaciones actual. Los menus de Aplicaciones, Lugares y Sistema quedan pegados al menu de la aplicación activa. Se ve feo y confunde al usuario.
  2. Existe un ligero pero notable redibujado al momento de mover el menu fuera de la aplicación hacia el panel superior.
  3. No es compatible con todas las aplicaciones, específicamente con algunas que uso mucho como Firefox, OpenOffice y Netbeans.

Sony no quiere tu dinero

Cesar May 29th, 2010 Uncategorized 11 comentarios

Indiscutiblemente, parte importante del atractivo de la actual generación de consolas de videojuegos es el elemento online. No solo el multijugador online, pero también el contenido descargable y las “micro” transacciones para contenido extra, videos, renta de películas, o la compra de juegos clásicos. Nintendo tiene su canal Shop, Microsoft tiene su Marketplace y Sony la PlayStation Network.

Para mi, que rara vez juego multiplayer online, el valor está en poder comprar juegos clásicos, y la ocasional expansión. En el caso de Nintendo no podría ser más sencillo: aceptan tarjetas de crédito de todo el mundo. Es cuestión de meter los datos de tu tarjeta (si eres primerizo) y listo, a comprar Wii points.

En la PSN es una verdadera molestia. La PSN está seccionada en regiones, y la región Japonesa por ejemplo, puede tener distinto contenido que la Estadounidense, o la Europea. Supongo que es el mismo caso para las tiendas competidoras. Sin embargo en la PSN no aceptan tarjetas de crédito de México (y muchas otras partes del mundo).

Anteriormente la solución era:

  1. Sacar una cuenta en entropay.com
  2. Crear una tarjeta virtual
  3. Transferirle fondos a tu tarjeta virtual, desde tu tarjeta de crédito real (con una cuota)
  4. Asociar tu nueva tarjeta virtual a tu cuenta de PSN
  5. Agregarle fondos a tu wallet desde tu tarjeta virtual
  6. Comprar

Que ya era algo engorrosa, pero te acostumbras. Dejando por un lado el hecho de que cualquier cosa comprada en la PSN te sale más cara debido al cobro de entropay. Pero cual fuera mi sorpresa cuando me doy cuenta que de un tiempo para acá, Sony decidió que entropay no era válido para hacer transacciones en la PSN.

Sin la opción de entropay, la única solución es usar tarjetas prepagadas. Sony las vende desde su sitio www.sonystyle.com.mx. Las tarjetas prepagadas también se rigen por la región, por lo tanto si tu cuenta está registrada en México, solo puedes usar tarjetas para la región Mexicana. No solo eso, sino que no he visto una sola tienda se distribuyan dichas tarjetas aquí en Hermosillo, Sonora.

Tratando de hacer lo correcto, entré al sitio de Sony a querer comprar una tarjeta prepagada. La experiencia fue algo como lo siguiente:

  1. Entré al sitio SonyStyle.com.mx, el cual es increíblemente lento
  2. Después de varios intentos, por fin llegué a la parte donde ofrecen las tarjetas prepagadas de $50 ($717.18 pesos) y $20 dlls ($286.47 pesos).
  3. Para comprar algo necesitas registrarte (obvio). Intenté con mi actual cuenta de PSN, pero no funcionó.
  4. Al querer sacar una cuenta nueva, no me lo permite porque mi correo ya está en uso en algún otro sitio de Sony, pero no me dice cual.
  5. Seleccioné la opción de recuperar mi contraseña porque mi correo ya está en uso. Aún no me llega ese correo.

En este momento me rendí. Por suerte, mi cuenta está registrada con una dirección en USA (aunque es fácil sacar otra cuenta para la región que gustes) así que decidí probar suerte en eBay. No solo el sitio es mucho más rápido y amigable de usar, sino que también:

  • Acepta otros métodos de pago, como PayPal.
  • Hay tarjetas de múltiples regiones, de todas las denominaciones existentes.
  • Ten envían el código de la tarjeta en minutos. En el sitio de SonyStyle te dicen que se puede tardar hasta 48 horas.
  • Tienen protección para el comprador, por si algo sale mal.

Eso si, el costo generalmente es un poco más alto en eBay, pero por un margen muy pequeño. Ya convertido en moneda nacional, la diferencia era de $20 pesos. Además el “servicio al cliente” fue excelente, aunque claro depende del vendedor. En mi caso se la compre a talentlight, altamente recomendado. A solo minutos de la compra, ya tenía en mi correo el código. Llegué a mi casa y lo activé sin contratiempos.

Seguramente hay una razón para que Sony no acepte tarjetas de crédito Mexicanas, pero la combinación de factores:

  • Sony no acepta tarjetas de crédito Mexicanas
  • El sitio oficial para comprar las tarjetas de prepago es inutil
  • Las tarjetas no se consiguen fácilmente en tiendas

hace parecer como si a Sony no le interesara tu dinero.

¿Alguien con experiencias similares en la PSN?

The State of Web Development 2010

Rafyta April 26th, 2010 Uncategorized 1 comentario

sowd10

Interesantes datos, más en http://www.webdirections.org/sotw10/

Feliz Navidad

Axel December 24th, 2009 Uncategorized Haz un comentario

Desde los headquarters (we wish) de Geek & Roll les deseamos una feliz navidad a todos nuestros comentaristas, lurkers, trolls y visitantes ocasionales. Va un abrazo.

URL’s Pípiris Nais sin Wordpress

Rafyta December 21st, 2009 Uncategorized 1 comentario

Si te da hueva instalar tooooodo el wordpress nomás para evitarte las extensiones .php (o las de tu religión elegida), o de plano no lo necesitas, no te pierdas de ésta fíchur. Suponiendo que vivas en el maravilloso mundo de Apache, puedes arrojar este archivito .htaccess para que te haga el paro instantáneamismamente de quitar las extensiones .php de todos tus archivos, ok ok, en realidad los redirecciona pero es la misma, no?

descargar

Si lo que quieres es ahorrarte los horrores de ?var=value&this=siht&foo=barrio y esas cosas del diablo que no le gustan a Google y sus compas, también se puede; sólo tienes que editar unas líneas del archivo para alcanzar la felicidad instantánea. El archivo está así por default:

Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d

# RewriteRule ^folder/(.*)/$ /file.php?image=$1
# RewriteRule ^kind$ /category.php?cat=kind

RewriteRule ^([^\.]+)$ $1.php [NC,L]

Las dos líneas que empiezan con el gato (#) son las que pueden habilitar esa onda, por ejemplo en el primer caso, puedes tener el url original:

http://sitio.com/fotos.php?src=verano.jpg&w=300&h=200&zc=1

y con unos cambios hacerlo así: http://sitio.com/fotos/verano especialmente útil si usas TimThumb o algo así.

El segundo caso considera el ejemplo una tienda en línea, o cualquier tipo de sitio que use una base de datos para clasificar varios elementos (o records) en categorías y haga una lista. Por ejemplo, puedes tener: http://mitiendita.com/articulos.php?tipo=jeans
y pasar a: http://mitiendita.com/jeans.

Hay más cosas que se pueden hacer con éste simple código, pero éstas son las más frecuentes. Si se te ocurre alguna otra posibilidad, déjala en los comentarios.

Instalación:

  • Descomprime el .zip
  • Edita el .htaccess si es necesario (con notepad o cualquier editor de texto)
  • Sube el .htaccess al web root de tu sitio

Nuevo diseño

Axel April 1st, 2009 Uncategorized 9 comentarios

En efecto, esto fue un chiste de april’s fools. Somos norteñitos agringados pues.

Por fin tenemos activo el rediseño en el que hemos estado trabajando en los últimos meses. Aunque ya lo están viendo, se los platico:

Sabemos que el cambio de tonos oscuros a la paleta tan colorida puede resultar un poco shocking para los usuarios tradicionales de este blog, pero también sabemos que ellos nos leen principalmente en el Feed RSS y decidimos dar una imagen mas “alegre” para aquellos nuevos visitantes que caen por medio de google.

Otra cosa que queríamos hacer hace mucho es redondear todas las esquinas. ¡Ahora cada bloque tiene esquinas redondeadas!. También, como sabemos que el contenido es el rey, decidimos dejar de apoyarnos en ridiculeces como la manita del link haciendo los cuernitos rocanroleros y los bullets en forma de alien de space invaders. Nuestro contenido se mantiene por si mismo, asi que no necesitamos esas distracciones.

Y ya, en un tema ligeramente relacionado, estamos a unas semanas de cambiar wordpress por un administrador en .net que está desarrollando César en su tiempo libre. Por ahora estaremos actualizando el blog desde Windows Live Writer para irnos despegando un poco de wordpress.

Un saludo, y esperamos sus comentarios y críticas constructivas :)

Everlasting Flame 1.1 disponible

Cesar February 4th, 2009 Uncategorized 11 comentarios

Everlasting Flame icon

El mejor (único?) auto-hangup para BlackBerry, Everlasting Flame, ha sido actualizado a su versión 1.1. ¿Qué mejoras incluye? Veamos la extensa lista:

  • Agrega la posibilidad de configurar los límites soft y hard por medio de la interfaz gráfica.
  • Modificaciones en el PhoneListener para mejor manejo de los límites soft y hard.

Phew!!! me cansé de escribirlas.

La aplicación se encuentra ya disponible en el repositorio SVN del proyecto, mientras que los binarios aún están pendientes. Visita el sitio Web del proyecto para mantenerte informado sobre la fecha del lanzamiento de los binarios.

Como siempre, gracias a todos los que han colaborado con el proyecto. Visiten la sección de Contribuye para saber como puedes ayudar.

Programando para la BlackBerry – Everlasting Flame II

Cesar December 30th, 2008 Uncategorized 8 comentarios

Ver primera y segunda parte.

Everlasting Flame icon

Continuamos con el desarrollo de esta aplicación. Ya en la parte dos vimos cómo programar la funcionalidad básica: monitorear el tiempo de las llamadas y reaccionar de acuerdo a los límites establecidos (denominados soft y hard limit). Ahora sigue el turno de guardar a la memoria algunas de las opciones establecidas por el usuario y crear una interfaz gráfica para la configuración.

Como vimos, Everlasting Flame es una aplicación con la que el usuario no interactúa directamente y es por esto que no contiene una interfaz gráfica. La aplicación se ejecuta automáticamente cuando el teléfono inicia, de tal modo que al marcar un número comienza a contar el tiempo. Sin embargo es conveniente tener una interfaz de configuración donde podamos establecer los límites, así como también habilitar y deshabilitar el monitoreo de llamadas (por si queremos hacer una llamada más larga de lo normal sin que se corte).

Para este propósito se crea lo que se llama un punto de entrada alternativo, que como su nombre lo indica, servirá como punto de entrada a la aplicación ejecutando una serie de pasos distintos a los “normales”. En nuestro caso el punto de entrada normal es el que no tiene interfaz gráfica y el alternativo es iniciar la interfaz gráfica para configurar la aplicación. Lo primero es configurar el proyecto como aplicación del sistema (es decir, que no muestra interfaz gráfica) y que sea auto ejecutable. Esto se hace desde Eclipse modificando las propiedades del proyecto. Después creamos un proyecto nuevo vacío y en las propiedades lo configuramos como punto de entrada alternativo al proyecto original, pasando como parámetro alguna cadena de identificación (en mi caso, “init”).

De esta manera, cuando el usuario seleccione el icono de nuestra aplicación desde la BlackBerry, nuestra aplicación recibirá como argumento la cadena “init” y eso nos servirá como señal para iniciar la interfaz gráfica. Si la aplicación es iniciada automáticamente, no recibiremos la cadena “init” e iniciaremos la aplicación como antes. Modificamos EverlastingFlame.java de esta manera:


public static void main(String[] args) {
System.out.println("On Endless main");
boolean startup = false;

for(int i=0; i < args.length; i++){
if(args[i].equals("init")){
startup = true;
}
}

if(startup){
System.out.println("Called from regular entry point, display the GUI.");
MainGUI gui = new MainGUI();
gui.enterEventDispatcher();
}else{
System.out.println("Called from alternate entry point, start the EverlastingFlame.");
EverlastingFlame ef = new EverlastingFlame();
ef.enterEventDispatcher();
}
}

Como vemos en el código, si recibimos la cadena "init" creamos una nueva instancia de MainGUI y ejecutamos su event dispatcher para que el sistema despliegue la pantalla. El código de MainGUI.java se muestra a continuación:


public class MainGUI extends UiApplication{
private MainScreen mainScreen;

public MainGUI(){
mainScreen = new EverlastingFlameScreen();
LabelField label = new LabelField("Everlasting Flame Configuration", LabelField.ELLIPSIS
| LabelField.USE_ALL_WIDTH);
mainScreen.setTitle(label);
pushScreen(mainScreen);
}
}

Esta clase extiende a UiApplication porque precisamente es una aplicación con interfaz gráfica. Contiene una MainScreen con el título de "Everlasting Flame Configuration". Por último empujamos la pantalla para que sea mostrada en el teléfono. La MainScreen es realmente una instancia de EverlastingFlameScreen, una clase que hereda de MainScreen e implementa la interfaz gráfica y los eventos que nos interesan:


public class EverlastingFlameScreen extends MainScreen{
private CheckboxField chkActive;

public EverlastingFlameScreen(){
super();

chkActive = new CheckboxField("Start monitoring service?",Options.getActive());
add(chkActive);
}

protected boolean onSavePrompt(){
if(isDirty()){
int option = Dialog.ask(Dialog.D_SAVE,
"Do you want to save changes?");
if(option == Dialog.SAVE){
onSave();
boolean chkState = chkActive.getChecked();
Options.setActive(chkState);
if(Options.getActive()){
Dialog.inform("Calls will be monitored, Mujajaja!");
}else{
Dialog.inform("Calls are no longer monitored.");
}
}else{
chkActive.setChecked(Options.getActive());
return false;
}
}
return true;
}
}

Para efectos de este ejemplo, la pantalla se compone solamente de un checkbox que sirve para habilitar o deshabilitar el servicio de monitoreo. Si este checkbox se encuentra activo, Everlasting Flame monitorea las llamadas, inyectando el tono DTMF y colgando cuando es necesario. De más está decir que si se encuentra desactivado, las llamadas transcurren normales. En el constructor se crea el checkbox en cuestión y se le pasa una cadena que será su etiqueta, así como también el estado inicial del checkbox (seleccionado o no seleccionado).

El estado inicial se obtiene de las opciones del usuario, gracias a una clase Options que nos sirve para guardar las preferencias del usuario en memoria no volátil (más de esto en la siguiente entrega de esta serie de posts). La magia ocurre en el método onSavePrompt. Este método se ejecuta cuando el sistema cree que hubo algún cambio que debe ser guardado. Nosotros sobreescribimos el método y agregamos una pequeña validación.

Cuando el sistema ejecuta onSavePrompt, verificamos el estado de la pantalla. isDirty nos indica que hubo cambios y por lo tanto hay que preguntar al usuario (por medio del método estático ask de la clase Dialog) si desea guardar. En caso de si desear guardar, verificamos si el usuario activó o desactivó el servicio y por último informamos al usuario que sus cambios han sido aplicados.

Queda solamente modificar el PhoneListener para tomar en cuenta el estado del servicio (activado o desactivado). Esto es muy sencillo utilizando la clase Options que se verá más adelante:


if(Options.getActive()){
if(callTimeSeconds == softLimit){
System.out.println("Soft limit reached");
injectDTMFTone(Phone.getActiveCall());
}else if(callTimeSeconds == hardLimit){
System.out.println("Hard limit reached, hanging up!");
injectEndCall();
}
}else{
System.out.println("Service not active");
}

Si el servicio se encuentra activo, realiza las mismas validaciones anteriores. En caso de encontrarse inactivo, simplemente no hace nada.

Lo que queda es explicar la clase Options y por supuesto agregar mayor funcionalidad a la interfaz gráfica, como por ejemplo la configuración de los límites, la acción a realizar en cada uno de ellos y cambiar el funcionamiento entre modo "naco" (funcione para todos los números) y modo "VIP" (sólo para números seleccionados).

Posts anteriores