Geek & Roll » Uncategorized

Sony no quiere tu dinero

Cesar May 29th, 2010 Uncategorized 6 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 Haz un 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).

10 placeres culposos geek

Cesar December 29th, 2008 Uncategorized 3 comentarios

Tratando de robar un poco del spotlight en el que se encuentran mis amigos de 10puntos.info, les comparto una lista de 10 placeres culposos geek compilada por mi en orden de relevancia ascendente y numeración inversa:

  1. Aprender diálogos de tu película favorita, y repetirlos a cada rato. No vasta con contarle al mundo el numero de 6 cifras que suman las veces que haz visto The Lord of the Rings (la trilogia completa y de una sentada, porque según tu, no existe otra manera de verlas), o tratar de impartir lecciones de vida con lo “aprendido” en The Fight Club. Por si fuera poco, te aprendes los diálogos y los repites en todas y cada una de las ocasiones que crees relevante además de, claro está, cuando estas viendo la película y es el turno de la escena en cuestión.
  2. Japón. Ya sea por querer aprender Japones, pregonar a los cuatro vientos tu fascinación con la mujer Japonesa (o con la imagen que tu crees que es representativa de la mujer Japonesa) o simplemente tu amor por las artes marciales de dicho país, parece ser como si todo lo proveniente del Japón ocasionara un click en tu mente que hace que te agrade y lo quieras.
  3. Escribir un blog. Porque seguramente a todo el mundo le interesa lo que tu haces. El momentum decrece cuando te das cuenta de los otros millones de individuos que también tienen tus grandes ideas, solo que antes que tu, además de ser más jóvenes, han logrado más cosas que tu a su edad y a la tuya además de que ellos sí aprendieron Japones.
  4. Diseñar camisetas graciosas (Tees). Todo geek tiene excelentes ideas para camisetas y pondría su propia tienda de camisetas por Internet, si tan sólo tuviera el tiempo (es que las más de 70 horas y contando de Final Fantasy XII no lo dejan).
  5. Leer feeds. Todo empezó con la necesidad organizar y tener a la mano las grandes cantidades de información regada por muchos sitios que visitamos frecuentemente. Se introdujeron los feeds RSS y todo fue perfecto… hasta que la desorganización empezó dentro de nuestros propios feeds. Sabes que eres adicto a esto cuando pasas de 1000+ en el Reader a 17 en menos de 30 minutos, y la mayoría de las veces tan solo lees unos cuantos, luego solo los títulos, y luego simplemente presionas Mark all as read.
  6. Defender la piratería. Lo llamas de mil maneras, menos piratería (porque piratería es atacar barcos mercantes, y eso es muy malo). Defiendes el hecho de que te bajas la discografía completa de Topo Gigio porque los cerdos avariciosos de la iTunes Store la ofrecen con ese asqueroso DRM. Al final, lo único que quieres es no pagar por la música y terminas comprando reproductores que alimentan a la máquina del DRM (como iPods, iPhones, Zunes).
  7. Comprar nuevos gadgets. Necesito un iPod con mas capacidad. Necesito una tabla Wacom. Necesito un celular nuevo. Necesito, Necesito, Necesito. No necesitas nada de eso, más bien lo deseas con todas tus entrañas sobrealimentadas de pizza y coca cola.
  8. Internet en la casa. Después de todo el día laboral en la computadora y conectado a Internet, llegas a tu casa… a estar en la computadora y usar Internet por supuesto.
  9. Twitter. Por algo se le hace tan estúpido a la mayoría de la gente, ¿O es que la mayoría son estúpidos?
  10. Apple. Todos los productos de Apple son un enorme placer culposo, y punto.

Retrospectiva, mi 2008 in a nutshell

Cesar December 22nd, 2008 Uncategorized 3 comentarios

Cuando iniciamos este blog no teníamos muy clara la idea de lo que sería, en que se convertiría o de que se trataría. Todo inició con un: “Hey, nuestros blogs se parecen. ¿Porque no escribimos en uno solo?”. Mi respuesta a Axel (el de la idea y el de la fotito de abajo con la greña alborotada) fue “¡Buena idea!” aunque mentalmente fue “Hmm… no, así estoy bien”. La buena noticia es que me equivoqué, juntos los dos – y ahora tres – logramos hacer algo que por separado no lograría capturar el feeling geek de los tres. Por si no se han dado cuenta, cada uno de los tres inyecta un lado de la geekes general de Geek&Roll. La mala noticia es que perdí mi blog personal.

