Los placeres de ser programador

17 October 2009 Categories: bambooapps, blog, software

Ser programador es una inagotable fuente de alegrías, más cuando eres una orquesta de un único hombre. Cuando no falla tu código, falla el servidor, cuando no es la pasarela de pago, si no es que se te ha caído el servidor de correo y no se envían los números de serie.

Eso sin olvidar que a veces las actualizaciones del sistema cambian el comportamiento de algunas APIs, obviamente sin documentarlo, que a veces, sin saber por qué, lo que acabas de compilar sin errores hace dos minutos decide no compilar hasta dentro de un par de horas, también si saber por qué… en fin, que el asunto es una fuente inagotable de alegrías.

Un ejemplo de estas tonterías que pasan a veces, es el siguiente que paso a narrar.

Ayer publiqué Quiet Read, una aplicación de esas a las que casi puedes mandar a la compra de lo bien hechas que están. Pero a lo que iba: se supone que se deben arrastrar links desde el navegador al icono de la aplicación en la menu bar. En ese momento, la aplicación intenta adivinar si lo que se está arrastrando sobre ella es un link o no, para aceptar o rechazar el drop.

El asunto no tiene mucha complicación: en el momento en el que se recibe la referencia a un pasteboard se extrae el primero de sus contenidos:

NSPasteboardItem *item = [ [ pb pasteboardItems ] objectAtIndex: 0 ];

Cuando el link viene de Safari, que es mi navegador por defecto, y por tanto, el único en el que probé la aplicación (mea culpa, lo sé, hay que probar en todas las configuraciones posibles), si se inspecciona el contenido de ese item:

NSLog( @"types %@", [ item types ] );

Se obtiene lo siguiente:

types (
    "dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu",
    "dyn.ah62d4rv4gu8ye55trr00c6xpkvy0g7dmr71gc6x3mvy1g7cuqm10c6xenv61a3k",
    "dyn.ah62d4rv4gu8ye55trr00c6xpnr4gc7dmsr4gw25xnbbg82pwqvnhw6df",
    "dyn.ah62d4rv4gu8zs3pcnzme2641rf4guzdmsv0gn64uqm10c6xenv61a3k",
    "public.url",
    "dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu",
    "public.utf8-plain-text",
    "public.url-name",
    "com.apple.pasteboard.promised-file-content-type",
    "com.apple.pasteboard.promised-file-url",
    "dyn.ah62d4rv4gu8y6y4usm1044pxqzb085xyqz1hk64uqm10c6xenv61a3k"
)

Premio para los ingenieros de Apple. Lo que se arrastra desde Safari empaqueta un par de propiedades bastante interesantes: la url y el título de la página.

De ahí, es fácil extraer esos valores:

title = [[NSString alloc] initWithData: [ item dataForType: @"public.url-name" ] encoding:NSUTF8StringEncoding];
url = [[NSString alloc] initWithData: [ item dataForType: @"public.url" ] encoding:NSUTF8StringEncoding];

Dicho de otra forma: lo que se pasa desde Safari está bien empaquetado, de forma lógica, autodescriptiva, ordenada. Lo que nos gusta a los aprietateclas.

Pero, una vez lanzada la aplicación llega el primer email diciendo “oye, ¿esto funciona en Firefox?” Y claro, aquí viene lo bueno.

Porque ¿qué es lo que expone Firefox al arrastrar un link? Pues nada de nada:

types (
    "public.utf8-plain-text",
    "dyn.ah62d4rv4gu8y4554rf0g22n1rf0gk25bsmwa"
)

Simplemente, lo mismo que si se estuviera arrastrando un texto normal y corriente. Estupendo, el código que comprobaba que lo que se estuviera arrastrando fuera una url estaba basado en la existencia de las propiedades public.url y public.url-name, y rechazaba lo que sólo fuera public.utf8-plain-text. O, dicho de otra forma, bofetón en el lado que más duele.

¿La moraleja? La que ya deberíamos sabernos todos de siempre: que hay que probar en todas las configuraciones, y que cosas como los test units tienen una validez limitada, porque siempre hay que tener en cuenta que trabajamos sobre APIs desarrolladas por otros que pueden ser tan paquetes como nosotros.

Read the full article 0 Comments

Las cosas de palacio, desde luego, van despacio

16 October 2009 Categories: bambooapps, blog, software

Por fin, Apple permite que las aplicaciones para iPhone gratuitas implementen la api “In App Purchase”.

Para los que no sepan si lo anterior es motivo de júbilo, o una razón para correr a buscar refugio, vamos a explicar qué significa.

El método de distribución habitual para el software de escritorio en Mac es el de “trialware”. Tú te bajas una aplicación, normalmente sin limitación en las funcionalidades, pero que sólo puedes utilizar sin pagar la licencia durante un tiempo limitado. Es decir, la pruebas, si te gusta, te conviene, te resuelve un problema, o te sobra el dinero, la compras, y si ninguna de las premisas anteriores es cierta, la tiras a la papelera y punto.

Bueno, pues eso no se puede hacer en el iPhone. Las compras son a ciegas, sin poder probar las aplicaciones antes, y se deben hacer guiándose solamente de un par de capturas de pantalla y de lo que el desarrollador diga que la aplicación hace.

Los aprietateclas hemos ido soslayando ese problema de dos formas distintas: una, bajando precios, para hacer menos dolorosa la decisión de compra (no es lo mismo equivocarse al gastar 10 euros que al gastar uno) y dos, lanzando versiones “lite”, muy limitadas en funcionalidad y gratuitas, que se supone que podrían arrastrar hacia ventas de la versión completa.

En ambos casos, soluciones que no son tales.

Obviamente, tal y como están las cosas en la App Store a día de ayer, es prácticamente imposible mantener un “negocio” mínimamente rentable desarrollando para iPhone. Y eso, siendo un ejército de una persona, si se quiere montar una factoría de desarrollo como dios manda, la cosa pasa ya a la categoría de milagro. Como ejemplo, el dueño de una empresa de desarrollo de microjuegos de Hong Kong me decía un día que necesitan un juego en el top-ten cada tres meses para conseguir mantenerse a flote.

Es evidente que, a un dólar por copia, no se puede llegar a ninguna parte. Es evidente también que la única forma de poder dedicar tiempo y esfuerzo al desarrollo para iPhone es hacer que los precios suban, y bastante. Para lo cual, es evidente también que hay que desarrollar aplicaciones “con chicha”, que vayan más allá de dos listados de datos, y que sean de una complejidad equivalente a las de escritorio.

Y la verdad, el poder ofrecerlas como “trialware” debería ayudar. Aún no veo muy claro si merece la pena meterse en un desarrollo de dos meses para iPhone, pero empiezo a pensar que tal vez sea el momento de desempolvar un par de ideas que estaban guardadas en un cajón a la espera de tiempos mejores.

Read the full article 0 Comments

Firmando aplicaciones en XCode

15 October 2009 Categories: bambooapps, blog

Post para iniciados, o para los más tarados, según a quien se pregunte.

Firmar aplicaciones de escritorio tiene varias ventajas, tanto para el desarrollador como para el usuario, y no es algo particularmente complicado de hacer. En el developer connection lo explican con bastante detalle, así que me ahorro aburrir con eso.

Lo que sí que puede tener su interés es incluir el firmado en el proceso de compilado final de la aplicación para su distribución. Dicho de otra forma, que lo haga XCode en vez de hacerlo yo.

Es fácil:

  1. Se añade una nueva fase al proceso de build: por ejemplo, haciendo click derecho sobre el target en cuestión, y seleccionado Add-> New Build Phase-> New Run Script Build Phase
  2. Se pega el siguiente script, con cuidado de cambiar “bambooapps desktop distribution” por el nombre de la entrada en el Llavero:

    if [[ ${CONFIGURATION} == "Release" ]]
    then
    codesign -f -s “bambooapps desktop distribution” “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/”
    fi
  3. Iba a escribir “no hay número tres”, pero el chiste está muy visto.
Read the full article 0 Comments

La demografía de los usuarios de Keep Your Word

23 September 2009 Categories: bambooapps, blog, software

Como Keep Your Word ya tiene un poquitín más de un año, es buen momento para repasar algunos datos relacionados con la aplicación. Por si acaso, me permito recordar que Keep Your Word es una aplicación primordialmente dirigida a estudiantes de idiomas.

Nótese también que Keep Your Word no está localizada, sólo está disponible en inglés.

Comencemos con el país de origen de los usuarios, comparando los datos disponibles con algunos de los clichés habituales.

Según la RAE, cliché significa:
Lugar común, idea o expresión demasiado repetida o formularia.

¿Y cuáles son los clichés relacionados con la venta de software, y en concreto de software para Mac?

  • El mayor mercado es el de EEUU. A continuación, en una segunda capa, están Reino Unido, Francia, Alemania y Japón
  • Los japoneses sólo compran software localizado en Japonés
  • Los chinos no compran software
  • Los españoles prefieren obtener sus aplicaciones a través de “canales de distribución alternativos”, y tampoco son muy proclives a comprar aplicaciones no localizadas en castellano