Las razones para cerrar mi blog personal fueron varias y no todas tuvieron que ver directamente con el compromiso de Geek&Roll. Aun así, la mayoría de los temas tratados en mi blog personal comenzaron a aparecer en forma de posts de un servidor aquí, pero obviamente los temas más personales se fueron directo a /dev/null (algo como la papelera de reciclaje pero sin la opción de recuperar lo ahí depositado). Desde entonces los temas personales que decido hacer públicos en la red se desbaratan entre Tweets, posts, Facebook, Picasa, conversaciones de IM y no se que tantas cosas más.

La larga introducción es para justificar el siguiente post 100% personal. Para mi, el 2008 fue un año de evolución más que de cambio. Evolución que me trajo experiencias que difícilmente voy a dejar de recordar en los años venideros. En el 2008 viví algunos de los momentos más memorables de mi vida hasta la fecha, algunos públicos como la despedida completamente impromptu de todos mis amigos y compañeros de maestría, otros privados de los que por obvias razones no daré ejemplo. Días con tintes de despedida de grandes amigos, amigas y otros personajes, así como también emocionantes bienvenidas de personajes mucho tiempo atrás olvidados.

El 2009 se perfila como la culminación a manera de cambio del largo hilo evolutivo del 2008. Quiero terminar con un simple gracias a todas las personas con las que tuve el privilegio de compartir este 2008. Gracias a mis amigos de Geek&Roll, el staff, los visitantes elite que siempre vuelven sin importar de las desviaciones en la calidad y la frecuencia de posteo que solemos tener, a todos los lectores que hacen comentarios o los anónimos. Gracias a Rafyta por siempre echarme la mano con la cosa de las imágenes y esas cosas de diseño de las que no entiendo nada y por ende son Del Diablo™. Gracias a las personas que me han permitido invertir en lo único que me va a quedar si llego a viejo: los recuerdos de una vida plena.

Gracias, y que venga el 2009.

Calculadora de tamaño del bra en JavaScript

Cesar November 28th, 2008 Uncategorized 2 comentarios

Y el post light por fin de semana…

Olvídense del Hello World! o los clientes de Twitter, la calculadora de tamaño de bra es la nueva tendencia en programación. Como su autor lo indica, calcular el tamaño del bra es una tarea arcana, casi mágica, y dominarla no es fácil para los hombres. Para salvarte del dolor y tormento de tener que estimar el tamaño de algún bra, se hizo esta herramienta:


var BraCalculator = {
unknownString: "Unknown",

cupSizes: ["A", "B", "C", "D", "DD", "E", "EE", "F", "FF", "G", "GG", "H", "HH","J", "JJ", "K", "KK", "L", "LL", "M", "MM", "N", "NN"],

calculateSize: function(underBust, overBust) {
var bandSize = this.calculateBandSize(underBust);
var cupSize = this.calculateCupSize(bandSize, overBust);

if (bandSize && cupSize) {
return bandSize + cupSize;
} else {
return this.unknownString;
};
},

calculateBandSize: function(underBust) {
var underBust = parseInt(underBust, 10);
return underBust + (underBust % 2) + 2;
},

calculateCupSize: function(bandSize, overBust) {
var bandSize = parseInt(bandSize, 10);
var overBust = parseInt(overBust, 10);
var diff = overBust - bandSize;

var result = this.cupSizes;

//return false if we couldn't lookup a cup size
return result ? result : false;
}
};

Lo que hace es calcular el tamaño de copa y de banda de acuerdo al tamaño del busto (en pulgadas) pero no es difícil cambiarlo al sistema métrico decimal, estoy seguro que algún hacker estaría dispuesto a hacerlo y depurarlo ;) Dada ciertas medidas de entrada, el formato de la salida es, por ejemplo “32B”.

Liga a la aplicación: JavaScript bra size calculator.

Posts anteriores