Bien, pues sin más dilación, aquí está el gráfico con la distribución de usuarios de Keep Your Word por países:

countries.png

Un momento, por favor. Antes de comenzar a mirar los números, me gustaría contar una batallita.

Mi EE (Encantadora Esposa, inteligente referencia cinéfila) es profesora de español como lengua extranjera. Dato aparentemente trivial, pero relevante para esta discusión, ya que la susodicha sostiene que los anglo-parlantes no están interesados en aprender un segundo idioma. ¿Para qué iban a estarlo? Después de todo dominan la lingua franca.

Sin embargo, hay una excepción a la regla; los residentes en USA. ¿Por qué? Pues se barruntan múltiples razones: procedencias étnicas no anglosajonas, contacto directo y diario con otras lenguas…

También, según EE, los alemanes están muy dispuestos a aprender una segunda (o tercera lengua). Puede ser porque fuera de Alemania-Austria no se hable alemán, porque desde muy pequeños comienzan a estudiar inglés, o por algún tipo de propensión genética, vaya Vd a saber.

Bien, pues ahora sí, vamos con los datos. La distribución por países es:

  • USA: 32%
  • Alemania: 11%
  • Francia: 8%
  • Holanda: 5%
  • Suiza: 5%
  • España: 4%
  • Italia: 3%
  • Reino Unido: 3%
  • Austria: 2%
  • Canada: 2%
  • Otros: 22%

La primera conclusión es que el porcentaje de usuarios de los USA es alto, pero menos de lo esperado. “Lo esperado”, por cierto, era alrededor del 50%.

Seguimos repasando los tópicos. Reino Unido, que debería ser el segundo mercado, se va al 2%. Mientras, Alemania es el segundo país, con un 11% de usuarios. Se cumple lo esperado, los ingleses miran a otro lado, mientras que los alemanes, muy aplicaditos ellos, se dejan los dineros en intentar aprender idiomas.

En tercer lugar está Francia, donde Keep Your Word ha tenido bastante buenas reviews y ha aparecido en varias revistas (de las que requieren matar árboles y que se compran en el quiosko).

Nótese también cómo Holanda y especialmente Suiza (país franco-germano parlante de algo menos de ocho millones de habitantes) se colocan por delante de España.

España, pese a estar sólo en el 4% de usuarios registrados, encabeza de forma destacada (aunque aquí no hay datos numéricos) las solicitudes de soporte por parte de usuarios no registrados. Y lo dejamos ahí.

Los porcentajes significativos los cierra Canadá, con un 2% de usuarios. En otros, se incluye una larga lista de países (desde Tailandia a Chile) de entre los que me gustaría reseñar una serie de “curiosidades”.

En Australia y Nueva Zelanda se han vendido, respectivamente, un total de ¡una licencia!

En Japón las cosas van mejor, pero por los nombres de los usuarios puede deducirse que son todos extranjeros viviendo allí, y que utilizan la aplicación para aprender japonés. El tópico de la localización, por tanto, parece seguirse al pie de la letra.

En toda latinoamérica sólo hay una licencia (en Chile, concretamente) y, como cabía esperar, en China se ha vendido la increíble cantidad de cero (0) licencias.

En Tailandia hay más usuarios de Keep Your Word que en toda europa del este (Rusia y países bálticos incluidos). Por cierto, el administrador del sitio que primero publica todas las actualizaciones de Keep Your Word por bittorrent tuvo el detalle de comprar un “family pack” (y hacerme saber quién era).

En Korea hay más usuarios que en Australia, Nueva Zelanda, Japón y Hong Kong juntos, y sí, en Hong Kong hay varias copias registradas.

Conclusiones

Lo primero que convendría analizar es hasta qué punto estas cifras están condicionadas por la falta de localizaciones. Puede suponerse que mucha gente utilice la aplicación para aprender inglés, por lo que el hecho de que sólo esté localizada en ese idioma puede ser un problema.

No obstante, sí que parecen confirmar algunos de los tópicos de los que se partían: bajo interés por aprender idiomas de los anglo-parlantes, al contrario que los germano-parlantes, nulo interés de los japoneses por el software que no está en su idioma, el caso de China…

Pero lo mejor lo dejamos para otro día. Y es que Keep Your Word Reader, el cliente para iPhone, es gratis. Seguro que ya lo están viendo venir, pero ¿alguien se atreve a adivinar qué país multiplica por 3 su número de usuarios? Exacto, España.

Read the full article 0 Comments