Wednesday 7 December 2016

Simfinger Binary Options

How-To Geek How-To Geek Si usted es un ávido programador de Mac utilizando una máquina Windows, o si encuentra un archivo DMG en su máquina Windows, puede ser útil saber qué es y cómo abrirlo. ¿Qué son los archivos DMG? Muchas personas asumen que si los archivos aparecen como archivos desconocidos son virus o archivos maliciosos, pero no es así. Los archivos DMG son archivos de imagen de disco de Mac OSX. Son esencialmente imágenes de disco como archivos ISO, su contrapartida basada en Windows. Estas imágenes de disco normalmente contienen archivos de instalación de programas para aplicaciones de Apple, pero también pueden utilizarse para almacenar archivos comprimidos. Dado que son archivos de instalación de Mac, no puede instalar estos programas en Windows. Necesitará descargar la versión de Windows del programa con la extensión EXE. Sin embargo, puede ser útil entrar en archivos DMG para acceder a los archivos que contienen. Cómo abrir archivos DMG en Windows con 7-Zip y DMG Extractor Hay muchas herramientas diferentes que puede utilizar para extraer archivos DMG en Windows, sin embargo, las dos herramientas más confiables que usaremos hoy son 7-Zip y DMG Extractor. Ambos programas son gratuitos para descargar y usar, sin embargo, si necesita una herramienta de edición DMG más potente, puede obtener la versión de DMG Extractor. 7-Zip es una potente herramienta de compresión que se distribuye libremente a los usuarios. Su archivo de instalación está completamente libre de bloat y crapware. Si no tiene instalado el 7-zip en su computadora, puede descargarlo de Ninite e instalarlo en su máquina. Una vez que haya instalado el programa, simplemente navegue hasta el archivo DMG en su disco duro y haga clic con el botón derecho en él, luego seleccione 7-zip y elija la opción Extraer aquí. El programa comenzará la extracción que irá tan rápido como su computadora pueda manejar. Cuando haya terminado, verá todos los archivos contenidos en el archivo DMG en la ventana del explorador donde se encuentra el archivo DMG original. Ahora puede sentirse libre de editar o ver los archivos. DMG extractor ofrece una versión gratuita que es ideal para descomprimir archivos DMG, pero si su archivo es más grande que 4 GB, necesitará la versión profesional. La versión de pago también ofrece capacidades de extracción de archivos DMG encriptadas. Una vez que hayas descargado la versión gratuita del programa y lo hayas instalado, el proceso de extracción de DMG es muy fácil. Simplemente haga doble clic en el archivo DMG y espere a que DMG Extractor comience. Verá todos los archivos en la ventana. A continuación, puede elegir extraer los archivos seleccionando el botón Extraer o arrastrando los archivos de la ventana DMG a cualquier carpeta de su computadora. Seleccione la primera opción de extracción para extraer todos los archivos a la carpeta donde se encuentra el archivo DMG original. Recuerde que la versión gratuita sólo le permitirá extraer 5 archivos a la vez, por lo que puede que tenga que seleccionar cinco archivos a la vez para extraer. Wrapping Up Eso es esencialmente todo lo que necesita saber cuando se trata de extraer el contenido de los archivos DMG a su PC con Windows. Si no desea descargar estos programas, también es posible seguir nuestra guía sobre cómo convertir archivos DMG a ISOs que puede abrir con programas como Daemon Tools o Magic ISO. Capítulo 8. Construyendo su Marketing Crescendo Un área donde el La mayoría de los desarrolladores fallan o no están comercializando su aplicación o creen que la comercialización no empieza hasta que una aplicación sea aprobada para la App Store. De muchas maneras, la realidad es que obtener su aplicación aprobada por Apple debe ser un clímax de sus esfuerzos de marketing. Para ser más que otro desarrollador en la App Store, vas a tener que aceptar la idea de que el marketing evoluciona junto con el desarrollo de tu aplicación. En este capítulo, explorará: Las cinco fases de su crescendo de marketing. Desarrollando sus canales de comunicación de aplicaciones (Fases 13) Cómo encontrar y participar con éxito a bloggers y puntos de prensa (Fase 4) Mentalidad de Marketing Esperemos que haya estado prestando atención y haya llegado aquí desde el Capítulo 1 o Capítulo 3 y no desde el capítulo anterior. Coloqué este tema cerca del final del libro porque sus actividades relacionadas con el marketing alcanzarán uno de sus primeros picos cuando su aplicación finalmente se lance, pero esto sólo ocurrirá si comenzó sus esfuerzos de marketing al inicio de su proceso de desarrollo. El proceso es un concepto crítico, y su justo aplicarlo también a cómo se acercará a la comercialización. Esto implica que la comercialización no se trata de una o dos acciones mágicas que de alguna manera disparar su aplicación a la parte superior de las tablas de la App Store. En su lugar, es una inversión en curso que paralelo al desarrollo como la construcción de su aplicación, el marketing incorpora a sus clientes. Aunque puedo estar generalizando, mi instinto es que la mayoría de ustedes no tienen acceso a un motor de marketing masivo que participará cuando se lance su aplicación. Incluso si lo haces, confiar en que el motor a simplemente su aplicación para tener éxito es nave y tonto. Como se mencionó por primera vez en el capítulo 2. pocas empresas pueden construir productos (no sólo aplicaciones) sin la participación de los clientes y no afrontar consecuencias negativas. El riesgo de una falla de aplicación ya es alto para los desarrolladores que no incorporan clientes en el proceso de desarrollo. Ese riesgo puede ser aumentado, sin embargo, al no incluir a los clientes y, a continuación, seguir una gran campaña de marketing una vez que una aplicación es aprobada. La App Store contiene ejemplos de aplicaciones altamente pulidas que fueron creadas por desarrolladores talentosos y trabajadores, pero que en última instancia, floundered. Las razones fueron simples: los desarrolladores no validar sus ideas con sus clientes y procedieron con importantes lanzamientos de marketing. Al no involucrar a los clientes a principios del proceso y luego confiar en sus marcas y contactos de alto perfil para tener éxito, en última instancia, perdió una cantidad significativa de tiempo y dinero. Si está trabajando dentro de una organización más grande que tiene un departamento de marketing, todavía le animo a revisar este material. Debe compartir las ideas de este capítulo con sus colegas y trabajar con ellas para mantener el desarrollo de aplicaciones y el marketing sincronizados. Obviamente, la atención de su aplicación es una buena cosa. De hecho, su objetivo será ver una ráfaga de emoción cuando su aplicación finalmente se apruebe. La diferencia es que el núcleo de la emoción de su aplicación siempre debe ser generado por los clientes. Incluso si su aplicación es revisada por los bloggers y los medios de comunicación más tradicionales, el rumor de esos sitios finalmente disminuirá y es más probable que se vuelvan inexistentes. Los clientes que están entusiasmados, comprometidos y apasionados acerca de su appbecause de su influencia en el desarrollo de itwill ser los que siguen para ayudar a promover bien después de que los medios de comunicación se hace con sus cucharadas. La mejor nueva forma de mercado. Doesnt Exist Theres no hay escasez de personas que reclaman nuevas y mejores formas de comercialización. Un puñado de modas en la última década, en ningún orden en particular, incluyen marketing de medios sociales, marketing boca a boca, comunicaciones de marketing integradas (digamos que tres veces rápido), marketing en buscadores, marketing de guerrilla, marketing como narrativa y correo electrónico márketing. Ill asumir por el momento que aquellos que promueven estas ideas en realidad creen en ellos y no están simplemente tratando de beneficiarse de la comercialización sabor del mes. Operando bajo esa suposición, lo que es evidente es que los profesionales siguen buscando nuevos métodos de comercialización porque en algún momento la comercialización comienza a perder su eficacia. Considere, por ejemplo, la cantidad de dinero que ha pasado de los periódicos impresos, la radio y la televisión a los medios en línea, como el marketing en buscadores. No voy a darle los números específicos, pero como ejemplo, piense en todas las historias que ha oído acerca de los periódicos que han cerrado, se movió en línea, o recortar a los programas de publicación semanal en los últimos dos o tres años. El punto es que en este 24/7, siempre en el mundo, los consumidores se están adaptando más rápidamente y por lo tanto ignorando las innovaciones de marketing nuevas y existentes. En pocas palabras, los consumidores no quieren ser comercializados a (¿usted). Ellos no tienen el tiempo o la energía para ser molestado con la comercialización. Especialmente desinteresante, aburrido, o molesto de comercialización. Ahora que usted tiene ese contexto, Im que no va a ensamblar en la sopa de la comercialización y bosquejar una nueva teoría o filosofía de la comercialización para usted. Im ni siquiera va a sugerir que la comercialización de su aplicación es excepcionalmente diferente de la comercialización de otros tipos de nuevos productos. En su lugar, voy a centrarse en un proceso de marketing extremadamente táctico que está probado en la App Store y más allá. Como de costumbre, comienza y termina centrándose en sus clientes. Cómo utilizar este capítulo Este capítulo es único en que lo hago referencia a lo largo del libro. Dependiendo de dónde se encuentre en el proceso de desarrollo, continuará revisando este capítulo basándose en mi orientación y realizando esfuerzos de marketing al mismo tiempo que se está creando su aplicación. Realmente quiero animarle a no pensar en las tareas de desarrollo y marketing como distintas. La creación de una aplicación que se basa en la entrada de los clientes hará que la aplicación de marketing sea mucho más fácil. Por el contrario, la comercialización de su aplicación de la forma en que se establece en este capítulo le dará una idea de cómo hacer que su aplicación mejor. A lo largo del libro, le dirigiré específicamente a las fases individuales del proceso de marketing que se describen en este capítulo. Sin embargo, le recomiendo que revise el resto del capítulo para estar completamente familiarizado con todos los elementos involucrados en este proceso. Su crecimiento de la comercialización Es hora de que usted consiga musical. De acuerdo, en realidad no. Pero quiero que se agarre a la idea de que sus esfuerzos de marketing debe ser un crescendo. Crescendo es un término utilizado en la música que indica un aumento gradual en el sonido y la intensidad de la música comienza suave y, a continuación, lenta pero seguramente obtiene significativamente más fuerte. El enfoque que siga para su comercialización será similar. Usted no quiere comenzar su comercialización con una explosión grande (o la gente funcionará lejos) más bien, usted quisiera que fuera el pico conjuntamente con su progreso de las aplicaciones hacia la tienda de la aplicación. Su clímax de marketing inicial debe ocurrir cuando su aplicación finalmente se lanza a la App Store. Dependiendo de sus objetivos y el tipo de aplicación que ha construido, ese empuje inicial puede ser todo lo que necesita para alcanzar sus metas. Esto es especialmente cierto si está creando aplicaciones temporales o de temporada (por ejemplo, una aplicación relacionada con las fiestas), o si está buscando aplicaciones más sencillas o gimmicky. Estos tipos de aplicaciones tienen períodos de vida más cortos y es mucho más importante aprovechar todo el zumbido posible cuando la aplicación se lanza por primera vez. Si está creando una aplicación más compleja o una aplicación que tiene un valor a largo plazo, la atención inicial obtenida por el lanzamiento de su aplicación en la App Store es sólo el comienzo del viaje. Este caso, en particular, requiere una mayor dependencia de la buena voluntad de los clientes post-lanzamiento de la App Store. Los clientes, y no los bloggers o la prensa, actuarán como los guardianes para saber si su aplicación será sostenible a largo plazo. En las subsecciones siguientes, esbozo las cinco fases del proceso de comercialización, que se correlacionan con las tareas de desarrollo en curso. Las dos fases finales se centran en prepararse para el lanzamiento real de su aplicación. Todos son referenciados de sus respectivos capítulos como chequeos de marketing. Fase 1 En la Fase 1, seguirás explorando el uso de Twitter. Twitter servirá para mantener abierto un canal de comunicación en tiempo real con los clientes con los que ya has interactuado, además de ayudarte a descubrir nuevas personas que podrían estar interesadas en tu aplicación. Deberías haber visitado esta sección una vez antes, cuando terminaste de leer la sección Encuestas y la red social en el Capítulo 3. Tal vez quieras revisar rápidamente esa sección si ha pasado un tiempo desde que la leíste. La Fase 1 también le pedirá que comience a rastrear lo que está sucediendo en la comunidad de desarrollo de iOS. Youll desarrollar una lista de lectura de influyentes líderes de pensamiento y empezar a seguir en Twitter, mientras que también la formación de relaciones entre pares a través de Twitter y en otros lugares. Utilice Twitter Marketing su aplicación empieza cuando empieza a hablar con sus clientes. Uno de los canales identificados en el Capítulo 3 que proporcionó a sus primeros clientes para hablar con fue Twitter. El perfil demográfico de Twitter es ideal porque representa un público más vanguardista y de adopción temprana. Como verá en breve, el valor de Twitter se extiende más allá de la búsqueda exclusiva de clientes. Twitter será la principal forma de interactuar de manera significativa con sus clientes y mantenerlos informados sobre lo que está sucediendo con su aplicación. Incluso fuera del ecosistema de la App Store, Twitter se ha convertido en un medio popular para responder a las preguntas de los clientes, hacer anuncios y ofrecer ofertas especiales exclusivas de Twitter (por ejemplo, twitter / VirginAmerica). Una cierta cantidad de etiqueta está implicada en ser acertado en gorjeo. Puedo resumir mucho de eso para usted con algunos consejos simples de Laura Fitton, un autor de Twitter para Dummies y fundador del directorio de la aplicación de Twitter oneforty (oneforty): Sea útil. No hagas Twitter sobre ti mismo o sobre tu aplicación. Hazlo de los demás. Hacerlo sobre la solución de problemas de sus clientes, la vinculación a grandes recursos, y el intercambio de consejos prácticos. Ser útil aumentará la probabilidad de que la gente te siga en Twitter, lo que a su vez amplía tu audiencia y alcanza. En esa nota, usted tendrá que determinar la presencia que tendrá en Twitter. Algunos desarrolladores utilizan sus identidades personales para representar sus aplicaciones, mientras que otros crean cuentas separadas específicamente para la aplicación. Si usted es nuevo en Twitter, le recomiendo comenzar con una cuenta porque mantener que solo implicará una cierta cantidad de aprendizaje. Si va con dos cuentas, considere si va a lanzar más aplicaciones en el futuro. En ese caso, es mejor hacer que el nombre de usuario de Twitter de la cuenta de la aplicación se relaciona con su nombre de desarrollador de iOS. El desarrollador indie y estudiante universitario Jeremy Olson, quien creó la aplicación Grades, tiene su propia cuenta de Twitter (twitter / jerols /) y otra para su aplicación (twitter / gradesapp). Cuando se habla de calificaciones en su cuenta personal, lo utiliza principalmente para interactuar con los de la comunidad de desarrollo de iOS. La cuenta Grades, que se creó más cerca del lanzamiento de Grades, se trata de noticias relacionadas con grados, incluyendo lo que otras personas están diciendo sobre él. Visite cada cuenta para entender mejor cómo se utilizan. En la entrevista de Jeremys al final de este capítulo, él comparte algunas ideas sobre Twitter, así como la comercialización y el lanzamiento de una aplicación. Twitter puede parecer abrumador si no has utilizado antes. Una manera de lidiar con esos desafíos es encontrar un cliente de Twitter. El beneficio de los clientes de Twitter es que agilizan el acceso a las funciones de Twitter como seguir una nueva cuenta, mencionando (también conocida como respuesta) una cuenta, buscando y componiendo nuevos tweets. Oneforty, el directorio de Twitter mencionado anteriormente, tiene una extensa lista de clientes de Twitter en oneforty / category / Clients. Pero también voy a compartir mis propias preferencias. Para mi cuenta personal (twitter / kenyarmosh), utilizo la aplicación Echofon (echofon /) porque sincroniza mi línea de tiempo (todos los tweets de las personas que siguen) en todos los dispositivos (por ejemplo, Mac, iPhone y iPad). Al igual que Jeremy y otros, uso mi cuenta personal para interactuar con sus compañeros y seguir las noticias de tecnología. Antes de que se adquirieran mis intereses en Tweeb, también mantuve una cuenta para ello (twitter / tweebapp). Para administrar la cuenta de la aplicación, utilicé un cliente basado en columnas llamado TweetDeck (tweetdeck /). Los clientes basados ​​en columnas, como TweetDeck, HootSuite y Seesmiclet, pueden ver mucha más información a la vez, lo que le permite ver lo que sus clientes están hablando y al mismo tiempo vigilar a los competidores y potenciales clientes nuevos (ver Figura 8-1). Figura 8-1. Columnas de TweetDecks, que le permiten ver mucha más información a la vez. Seguir a sus clientes Ya sea que esté usando Twitter o un cliente de Twitter, debe seguir a los clientes que encontró anteriormente en Twitter (consulte el Capítulo 3). Si decide tener una cuenta específica de la aplicación, utilice esa cuenta para seguirla. No se sienta mal o deje de seguirlos si no te siguen de vuelta. Siéntase libre de responder a ellos desde esta cuenta si tiene algo relevante que contribuir. Siga los influenciadores y los compañeros de Twitter también se puede utilizar para realizar un seguimiento de las noticias relacionadas con iPhone e interactuar con sus compañeros. Siguiendo a los influyentes de la comunidad de iPhone y móviles (vea la Figura 8-2), comenzará a ver tweets en su línea de tiempo que proporcionarán información útil para crear su aplicación y comprender mejor la psique de la comunidad de iPhone. Normalmente, no siempre se puede identificar a los influyentes por el número de seguidores que tienen. También puede consultar su biografía y líneas de tiempo para ver si sus tweets contienen información que le resulta útil. Figura 8-2. Más allá de usar la búsqueda de Twitter para encontrar este tipo de personas (por ejemplo, la búsqueda de iOS 4 y luego leer las cuentas de los resultados devueltos), dos herramientas que he mencionado en el capítulo 3 son de nuevo útiles Aquí: WeFollow y Twiangulate. Por ejemplo, compara mi cuenta con Jeremys en Twiangulate (twiangulate / search / kenyarmosh-jerols / commonfriends / table / myfriends-1 /) y verás las personas en común que cada uno de nosotros sigue. Una vez que haya encontrado un par de influenciadores clave, conéctelos en Twiangulate y su trabajo debería ser mucho más fácil. Usted puede encontrar pares en prácticamente la misma manera. Los compañeros pueden no tener un número de seguidores muy grande. Si todavía consideran sus tweets interesantes, seguirlos de todos modos. Hay una mayor probabilidad de que los compañeros van a interactuar con usted en Twitter, así que no sólo tratar de acogedor hasta los perros grandes. Lo más probable es que desee añadir influenciadores y compañeros a su cuenta de Twitter personal (es decir, su cuenta no aplicada), para que las interacciones menos formal. Puede guardar búsquedas de palabras clave de Twitter en su cuenta, lo que le permite referenciarlas con mayor facilidad. Puede importar fácilmente una búsqueda de palabra clave guardada en una herramienta como TweetDeck como una columna (también puede crear una columna de búsqueda directamente en TweetDeck). Tendrás una columna dedicada a las palabras clave que son relevantes para tu aplicación. Por ejemplo, en la cuenta de Tweeb (tweebapp), tenía una columna de búsqueda para tweeb y estadísticas de Twitter (ver Figura 8-1). Estas búsquedas de palabras clave están relacionadas con las características que los clientes de Tweeb consideraban importantes. Con esta configuración, en lugar de prospección para los clientes, que fueron empujados a mí directamente de Twitter. Entonces tuve la opción de interactuar con estas perspectivas de inmediato o seguir supervisándolos. Listas y competidores Aunque usted usará Twitter para encontrar nuevas perspectivas e incluso seguir a los competidores, usted debe ser inteligente acerca de cómo hacer esto. Aquí es donde se aplicará la característica de lista Twitters, y específicamente, una lista privada. La idea detrás de una lista es esencialmente para agrupar un número de cuentas de Twitter juntos. Cuando vea esta lista, verá todos los tweets de esas cuentas. Una vez más, una característica interesante de una herramienta como TweetDeck es que puede tener una columna completa dedicada a una lista. De forma predeterminada, una lista que crea es pública y otras pueden ver cuándo se agregan sus cuentas. Al marcarlo como privado, que no será el caso. Recomiendo la creación de listas privadas que consisten en sus competidores y sus competidores más vocal clientes. Usted puede descubrir este último grupo al ver quiénes sus clientes están mencionando en sus tweets, así como buscar menciones de su competidor (busque el nombre de usuario en Twitter o como columna de búsqueda en su herramienta). También suelo crear listas para rastrear a los principales defensores de mis aplicaciones o aplicaciones de cliente. Antes en el proceso, como en el que se encuentra ahora, utilizo listas para agregar personas a las que desearía participar más tarde en función de lo que están twitteando. Por lo tanto, si está rastreando una palabra clave en particular y una cuenta sigue apareciendo, es posible que desee agregar a esa persona a una lista. Al igual que con las listas de competidores, por lo general, mantener estas listas privadas. Para un uso un poco más progresivo y público de las listas, echa un vistazo a la cuenta de Jeremys (jerols). Empezar a leer El intercambio de enlaces es muy común en Twitter, por lo que con las cuentas de pares e influenciadores que está siguiendo, recibirá punteros de mucha tecnología y artículos de iPhone. A medida que continúe visitando esos vínculos, inicie ya sea marcando los sitios que encuentre más informativos o agregándolos a un lector de feeds, como Google Reader (google / reader). También puede visitar sitios como Hacker News (news. ycombinator / news), Techmeme (Techmeme) y Digg (digg / technology) para encontrar los artículos tecnológicos más populares de la comunidad y descubrir nuevos sitios de interés. Pasa de 10 a 15 minutos al día siguiendo tendencias y digiriendo esta información, ya sea a partir de artículos compartidos en Twitter o de tus fuentes favoritas. Ive propósito no le dio Twitter cuentas a seguir o blogs para leer en esta sección porque quiero que encuentre estas personas y fuentes de ti mismo. Explore Twitter y la Web de manera extensiva y agresiva. En última instancia, youll desarrollar relaciones más naturales y aprender mucho más mediante la identificación de estas personas y fuentes de ti mismo. El desarrollo de una lista de lectura le mostrará quién es importante en la comunidad de iPhone. También identificará los tipos de sitios que podrían querer escribir sobre su aplicación cuando se inicie. Obtener una idea de estos puntos de venta ahora le preparará para lanzar los sitios más apropiados cuando llegue el momento. Sigue adelante Fase 1 realmente no termina. Youll seguir confiando en Twitter para interactuar con su comunidad de clientes y sus compañeros, así como seguir el seguimiento de los desarrollos de la industria a través de su lectura. Lo que he descrito en esta sección representa una línea de base y un punto de partida para usted. Con el tiempo, desarrollará sus propias estrategias y las mejores maneras de aprovechar estos recursos para usted y su aplicación. Fase 2 En la Fase 2, abrirá otro canal para comunicarse con los clientes y comenzar a atraerlos con la visión detrás de su aplicación. En esta fase del proceso, usted todavía no tendrá una aplicación de trabajo y probablemente sólo tendrá algunos activos de marca y logotipo a su disposición. A pesar de estas limitaciones, la Fase 2 le ayudará a sentar las bases para sus esfuerzos de marketing por correo electrónico y presencia en la web. Debería haber visitado esta sección una vez antes, cuando terminó de leer la sección Traducir wireframes a pantallas en el Capítulo 5. Quizás desee revisar rápidamente esa sección si ha pasado un tiempo desde que la leyó. Email marketing Con mi enfoque en Twitter, marketing por correo electrónico puede sentirse un poco anticuado. Pero todavía representa una de las mejores maneras de transmitir información muy rápidamente a una audiencia grande y diversa. Esta última parte es importante, porque aunque Twitter se está convirtiendo en prevalente, todavía se utiliza más fuertemente por los primeros adoptantes que por el público en general. Comparativamente, la mayoría de las personas en línea hoy en día tienen una dirección de correo electrónico, lo que significa que el marketing por correo electrónico será útil para un mayor número de clientes o al menos un tipo diferente de cliente. Recuerde que al principio de la existencia de sus aplicaciones, es preferible interactuar con los clientes de los primeros evangelistas (consulte la sección Traits of the right customer en el capítulo 3). Estos clientes soportarán los primeros contratiempos de su aplicación y seguirán con usted porque creerán que su aplicación va a resolver sus problemas mejor que cualquier otra cosa. Sin embargo, estos tipos de clientes sólo lo conseguirán hasta ahora. Aunque theyll probablemente ser su primer pago de clientes, llegar a los normales también será importante. 9 Estas son las personas que potencialmente están fuera de los alcances de Twitter, la blogosfera, y la comunidad de tecnología youve sumergido en hasta ahora. Si su proceso de descubrimiento del cliente producido muchas referencias para usted, es posible que este tipo de personas consisten más altamente de los normales que earlyvangelists. El punto aquí es que el marketing por correo electrónico proporcionará un medio más universal para comunicarse con todos los tipos de clientes. Usted no necesariamente tiene que utilizar una herramienta de marketing por correo electrónico, pero tal herramienta proporciona una serie de ventajas sobre el correo electrónico en sí. Aparte de lo básico, como garantizar que sus correos electrónicos pasarán por el filtrado de spam y ayuden a administrar su lista de correo electrónico, una de las mayores ventajas de las herramientas de marketing por correo electrónico es la generación de informes. Cuando envíes un correo electrónico, podrás ver la entrega y las tarifas abiertas (la frecuencia con que la gente abre el correo electrónico) del correo electrónico, el monitor se cancela (es decir, cuando la gente decide que ya no quiere estar en tu lista de correo electrónico) Incluso los clics de pista a su sitio web. Estos datos le informarán de la efectividad de su alcance y qué ideas y conceptos están o no están resonando con sus clientes. En un nivel más fundamental, sin embargo, su objetivo en este punto será capturar direcciones de correo electrónico como lo hizo con encuestas. La mayoría de las herramientas le proporcionarán un formulario para integrar su sitio web (consulte la Figura 8-3). Este formulario recopilará una dirección de correo electrónico de un visitante y le permitirá usarla más tarde cuando esté listo para comenzar a enviar boletines de correo electrónico. Las herramientas de marketing por correo electrónico más populares incluyen MailChimp (mailchimp /), Campaign Monitor (campaignmonitor /) y Constant Contact (constantcontact /). Figura 8-3. Captura de correo electrónico para la aplicación iPad de Robocats Rouse Publicidad de tu página de bienvenida Todavía no buscas llamar la atención del mundo sobre tu aplicación, pero traer una cierta visibilidad a tu página de bienvenida te va a beneficiar. En primer lugar, desea hacer crecer su lista de direcciones de correo electrónico. En segundo lugar, es posible que desee infundir nuevas perspectivas en el desarrollo de su aplicación. Es probable que las direcciones de correo electrónico que reciba incluyan más normales y quizás desee comunicarse con ellas sobre lo que las obligó a aprender más acerca de su aplicación. La primera manera de llamar la atención sobre tu página de presentación es enviar un tweet al enlace a tus seguidores en Twitter. Incluso si tiene las direcciones de correo electrónico de algunas de estas personas, a menos que reciba permiso específico para mantenerlas informadas sobre su aplicación, no debería agregarlas automáticamente a su lista de correo electrónico. Después de que tweet el vínculo, los que visiten su página de bienvenida decidirán si también quieren registrarse para recibir correos electrónicos sobre su aplicación o seguir actualizándose a través de Twitter. En el momento de escribir este artículo, Twitter había comenzado a explorar su modelo publicitario a través de lo que llama Promoted Tweets. Inicialmente, esto permitirá a los anunciantes aparecer en la parte superior de la página de resultados de búsqueda al comprar palabras clave relacionadas. Vea Twitter en este espacio, ya que podría convertirse en otro valioso canal publicitario. El Capítulo 3 también revisó la publicidad pagada a través de Google AdWords o Facebook. Ambas opciones ofrecen formas rentables de atraer tráfico dirigido a su página de bienvenida. Dependiendo del enfoque de tus aplicaciones, incluso un presupuesto de 5 a 15 al día podría ayudarte a conseguir algo de tracción para tu página de bienvenida. Fase 3 Cuando comience la Fase 3 de su crescendo de marketing, estará en medio de la construcción de su aplicación de trabajo. En este momento, debe tener activos reales de su aplicación, incluyendo pantallas para ello. Usará estos activos para estimular un nuevo interés y los usará junto con una versión eventualmente más completa de su aplicación para reclutar probadores beta (como se analizó en el Capítulo 6). Debería haber visitado esta sección una vez antes, cuando terminó de leer la sección Pantallas y prototipos del capítulo 5. Es posible que desee revisar rápidamente esa sección si ha pasado un tiempo desde que la leyó. Ejemplo de la página Splash Como Tweeb es una aplicación de Twitter, decidí concentrarme exclusivamente en Twitter durante la Fase 2. Así, no puse un formulario de registro de correo electrónico en la página de presentación cuando lo lancé. En su lugar, utilicé mi cuenta personal de Twitter para anunciar la página de presentación y la cuenta de Twitter de Tweeb (véase la figura 8-5). La página de inicio inicial se colocó en la domaintweebapp Tweeb y reflejó los colores, los estilos de fuente y el logotipo de la aplicación. A pesar de que la página de presentación era muy básica, los visitantes obtuvieron un primer sentido de lo que era la aplicación y entendieron la atención al detalle del diseño a través de esos elementos. El fondo para la cuenta de Twitter se creó para que coincida con la página de bienvenida (ver Figura 8-6), que reforzó la marca de aplicaciones. Figura 8-5. Página de presentación de Tweeb sin formulario de registro de correo electrónico Figura 8-6. El fondo de la cuenta Tweeb de Twitter, que coincide con la página de presentación de la imagen de marca Captura de pantalla peeks La idea de teasers no es nuevo. Sucede a menudo en los medios de comunicación, y la mayoría de las veces se hace para ayudar a construir el frenesí sobre lo que está por venir. La clave de los teasers es mantener a la gente deseando más. Usted desea conseguirlos interesados ​​y emocionados, pero no satisfecho. Necesitan ser mantenidos curiosos, o youll desplazar toda la anticipación que usted está intentando crear. Dado que las personas son seres visuales, cuando se trata de adaptar los teasers en el mundo de las aplicaciones, el texto por sí solo no será especialmente estimulante. En su lugar, desea concentrarse en compartir elementos de los diseños más terminados de su aplicación. De hecho, mantener lo que usted distribuye casi totalmente visual y no describir lo que realmente es promoverá aún más curiosidad. Mike Rundle (flyosity), un diseñador / desarrollador y creador de la aplicación Digital Post, hizo exactamente eso cuando dio a sus seguidores un vistazo (ver Figura 8-7) de la versión iPad de su aplicación que conduce al lanzamiento de la aplicación IPad y la tienda de aplicaciones para iPad. Como puede ver, fue una imagen sencilla pero cautivadora, y no proporcionó muchos más detalles sobre ella en ese momento. Figura 8-7. Mike Rundles echa un vistazo a Digital Post para sus seguidores en Twitter Comienza a blogear Twitter es un gran lugar para compartir diseños de mirar a escondidas de tu aplicación en curso, pero también querrás empezar a aprovechar esos activos en otros lugares. Hasta ahora, solo has creado una página de bienvenida para tu aplicación y tienes tiempo para comenzar a expandir tu presencia en la web. Los blogs son otra forma de interactuar con clientes existentes y nuevos. Obviamente, mientras que una mirada furtiva se centra en diseño, un blog está más sobre contenido escrito. El beneficio del contenido es que los motores de búsqueda dependen de él para indexar su sitio. Por lo tanto, cuando alguien busca en una palabra clave relacionada, aparte de otros factores importantes, como tener su sitio vinculado a, su sitio absolutamente no puede mostrarse como un resultado de búsqueda (consulte la Figura 8-8) si no tiene ningún contenido de calidad en su sitio . No hay mejor manera de empezar a blogar que empezar a blogar. Youll recoger buenos consejos a lo largo del camino, pero es más importante para obtener el contenido publicado en su blog de lo que es para que usted pueda saber cada consejo y truco de blogs en existencia. Si tienes un blog o sitio web existente y tu aplicación va a tener una página o páginas separadas en tu sitio, puedes usar ese blog para comenzar a hablar de tu aplicación. De lo contrario, considere el uso de herramientas como WordPress, Posterous o Tumblr para iniciar su blog. Si quieres que tu blog se integre mejor a tu página de presentación y al sitio web (que te recomiendo), aprovecha las opciones de dominio personalizadas que ofrecen algunas de estas herramientas (por ejemplo, blog. ltyourappdomaingt), haz que tu blog refleje un diseño similar al de De su página de bienvenida, y posiblemente incluso utilizar la versión auto-alojada de una herramienta como WordPress (es decir, utilizar wordpress. org en lugar de wordpress). A great first post on your blog can include some basic background about what your app will be about, incorporating the designs you just shared. Dont proceed with the next section until your app is ready to be distributed to your customers for testing, which will occur by the time you get to Chapter 6. Youll be guided back here once that is the case. Figure 8-8. Tweeb ranking highly in Google Search results due to the keywords associated with the site Recruit beta testers As with all customer interactions, recruiting those to beta-test your application is definitely a marketing activity. Beta testing will be the first time customers actually experience your application. Youll want to set the tone for the purpose of beta testing and guide them in how they can be most helpful. By now, you should have a minimum of three channels to recruit beta testers: Twitter, your email newsletter list, and your blog. You should use all three sources to recruit beta testers. To reach those on Twitter, the best approach is to create a post on your blog and then link to it from a tweet. Your post should include the objective of your beta testing (e. g. testing a specific feature), the OS and device requirements (e. g. iPhone 3GS running iOS 4), some background on providing their UDID (see the section UDID and Figure 6-1 in UDID ), how they should sign up (e. g. sending an email or filling out a form see Figure 8-9 ), and how public you want this part of the beta testing to be. Figure 8-9. Tweeb beta form to collect customer and device information Depending on how far along you are in the development of your app, you may want to request that your beta testers not extensively discuss your app online. For example, you could ask that they not post screenshots of the app or write blog posts about it. Dont be overbearing, but definitely articulate what makes you most comfortable. You can become more flexible about what they share online the closer your app is to being submitted and approved into the App Store. Initial email outreach With the design assets from your sneak peeks and the written content from your blog completed, you should begin sending out updates regularly to your email newsletter list. Always try to repurpose content you create elsewhere. What you include in the email newsletter should derive from what you post on Twitter and your blog. Although there may be some overlap among those who get your emails and follow your blog and Twitter account, recall that email is in many ways reaching a different audience. You can also make your emails act as summaries of whats happening elsewhere, with links back to blog posts, Twitter, or your website. Dont use your email list to recruit your earliest beta testers. Again, although Im generalizing, think about your email list customers as being slightly less tech savvy, with less patience for an app thats still not ready for prime time. As you near completion of the App Store version of your app and want some fresh perspectives, definitely consider including a request for beta testers through your email newsletter list just dont make this the primary motivation for the email. Phase 4 In Phase 4, youll begin to transition to a launch mindset. Most of the development efforts for your app should be wrapping up and you either will have submitted or will be in the process of submitting your app to Apple for approval. Compared to other phases, the timing and execution of Phase 4 and Phase 5 marketing activities are much more critical. Be diligent with them so that you can maximize the buzz you generate around your app when it is approved. You should have visited this section once before, when you were done reading the section Your App Store App Binary in Chapter 7. You might want to quickly review that section if its been a while since you read it. Launch content Write the launch content for when your app is approved. Starting with this content noweven though its not needed yetwill put you in a launch mindset. It will also make it easier to focus on other critical tasks once your app is approved. Your launch content includes your more significant blog post announcement and email newsletter, as well as the content for your website. Discuss what makes your app interesting, what features you are planning to add going forward, and how you are planning to incorporate customer feedback (e. g. point to your Twitter account and other designated feedback or support channels). Ill detail what you need for your website and what web content you need now. Website The website for your app has already evolved from being a splash page with an email sign-up form to include a blog. You are now going to prepare the remainder of your website assets, which will be used in both Phase 4 and Phase 5 of your marketing crescendo, as well as post-launch. As with your app, splash page, and blog, you might not be doing the design of the website yourself, but this information will help you guide its development. Designing an app website has some unique elements to it. As with your app, it has to embody Apple-like design and attention to detail. The best app sites are also extensions of an app, almost giving a sense of being in the app itself. Im including a couple of examples of well-designed app websites in Figure 8-10 and Figure 8-11 and will subsequently review the common elements of them refer back to these examples as needed. Figure 8-10. The website for my app, AudioBookShelf Figure 8-11. The Postman app website, another example showcasing common elements Because you wont be unveiling your entire website at once, the most important aspect for you to address right now is its structure. You should build your site in such a way that it will be easy to roll out its new sections and features through Phase 4, Phase 5, and beyond. In fact, the smartest way to approach building your pre - and post-launch website is to build the post-launch website first and then remove elements from it until your app is approved into the App Store. For example, in Figure 8-11. you can see an area of the page thats dedicated to press quotes. You wont have any quotes when your app website is in pre-launch mode. Similarly, you may not want to have any screenshots of your app available until after your app is approved. To simplify thinking about the different stages of your websites existence, consider this progression: Splash page plus blog Youve already implemented the first two stages. Ill cover the remaining elements of the last two stages of your app website in the order in which theyll be needed. App websites typically have an actual or close approximate of a device (i. e. iPhone or iPad) in a prominent place on the page. Later, the screen of the device will come to house your app in action (e. g. a video). In the early stages, however, it could just include the splash screen for your app or even a logo. The device image is one of the first elements youll want on the page because it immediately communicates that your website is about an app. Its possible your splash page already had a device image if not, include one on your pre-launch website. Include some crafty verbiage about your upcoming app that teases out its concept. For example, Tweebs teaser text read, Introducing a new way to track your Twitter account. Exclusively for the iPhone. You should provide some language that its coming soon. This text might represent the bulk of the content that you include on the pre-launch website. Consider replacing or adding text underneath it later with more background and description about your app. Social media links Link to your blog, Twitter, and other social media presences from your pre-launch site. I havent covered Facebook in detail, but that is another outlet you may want to consider using (learn about Facebook Pages at facebook/advertising/pages ). Usually, these are placed in the header or footer (top or bottom) of the page. Make them easier to discover by using icons to represent the links. Your email sign-up form should still also be present on your pre-launch website. Compared to your splash page, it should not be as highly promoted (see Figure 8-12 ). Figure 8-12. Tapbots clever integration of the email sign-up form at the bottom of the site About and contact pages Make it easy for people to learn more about you or to get in touch. You can create separate about and contact pages to include this information, or for now, incorporate it on the same page. If your app or apps gain more prominence over time, you will likely want separate pages detailing this information. For example, your contact page might distinguish between questions about how your app works and feature requests. Dont forget to include web analytics on your site so that you can understand traffic sources and how people are using the site. Install a solution such as Google Analytics (google/analytics ), which is free, easy to use, and powerful. To reiterate, you wont be flipping the switch on your post-launch website until after your app is approved. Building the pre - and post-launch websites at the same time will streamline this process, though. As mentioned earlier, you should think about the pre-launch website as the skeleton of the post-launch website, meaning that it contains all aspects of the final site minus the more thorough post-launch details. Device image revisited Once your app is approved, your post-launch website should make your app feel alive by inserting more than just a static splash screen into the device image. The two most common ways to do that are either to cycle through the images in a slideshow fashion inside the device or to integrate a video. Keep the video short and with either concise dialogue or no narration and some catchy, upbeat music. Consider using a tool such as SimFinger to make it even better (github/atebits/SimFinger ). This may be confusing to you, but it wont be to a web designer. Creating a video takes a little more effort, but it can be of tremendous value when you begin pitching your app. At this point, you should know the most compelling features of your app and have your launch content and preliminary or final application description (for the App Store) at your disposal. Use these assets to include more details about your app on the website. Start with some brief narrative content, but err on the side of bulleting the key features of the app. You can usually place this type of content under your teaser text. Its also good to include the operating system and device requirements of your app at the bottom of this area. If you consider your price a key part of your strategy, or if your app is priced competitively, you might want to include a price tag on the page. You can always change this later. Regarding this point, since you will be looking for the optimal price of your app and may be adjusting your price often, be mindful that youll want to update this element. App Store button If youve viewed any number of app websites, youve probably seen Apples Available on the App Store buttons. Include one of those buttons, edited to match the color scheme of your app and the website, for branding purposes. In all likelihood, Apples App Store will be better-known than your app when it first launches. Position this button close to where your app is located. Some developers also opt for a Buy Now button instead (see Figure 8-13 ). Figure 8-13. App Store buttons for the apps Digital Post, Pastebot, and Outside, from standard to custom Under your device image, place thumbnail images that, when clicked, expand to show an entire screen of your app. Although visitors to your site might view the image slideshow or video, they may want to explore these screens more thoroughly and at their own leisure. Media and customer quotes Designate an area for quotes from bloggers, the press, and customers. This last group is important, because even if your app is not initially reviewed by those in the media, its possible that youll receive App Store reviews or write-ups on customer blogs. Consider including two or three quotes and use well-known names and brands if you have them. Highlight the latest update (e. g. v1.0.1) and the release date (e. g. 10/30/10) of your app and any critical fixes or key new features added. Not only is this useful information, but it will also show visitors that you are maintaining the app. Creating a page that is completely dedicated to frequently asked questions about your app will help you and your customers. You can initially launch this page with the questions customers asked you during beta testing or with questions you think will be common. Whether you have a FAQ page or not, be sure to highlight the best way for customers to get in touch with you about problems they are having with your app (this information could also be placed on the contact page). That might include a dedicated support email address, your apps Twitter account, a support tool you implemented in Chapter 5. or all three. Remember that within your apps, you will have only a limited amount of space dedicated to helping customers with questions and engaging them more extensively. Take full advantage of Twitter, email, your blog, and your website to supplement this limitation. Media outreach Your media outreach is going to be the most time-sensitive part of getting your marketing crescendo to work. I can tell you from personal experience that beginning to do outreach too early, as well as too late, can very negatively impact your marketing plans. So, like Goldilocks, youve got to make your timing be just right. The purpose of media outreach is to find websites that could be interested in doing a review about you or your app. I include you because with the number of apps being pitched for review every day, having some interesting backstory about the app can help differentiate you from others. For example, in the earliest days of the App Store, the media loved Steve Demeter, creator of the highly successful game Trism, not only because of the games sales numbers (250,000 in two months) but also because he initially worked on the game at night while maintaining his day job. Backstories are a little more important for larger or more traditional media outlets such as newspapers, so dont overplay them. Here are some details of whom to pitch, how to pitch, and when to pitch: With your Twitter community humming and the reading list you developed in the early marketing phases, you should have a pretty good handle on the types of outlets and people youll want to pitch. Realize, however, that most people are probably pitching the same blogs and sites you are. That doesnt mean you should forgo those sites instead, broaden your horizons to people, blogs, and sites outside the most typical ones. These may include smaller blogs that your peers or even customers have. One way to find media outlets outside of those you are currently familiar with is to use search engines to identify those writing about features related to your app. More specifically, sites such as Google News are article-based and will return stories and blog posts rather than more generalized results. When you find a relevant article, look at the person who wrote it and track down an email address. If its not listed there, you can also Google the persons name. Make sure you bookmark what this person wrote Ill come back to how thats useful in a moment. A good way to think about whom to pitch is to break down your list of outlets in two ways. The first is by likelihood of receiving a review (e. g. unlikely, probable, or definite). If you see that all of your sites are part of the unlikely category, you need to diversify. The second way to group your list is by reviewer type. You should not focus only on sites that review apps, but also on ones that are interested in what your app is about. For example, with Tweeb, my nonapp pitches were to people and sites who wrote about social media, Twitter, and analytics. That landed me three reviews on very reputable sites (SocialTimes, ReadWriteWeb, and Twitterrati), which are not extremely app-focused. For your pitches, you are going to reuse many of the assets developed for your pre - and post-launch websites. This includes your teaser text, a brief description about features, screenshots, and a video, if you have one. If you are still sending pitches after your app is approved and in the storewhich you should doalso include your iTunes URL and a promo code (promo codes and a useful promo code trick are discussed in Launching Your App (Phase 5) ). If your app is not approved yet, which is the more likely scenario at this point, having a video will be particularly useful. As with other types of outreach, I prefer to use templates for pitches. To be more effective, however, you will customize the first part of your template based on whom you are pitching. So, for example, use some context from an article or post someone wrote thats where the bookmark to the persons writing comes into play. Heres an email template I used while pitching Tweeb. It received a 60 success rate during my initial outreach. The customized part of the template is in bold italics. and although its true, you can see it was fairly generic. Been reading your stuff for many years now. I wanted to drop you a note about my latest iPhone app Tweeb. Its focused exclusively on Twitter stats and includes click data from bit. ly/j. mp links shared in tweets. Would love for you to check it out. Feel free to drop me a line with any feedback . The template is short and sweet. You may want to add attachments such as your screenshots or a link to your video. If your video is not live on your app website, you can either put it on a nonpublicized directory/URL or host it on YouTube or Vimeo. Arnold Kim, the proprietor of the largest iPhone game review site on the WebTouchArcade discusses the importance of videos and how best to pitch review sites in an interview at the end of this chapter. There are different perspectives on how far in advance you should make your pitch. I recommend that you do so about one or two weeks before you hope for your app to be approved. This time frame is more important for larger sites, which are typically bombarded by review requests and often have editorial schedules to follow. Making this timing just right is yet another example of the importance of intertwining your development and marketing efforts. Youll need to have a firm handle on how close your app is to being App Store ready, when you plan to submit it to Apple, and how long the approval process is currently taking. Knowing this information will help you estimate when you are one to two weeks away from having your app in the store. Be careful, however, because your first time through the App Store approval process may result in a rejection. Another tip on when to pitch is that you should stay away from making contact with the larger media outlets at the beginning of the week, and in particular, on Monday and Tuesday. Thursday and Friday have less volume if you are a night owl or workaholic, try pitching on a Friday night or over the weekend. You may not receive a response as quickly, but I find that the response rates are higher. Compared to many others who are pitching for reviews, you should have an immediate advantage given the approach youve taken to building your app. Your app should be considerably more useful and interesting than apps that werent validated by customers. The media, in general, dont write scathing reviews unless they want to mock an app that is horribly embarrassing. Thats not to imply that they wont have criticisms about your app, because they will. The point is that they want to write about apps that are unique, are creative, are well done, are supported by communities, and give them a story. As for those who show interest in writing about your app, you will want to try to time their reviews, as well as all reviews, with the approval of your app into the App Store. You can let them know youll follow up with them when the app is approved. If they are excited about it, however, dont hold them back if they want to write about it immediately. By receiving a review before your app is live, youll be able to leverage it as confirmation of your efforts. Youll also be able to tweet a link to the review and select a quote from the review or article to use in your App Store description and on your website. Launching Your App (Phase 5) No, I didnt forget Phase 5. The actual launch of your app is significant enough that it deserves to be called out separately. The nice thing about Phase 5 is that with all the work youve done through the first four phases, the majority of what youll be doing once your app is approved will mostly feel like quickly checking items off a to-do list. Yes, theres actually a method to the madness Promo Codes If you have a paid app, youll want to use promo codes to distribute promotional (i. e. free) copies of your app. Although many people dont realize this, promo codes are useful even if you have a free app, so keep reading. Im addressing promo codes outside of what I call the launch checklist because theres a little-known aspect of them that can help people preview your app before its technically available on the App Store. The iTunes Connect home page includes an area called Request Promotional Codes (see Figure 8-14 ). Youll visit this link to get up to 50 promo codes. In reality, thats not many, so be somewhat selective with who receives one of them. Also, reserve about 5 to 10 of these codes for your most loyal and helpful beta testers. There are a number of stipulations about the use of promo codes, including that they can be redeemed only one time, are valid only in the U. S. App Store, and will expire after 28 days. You will, however, get another 50 codes for the app once an update is submitted. Figure 8-14. Requesting promotional codes Redeeming promo codes is a somewhat tedious process, but theres a nice trickuncovered by tap tap tapto make them easier to redeem and distribute. Give out a URL such as the following: phobos. apple/WebObjects/MZFinance. woa/wa/freeProductCodeWizardcodeREPLACEWITHPROMOCODE. where REPLACEWITHPROMOCODE should be replaced with the actual promo code. When sharing promo codes, always use this method. One final tip about promo codes, which makes them useful for paid as well as free apps, is that if your app has been approved but you have not yet made it available on the App Store, you can create promo codes and have people download your app using them. Thats useful for reviewers who may have only seen a video or screenshot of your app but want to experience it firsthand before its in the App Store (note that more technical reviewers may also be OK with the ad hoc distribution process described in Chapter 6 ). Theres another way to get paid apps in peoples hands for free once your app is released: Gift This App, which I will cover in the next section. Launch Checklist As mentioned before (see the App Store Approval Process section in Chapter 7 ), once your app has reached the Ready for Sale status youll have the option of launching it into the App Store. Or if your Availability Date has already lapsed, your app will automatically be published to the App Store shortly. In either case, when your app is set to be published into the App Store, it will likely take some timeusually several hoursbefore it begins appearing there. These first items are what you should complete during that time. Ill then detail a second set of tasks to finish once the app is actually showing in the store. Notify key media contacts Notify key media contacts who agreed to review or write about your app that the app has been approved. These contacts should receive promo copies of your app. So, send them the promo code link in your email. Deploy post-launch website With your apps entry in the App Store imminent, you should push your post-launch website live. One piece of information that you were previously missing was the iTunes link to your app. Youll find this link in the approval email Apple sent you next to your Application Name. Copy this link and use it for your App Store or Buy Now button. If you really want to be savvy, sign up as an iTunes affiliate (apple/itunes/affiliates/ )powered by LinkShareand use the URL generated to earn an additional 5 from any apps that are sold by clicking on that link. Publish blog post Publish the announcement blog post about your app being approved. You wont publicize your post on Twitter or other channels until the app is showing in the App Store. Some people advocate issuing a formal, paid press release. Although this varies according to the audience youre targeting, I find that they generally are not worth what they cost. Consider a social media release as an alternative. You can read How to Write a Social Media Press Release (copyblogger/social-media-press-release/ ) or try a nifty tool called PressDoc (pressdoc/ ). After your app is available on the App Store, proceed with the remaining launch checklist items: Notify other contacts Continue to reach out to other contacts (family, friends, colleagues, customers, reviewers, etc.) after your app is live in the App Store. Provide promo code links to your most engaged customers as a sign of thanks for their help. Get ratings and reviews When you email your friendly contacts (including family, friends, and customers), ask them to rate and review your app on the App Store. Theyll need to have downloaded or purchased the app to write a review. As a reminder, a review consists of both a star rating (from one to five stars) and a written description. Youll need a combination of five ratings or reviews for your app before the Ratings will show any stars. People visiting your App Store listing will definitely look at this area, especially if your app is not free or is priced more aggressively. Getting friendly ratings and reviews in early will get you started in the right direction. If you are a purist and wonder if this move is cheating, dont worry if your app is bad or hurting, youll hear about it. Adjust App Store description and website If there are any early favorable web or App Store reviews, snag quotes and highlight them on your website and in your App Store description. For the App Store description, place these quotes near the top, with the most popular names first. Tweet a link to your apps App Store listing and your initial blog post. If you really want people to read the blog post, ensure that it has a link to your app on the App Store and only tweet the link to your blog post. Send email newsletter Finally, once youve completed the preceding steps, announce the launch of your app to your email newsletter subscribers (see Figure 8-15 ). Try to reuse the content from your blog post or just introduce it and then link over to your blog. Be sure to include a link to your app on the App Store in your email newsletter. Figure 8-15. Robocats Outside 1.1 newsletter update Additional Promotion After the initial buzz for your app has settled, you should do some additional promotion. In fact, the first 30 days of being on the App Store are critical for the long-term viability of your app. There are a number of ways to keep people interested. For instance, you can and should continue to pitch bloggers and media outlets and get additional press for your app. Although I recommend that you come up with your own creative approaches, here are some proven ways to get additional promotion for your app: One way to make it more appealing for app review sites to take a look at your app is to offer to conduct an app giveaway for their readers. In this case, youre providing them promo codes, which they subsequently will decide how to distribute to their readers based on something a reader must do (e. g. follow the review sites Twitter account and then tweet a link to the review). Promo codes are precious commodities, though, so dont send these over until someone has agreed to do an app giveaway with you. A newer feature that Apple introduced into iTunes is called Gift This App. As you now know, you get only 50 promo codes the Gift This App feature can help overcome that limitation. The added benefit to this approach is that you can use it in conjunction with further growing your email list, since gifting requires that you know the email of the recipient. You could create a page on your website dedicated to this promotion (e. g. the first X people to subscribe to our newsletter get a free copy of our app), or use one of the tools covered in Chapter 3. such as Google Docs, Wufoo, or Unbounce, to do something similar. Initially, Gift This App might seem expensive to you. For example, if your app costs just 0.99, it would cost you 1,000 to gift 1,000 copies of it. Remember, though, that youll get 70 of each sale back. So, it actually would only cost you 300 to gift 1,000 copies. Because of the time constraints for giving away that many copies at once, you probably wont proceed with such a large promotionbut the point still stands. The Gift This App option is a powerful and cost-effective tool for you to buy goodwill and grow one of your key communication channels. By the way, this feature does not impact ranking, so dont try to buy your way up the charts. As you saw, Gift This App is a way to conduct a contest. In the preceding example, there were multiple winners and the prize was a free copy of your app. Contests, though, are an area where you can get really creative. Some contests occur over a period of days or weeks and involve multiple steps, such as following a Twitter account and tweeting about joining the contest. The prizes for some contests involve winning much more expensive items, such as iPads or even computers. Develop your contest around a goal and budget. If you want more followers for your Twitter account, focus on providing an easy way to do that while verifying that it occurs. You also dont have to spend a large amount of money to make a contest successful. Your prize might be related to your app. If your app is focused on productivity, consider your prize to be a new bestselling business book. I generally recommend creating contests in which there are more prizes that cost less, yielding a greater opportunity for more people to win. If you do proceed with a contest, clearly set the guidelines either on the page or with a link to them. The guidelines should include what constitutes entering, prize details, the length of the contest, and other limits and liabilities (e. g. no more than one entry per person). Offering a temporary promotional price for your app can be a way to infuse activity back into your app. You can automatically start and end promotional pricing periods using the Price Tier Effective Date and Price Tier End Date, described in Chapter 7 . One of the immediate benefits of changing your price is that there are a number of sites and Twitter accounts that watch for price drops. Theyll automatically post your price drop, with your apps App Store link, when your promotional pricing period goes into effect. Dropping your price typically makes sense when you have a major update coming, are celebrating or trying to spur an event (e. g. getting to 500 Twitter followers or 1,000 sales), or are about to release a new app. You should also experiment with different prices throughout the week and during holidays, because general trends are that downloads increase 10 to 20 through the weekend and spike even higher during holidays. One concept I touched on in Chapter 1 is that you increase your chances of being successful with future apps once youve released your first app. Thats even truer if that app has gotten some attention and buzz and helped make a name for you. Not only will customers be excited for other apps you are working on, but youll also have the opportunity to use your most popular apps to cross-promote those new ones. There are a couple of more common ways to do cross-app promotions, and youll often find that they are combined. A more basic approach is to run an advertisement in your most popular app that promotes your newest app, linking to it in the App Store. Some developers use their own advertising framework to accomplish the cross-promotion of their own apps, but AdMobs AdWhirl and other third-party advertising options can also help with that integration (see Figure 8-16 ). Figure 8-16. Harbor Master HDs cross-promotion of other Imangi iPhone games A more aggressive cross-app promotion is to make one app free. When Imangi Studios launched the Harbor Master HD iPad version of its popular iPhone app Harbor Master it decided to make it free. It then cross-promoted its iPhone games, including Harbor Master and Hippo High Dive (see Figure 8-16 ). Its strategy can be considered doing a promotional price of free combined with cross-app promotion. Leveraging mobile advertising to increase exposure for your app is definitely something to explore. You can run campaigns on mobile ad networks to drive awareness and, ultimately, more downloads for your app. Tapjoy also offers an innovative pay per install model, whereby you set the price you are willing to pay for someone to install your app (tapjoy/Company/AboutPPI/ ). Of course, you need to be smart about how you use these options spending money makes sense only if it helps you achieve your goals or, at the very least, allows you to break even. A popular approach, for games in particular, is to have your app be part of a network. Imangi Studiosthe creator of Harbor Masteris part of a network called App Treasures (apptreasures/ ), which consists of a number of small, independent game developers. Each app in this network contains an area dedicated to promoting the apps of all members of the network. Mentioned in Chapter 2. larger options in the game space include Plus (plusplus/ ) and OpenFeint (openfeint/ ), which also provide tools for game developers. The lack of formalized networks for other categories is actually an opportunity for you. Seek out apps complementary to yours, or talk with your colleagues in the development community and explore forming your own network. This will give you another channel through which to promote your app and further strengthen your ties with peers. Like smaller review sites and less popular bloggers, local media outlets are often ignored. With everyone clambering to get attention with app review sites and nationally known publications, youll have significantly less, and possibly no, competition for your local community news sites. If your city or town also has a local print publication, pitching to it may also mean your name winds up in print. Remember that you are still in a relatively new industry, and that although iPhone or iPad stories are a dime a dozen in larger publications, it could represent a scoop for a local news outlet. Obviously, much of what is covered in this chapter is useful beyond the pre-launch and immediate post-launch of your app. You can consider adopting many of these same principles and processes throughout the existence of your app, whether for a simple update or for a more significant release. Although Tweeb launched into the App Store as a pre-release app (v0.9), it still received buzz from several reputable outlets, including Social Times, Twitterrati, and ReadWriteWeb, as outlined in the following list. Realize that most apps go into the App Store as v1.0, and my plan was unique to my strategy with the app (recall that my interests in Tweeb were acquired in June 2010). Background: Phill Ryu is part of the leadership team at tap tap tap and MacHeist. He co-created the bestselling app Classics, and when hes not cooking up cool app ideas, hes cooking up ways to craftily get those apps into customers hands. Ken: The folks at tap tap tap have been in the Apple world for quite some time. Is familiarity with the Apple mindset and way of doing things a key part of making it on the App Store Phill: It may be the most important single part of making it in the App Store. Apple has worked extremely hard over the years to create a strong culture of high standards, in UI design, user experience, and marketing and launching products, and you can see how that culture affects every inch of their product line. Its similar with iPhone app developmentthere are apps you can just take a glance at and realize, yeah, these developers have grown up adoring Apple culture and ideals, and these apps will tend to do very well. They have the special sauce down. Ken: Having been on the App Store since the beginning, what are the major differences with it now compared to then, and how has that influenced how you approach building and releasing iPhone apps Phill: The major difference is its a much larger, more mature market, which means more customers to potentially reach, but also more intense competition, and more possibilities to just get lost in the crowd. This is where some critical mass, whether it is through a powerful, growing brand or a fan base, can provide some level of insurance. Weve accrued some of this over the years, so one thing were doing now that we werent doing then is working with some developers to help them hedge their app launches when we see an app that really deserves success. Ken: Youve had an incredible number of hits to this point, including WhereTo, Classics, Convert, and Voices. How have you been able to ensure that you werent a one-hit wonder What do you consider the core elements for creating a successful app Phill: Theres just one very important question I like to ask myself before diving into a project: How big is the vacuum This will answer pretty much all your questions the bigger the vacuum, the better. You can find vacuums of all sorts in the App Store if you look around. There might be a quality vacuum in a certain popular app genre, a vacuum of developers leveraging free for their paid app sales, or a vacuum of booby apps because Apple just removed a ton of them. There are always vacuums, and vacuums are the easiest things to fill in the world, because they inherently want to be filled. Theres huge pressure and demand for it. And when you fill large vacuums, releasing that potential energy and pressure for your own benefit, you will do well. If you look at our apps so far, youll see a pattern of successful apps in fairly popular/crowded genres that then took those app categories a step or two forward, usually in the design and user experience department, filling those vacuums. For us, on a much smaller scale, were trying to replicate the magic of the iPhone launch: the release of a product thats so much nicer to use than the status quo that it feels slightly magical. If you can nail that, you should do fine. Ken: Once you release an app, what metrics and signs are you watching to gauge success and what tools do you use to view them If an app starts off more slowly or seems in trouble, what sorts of steps would you take to get it back on track Phill: App launch month will involve fairly compulsive viewing of the App Store top paid and category charts for your apps charting positionsince Apple doesnt provide real-time sales information, its the best we have in terms of gauging an apps trajectory, and that means madly refreshing pages in iTunes and on your phone while cursing Akamai when things randomly get cached for hours and dont update. From our experience, if an app isnt cut out to chart high, its not worth the trouble trying to prop it up. Its best to learn your lesson and move on, with a slightly better idea of the App Store demographics tastes, than fall victim to the sunk cost fallacy. Ken: In your post The Cookie Cutter Guide to Charting in the App Store (taptaptap/blog/the-cookie-cutter-guide-to-charting-in-the-app-store/ ) you discuss how you pushed a completely unknown app to the top of the charts very quickly. You mention that this approach was experimental. Would you do it again What are the right situations to take that approach versus teasing an app and building excitement for it before release Phill: Teasing an app and building excitement for it before release can fit right into the shaken-up soda bottle model of building up pressure for release at launch, but just be careful to implement a way to notify interested people instantly that your app is out. Interested people coming back to the page a week after your app launched after bookmarking it two weeks earlier wont help you too much for your initial bid at the Top 100 chart. You should always try to take at least some form of this kind of app launch if possible, even if its on a much smaller scale. If you take one thing away from that post, it should be this: a concentrated blast is much more powerful than longer sustained promotion, because higher charting (from the concentrated sales) starts bringing in more and more customers the higher you get in a feedback cycle of increased visibility/freshness. Ken: In that same post, you write about MacHeist being a rocket to launch your apps. Although you mention that the rocket could be considerably smaller for other developers, many of those in that category dont have any mailing lists at all. If they have no lists and cant partner with someone, what should they do to get attention for their apps Phill: Im going to start with the assumption that this is an app that the developer really cares about, and believes is great. If so, this is where I recommend the Classics style approachget it pretty much totally ready or submitted with an adjustable release date set, then at least throw up a teaser page with an email sign-up on release notification for visitors and start promoting that page as much as you can. This is by far the best approach for collecting potential energy in the form of interested, probable customers signing up to hear about when the app is out, then releasing it at your cue when the app is out and youre trying to chart. Ken: What is your guidance and philosophy on pricing apps How is pricing a strategy, and do you think about it per app or just have a general approach that you apply across any app you launch Phill: We believe in affordable software (you can see some of that belief shine through in our past history in the Mac community with MacHeist, our other business). With the App Store, we have an extremely efficient distribution and sales system set up on everyones iPhone and iPod touch, and if anything, this means if your app becomes a hit you can price your app at 0.99 and make a bundle. We see some niche apps where it makes sense to price higher and do low-volume, high-margin business off of people who really need your app and go out to find it, but ultimately at tap tap tap we do focus on producing mainstream-friendly apps, so as a rule of thumb we price low and aim for high volume. Its definitely situational, though there are some apps where youll look at them and a freemium model makes perfect sense. Or just free with ads, or dirt cheap aiming for a chart blockbuster, or high for a more niche business. Its just important for developers coming from other ecosystems to banish the idea that selling an app for 0.99 and making a living off of it is impossible. The App Store makes it possible now its tough to make it happen, but its possible. Ken: Do you consider apps to have a certain life span to them For example, at some point do you stop worrying about tinkering with the price and no longer invest in adding features to them Phill: The App Store approval process is not very tuned for constant minor maintenance fixes and updates. Were interested in shipping a really, really solid 1.0, updating it with any critical fixes if necessary, then rolling out major (usually free) upgrades on a slower cycle. I actually find super-frequent app updates really annoying personally as an iPhone user (they can really stack up when you have dozens of apps), so I can see why Apple subtly pressures toward less frequent updates, with minor provisions for pushing out emergency bug fixes quickly. Sales-wise, apps do tend to have a certain life span to them. Its pretty rare that an app will chart multiple timesyou need something major like being featured in an Apple television ad, or a heavily promoted major upgrade, to boost you back into the top 100. This is another reason were interested in concentrating on less frequent, but really meaty updates. Theyre something worth posting about from the perspective of media and bloggers, and for us, theyre worth promoting heavily for another good shot at charting and a second life of sales, so to speak. Grades: Jeremy Olson Position: User interface designer Background: Jeremy Olson is a UI designer and app developer. As part of the creation of his first application, Grades, Jeremy chronicled his marketing strategies on his personal blog, Tapity (Tapity ). Grades went on to be featured by Apple on the App Store. It quickly climbed the charts, becoming the second ranked app in the Education category a week after launch. Ken: You began talking very early about your app, Grades, probably even before it was built. Describe why you did that and how it plays a part in building a successful app. Jeremy: Taking the time to journal my design, development, and marketing of Grades on my Tapity blog was one of the best marketing decisions I ever made. I started the blog after reading Tribes Portfolio, Seth Godins inspiring book on leadership. The back cover of that book says, If you think leadership is only for other people, youre wrong. We need YOU to lead us. At that time, I didnt really believe him, but it did inspire me to try to learn how to build successful iPhone applications and to see if anyone would want to follow along. Keep in mind, at this point I hadnt the slightest knowledge of how to design, develop, or market for the iPhone. I was a nobody in the iPhone development community, armed only with a passion for user interface design, a web development background, and an inspiration to lead. I was astonished to see it actually work. After a few months of painstakingly blogging into the air (hey, I did get a few comments), tap tap tapone of the most successful iPhone development shops out therenoticed the blog because I had been discussing some of the strategies they used. They blogged about it. Since then, Tapity has grown in influence and has given me the opportunity to learn from and engage with some of the most successful developers out there. But so what Why should you care about gaining respect in the iPhone developer community I wondered the same thing. After all, my target market is college students, not iPhone developers. The answer to that question, I found, is twofold. First, Apple does a decent job at documenting the basics of the App Store process, but much of the way the App Store works remains a mystery. Luckily, the iPhone development community is tremendous. By earning their respect by sharing my own experiences, I have gained access to a wealth of anecdotes, data points, and seasoned advice that fill a good number of the gaps Apple neglects to talk about. Second, iPhone app marketing is largely about connections. Maybe I didnt get too many college students interested in Grades directly by writing a blog, but I certainly got the eyeballs of some influential people in the press, and, more importantly, the attention of the customer every iPhone developer should do anything to woo: Apple. Apple employeesthe people who decide what gets featured on the App Storeare real people they read these kinds of blogs. I bet that doing the blog played a big role in being prominently featured by Apple the week after Grades launched. Ken: While you are an actual student in college, you are also a student of the App Store. How did you first begin learning about the inner details of the App Store, and how have you discovered many of the tips and tricks that are now in your toolkit Jeremy: Apple doesnt like to talk about the mechanics of the App Store, but there is definitely a wealth of information available you just have to dig for it. I started by absorbing all the information developers have posted on their blogs: sales, diagrams, ups and downs, lessons learned. I also did a lot of primary research. Its simpler than it sounds. A lot of data and insight can be found by simply observing the App Store and the apps that do and dont make it. Look through the Top 100 chart and think about why those apps appealed to people. Starting with their website, try to see what kind of marketing they did. You can also use Google and Twitter search to see what kind of buzz theyve been getting (and through what venues). Read reviewswhat do people appreciate in an app and what do they tend to complain about Youll notice that people will often leave bad reviews simply because the app doesnt include a feature they imagined it should. Based on this, I realized that my app had to be extremely focused on the task at hand: calculating the grades you need. I could have included all kinds of neat class management features like assignment due dates and scheduling features (the more features the better, right). Doing that, however, would cause users to desire infinitely more features in a category I really couldnt compete in (class management). The result would either be unsatisfied users or a cluttered mess. So, definitely read reviews, especially of apps in your niche. In the end, though, the iPhone developer community is far and away the most valuable resource for figuring out how the App Store works. This goes back to the importance of developing a network of iPhone developers you respect and who respect youand who are willing to share their experiences and insights. Ken: Expound on the importance of the iPhone developer community. Provide an example where you have seen that interacting with them helped you learn something you didnt know. Jeremy: Ill share how I came upon a trick that made Grades stay at the top of the Education categorys front page for an entire day. A few days before I launched Grades I wanted to know what I should set as the release date, so I asked my developer friends on Twitter. I learned from another developer that you can set the release date to some time in the future and then on the day you plan to launch, set it back to that particular day. With that information, I discovered an amazingly valuable trick. The front page of any given category (in my case, Education) on the iPhone App Store, by default, is sorted by Release Date. By looking at several category pages, however, I realized that it is sorted not only by date, but by time as well (with the most recent apps showing up first). Since most developers dont tinker with their release dates, most new apps show up around midnight. Knowing this, I set my release date to some arbitrary date in the future, then at 6:00 a. m. on launch day (Monday) I set the release date back to Monday. Since the other new apps came out at midnight and mine came out at 6:00 a. m. mine was technically more recent and, thus, remained at the top of the new apps list for almost an entire day Moral of the story: tapping into the experiences of other developers can help you come up with strategies and tricks of your own. Note that the App Store is constantly changing, so I cannot promise that this technique (or any, for that matter) will always work. Ken: Grades had a very specific marketing plan, and when it launched, you began getting buzz even before anyone really wrote about it. What did that marketing plan include and how did you ensure that you successfully executed it Jeremy: I would make a distinction between my marketing plan and my launch plan. I started marketing Grades a year before it launched by simply writing about the ups and downs of development on my blog and getting noticed in the development community. My general marketing plan also included the following: Build a following on Twitter by tweeting about iPhone design and marketing strategies. Set up a beta program months before launchingby launch time I had an army of beta testers who loved the app. This was crucial in establishing a solid base of glowing reviews on launch day. Design a good-looking pre-launch website where people could sign up to be notified on launch day. So, my marketing really started many months before launch, but a few weeks before my planned launch date, I started putting my launch plan into action, which included the following: Engaged a lot of the top bloggers, influential techies, and Apple employees on Twitter. I never mentioned Grades explicitly, but in some cases the mere act of following them on Twitter was enough to spark their interest in Grades since I mentioned it on my Twitter profile. Allowed MacStories, a large Mac blog, to post a preview and promo code giveaway. Submitted review requests to all the major review websites prior to launch. It is best for reviews to be concentrated around launch day, so send your requests a week or more before launch in order to give them time to write their reviews. Engaged with local press and scored a video interview as well as a Facebook post to the unofficial North Carolina Facebook page (48,000 fans) and a post to the official Facebook page for my university, UNC Charlotte (7,000 fans). As you noted, this generated quite a bit of launch buzz (especially on Twitter) and that buzz alone pushed the app into the Top 100 list in Education even before it received any press coverage. Ken: What is the most important element when launching an app Once launched, what are some ways to keep an app charting high in the rankings Jeremy: Two words: Apple (oh, wait, thats one word). This applies especially to hit-based apps (mentioned earlier), but any kind of promotion you get pales in comparison to being featured by Apple. This isnt all about luck, though. I was fairly certain my app would be featured by Apple (and was delighted when it was featured just a week after launch). It starts with the app itself: your app must meet or exceed Apples standards of quality and polish, and the idea behind it must be solid. As I mentioned earlier, I think gaining the respect of the iPhone developer community also greatly increases your chances of being noticed by Apple. Finally, youve got to make your own splash if you want Apple to make you a bigger one. I built up a bunch of pre-launch buzz and then launched with quite a bit of fanfare, scoring some decent press along the way. If you dont bother to do great marketing yourself, dont expect Apple to do it for you. Its tough to stay high on the rankings. Even most of the top apps fall out of the Top 100 eventually. If you are doing the hit-based approach, you want the initial spike to be as high as possible and the fall to be as gradual as possible. Major updates can help including Facebook, Twitter, and email sharing features within the app can help being featured by Apple in staff picks can really help. If youve priced your app high enough you can experiment with advertising within other apps or online. I havent tried this since it would be difficult to have a great ROI for a 0.99 app. These things may help your app have a soft landing somewhere on the Top 100 chart of your category, which will also help with sustained sales. TouchArcade: Arnold Kim Websites: MacRumors TouchArcade Background: Arnold Kim (often referred to as Arn online) is the owner of MacRumors, a popular Apple rumors website. Seeing the importance of the iPhone platform, Arnold opened TouchArcade in 2008, dedicating it to game reviews. It is extremely popular, with more than 40,000 active members. Ken: Touch Arcade is one of the most popular iPhone gaming review sites on the Web, and as such, you probably receive a very large number of review requests. What makes a request stand out What are the biggest mistakes developers make when they submit review requests What almost automatically prevents them from being considered Arnold: Yes, we do get a large number of requests for reviews and we try to examine each one. Even so, the volume can be overwhelming at times. Given the number of apps coming out for the iPhone, TouchArcade is about game discovery as much as it is about reviews. While I cant say theres any one thing that a developer could do to automatically prevent them from being considered, there are many seemingly obvious things that developers should be doing. When submitting a game for review to TouchArcade or any review site, I recommend that developers include their game information (name and description), screenshots, iTunes URL, and a link to a video. While each of these items may seem incredibly basic, a great many requests we receive dont include all these items. Anything a developer can do in their review submission to give us a sense of what the game is about is going to be incredibly helpful and will help them stand out from the pack. Basic information like the iTunes URL is often omitted and can make it harder for us to even find the game in the App Store. Screenshots are eye-catching, and in our case, a video can easily convey the game play both to us as well as potential players. At that point, an app has a much better chance of standing on its own merits rather than potentially being lost in the crowd. TouchArcade also hosts a very active player community that is always on the lookout for great new games. Preparing a game play video for launch serves the additional purpose of advertising to your customers. Due to the unpredictability of Apples approval process, Ive seen many developers games launch without videos in place, and I think thats a huge opportunity lost. An apps launch in the App Store is a critical time and frequently results in a large spike in sales. Everything you can do to build buzz, sales, and interest at that time will build momentum for long-term success. Ken: If someone submits a request to you (or to other sites) and gets no response back and never receives a review, how persistent should this person be in trying again When should the person give up trying Is there anything that can be done that would change your mind and make you want to review the app Similarly, if a developer who has had a review in the past submits a review request to you, what types of changes in the app would you look for to find it worth writing about again Arnold: Unfortunately, we have trouble replying to each review request. I know this can be frustrating for developers not to get some acknowledgment back. Unfortunately, due to the pace of the App Store, if weve already evaluated an app and decided we arent going to review it, its unlikely well return to it in the future. Sending in a couple of requests is fine, as things can get lost in the mix. Major updates to games, however, will have us reconsider games for review, so its always worth keeping us updated with those changes. If we pass or miss your game, we might change our minds if we see a lot of interest and reaction to a game in our forums. As we said, our forum community is very active and developers have had a lot of luck generating interest in their games there. There have been occasions that we might have skipped a game, only to return to it due to the popularity in our community. Ken: From all the games youve played and reviewed since the App Store opened, what do you consider the elements for a long-term successful app What do you think developers need to do to keep apps thriving once the buzz of a review is over Arnold: Thats a bit of a tricky question. Long-term success with a single game or app is such a rare thing in the App Store. There are probably a handful of apps that can really be considered long-term successes. I think what is a much more reasonable goal is trying to attain long-term success as a developer potentially across multiple titles. The TouchArcade community has brought developers and players together, and Ive found that many of the successful developers have been able to build up a fan base for their games. So, building your own personal brand and community of customers will help you establish long-term success, and also helps you get noticed by review sites. RecapMay 12th, 2015 Philippe Comments off I did not order a watch at 3 in the morning. I wanted to see one in the store first. And I was instantly smitten: much nicer than I expected, and nicer to boot. So I ordered one, and thought about replacing my Pebble. Delivery in June. The notifications with the Taptic engine are much nicer that the Pebble. It actually respects the 8220do not disturb8221 settings that I set on my Phone. I can interact (albeit in a limited fashion) the watch, it8217s very much interactive. Having Passbook on the watch is the best use of it yet (hello, TrainScan ). And the voice phone calls are just plain cool. I did not try to get a Blue Developer watch. It8217s just not my colour. But we got one for the office, to try out and perhaps prototype some interactions with our mobile apps. If I learned anything, it8217s that you have to develop on real hardware, the simulator won8217t cut it. I wore that watch for a week, to see how I would like it. And it8217s nicer than I expected: the fluoroelastomer band doesn8217t scratch the palm rest of my MacBook Pro (1), the battery lasts all day without any kind of special management, and the taptic notifications to stand up are a lot less disturbing than I thought they would be. That was another concern: when I8217m 8220in the zone8221, writing code, I want to be left alone and not knocked out of the zone. In practice, the discreet tap on the wrist was subtle enough to ignore and stay in the zone if I wanted to. However, it wasn8217t all roses and kittens. iMessage notifications were not always coming through, in particular from my wife, which was infuriating. I have to manually start my exercise programs, and even with two hours of bike riding a day it would only say 822028 minutes out of 60, you missed your goal8221. Knowing my heart rate when I8217m exercising is nice, but I exercised for years without it and don8217t view it as indispensable. This basic 42mm watch costs 519 in Canada. When you add taxes, that8217s 600. It8217s a nice watch, but not worth that to me. My wrist is back to being free, for now. Addendum: the more I think about it, the more it8217s not a question of price. Even if it was 200 I would not purchase it because I don8217t see myself wearing it everyday. This watch just isn8217t compelling enough to have earned a place on my wrist. A lot of what it promises (Pay, great 3rd party integrations like Dark Sky notifications) just aren8217t available where I live. (1) That was actually my main concern: other watches I tried had a metal clasp or nub that scratched the surface of the palm rest, making me remove them before sitting for work, which makes them a lot less interesting. If you want to build software using the new default templates on Xcode 4.2, you have some work to do for older devices (anything that can8217t run iOS 5). For some unknown reason, the variable (ARCHSSTANDARD32BIT). which used to expand to armv6 armv7 now expands only to armv7 . Furthermore, there is a new entry in the default Info. plist which will prevent Xcode from even uploading the binary to your device. Finally, there are issues with the compiler8217s 8216thumbnail generation8217 code 8216Thumb code8217 generation in Xcode 4.2. You can disable that compiler option for armv6 builds in Xcode. I have a 2nd generation iPod Touch that I use daily. It runs iOS 4.2.1, the latest it will ever run. This is essentially the same hardware as an iPhone 3G in terms of capabilities. I also have a 1st gen Touch, but it8217s getting used less and less as I target iOS 4 as the earliest capable version. I8217m not going to iOS 5 yet because my main device is still iOS 4. When I create a new project, I use iOS 5 as the SDK and iOS 4.2 as the deployment target. In theory, this allows me to target all devices that can run iOS 4, which includes my beloved Touch. To make this work properly, you will want to do three things: In your Project8217s Build Settings, locate the 8220Architectures8221 line. It should say (ARCHSSTANDARD32BIT). Edit it to contain two entries: armv6 and armv7. In your Project8217s Info. plist, locate the entry for 8220Required device capabilities8221 and delete it. If you expand it, you will see that it contains only armv7.Bonus Thanks to jamesthomson. there are issues with clang-llvm 3.0 on armv6 devices. In your Project8217s Build Settings, locate 8220Other C flags8221 and add 8220-mno-thumb8221 to the armv6 architecture. When radar comes back online, I8217ll file the bug (which will undoubtedly be marked 8220Duplicate8221) A software coop At our local Cocoaheads chapter, we started dreaming in December8230 What if we pooled our resources and multiple talents to create a software 8220co-op8221 Shared resources, low buy-in, extra exposure and marketing8230 Over the holidays, Cocoaminded was born. We have a domain, so we must exist, right Early January, Mark had an idea. What if we all worked together on a small iPhone app to promote our other apps, and learn something in the process Introducing Tweety10 Mark8217s idea was to expand on his HockeyTweet to create an Olympic-themed Twitter client. It would have a live newsfeed (from Twitter, of course), medal count and schedule. It would use web services to serve the data And just like that, we decided to start what became Tweety10 . The first 80 We all got together on Sunday, January 10th at The Code Factory and brought our laptops. Mark even brought his 248243 display. At 9:30, we had a kickoff meeting where we decided that at 5:00, no matter what, we would all go home. And we would decide if the app was in a good enough shape to continue working on it, with the goal of submitting within two weeks to the App Store. I was nominated as Project Manager, which means that I was responsible for the big picture, so to speak. Given my past experience, here is what I had planned: Each feature of the application, for example the News view, the Medals view, etc8230 was written on a 32155 index card. Features would be then assigned, and divided into subfeatures as necessary. For the News view, you had the actual view, the Controller (UITableViewController, in this case) and the model, along with the web service. We wrote those subfeatures on cards The idea was, whatever was on a card should represent about an hour8217s worth of work. If it took more than an hour, you made a new card. When you were done, you asked for a new card. Version control with Mercurial. I suggested Mercurial (hg) early on because it is fast, simple and distributed. It also has a fairly quick learning curve, meaning I would not have to spend a lot of time explaining it to everyone. Mercurial had a couple of small glitches that were due to my unpreparedness, but overall it was very satisfactory. We would use BitBucket. org to store our common code repository. BitBucket has a free, private repository (and unlimited public repositories). It was extremely simple to create the private project and add the other seven developers as writers to the project. You can also assign read-only access if you want: it is simple and quick, much like Mercurial itself. Starting from the skeleton application (a variant of the Tab Bar Application Xcode template), we would add source code and resources as needed, and push to the common repository as often as possible. Continuous integration was the word. I spent my day making cards, troubleshooting issues, helping out with code problems and generally having a blast integrating all of the code into a build system on my own computer. It was exhilarating to keep feeding six smart people with enough information to keep them busy, while at the same time making sure that they are not stuck on a problem or bored and going off-spec. The index cards were a hit, and BitBucket performed admirably. At the end of the day, we decided we had an app, and it was worth continuing towards our goal of putting an app in the App Store. The other 80 Since we would not work in the same area anymore, I immediately transcribed all the cards on a Wiki page in BitBucket. This allowed us to put our name next to a virtual card and claim it. We could add cards, and mark them as complete when the work was done. We started using Skype8217s Chat feature to create a private chat amongst all of us. The great thing was, you did not have to stay logged-in like you would for IRC. If you disconnected from the chat, as soon as you re-connected Skype updated your chat window and you could see all of the conversation that you had missed. This is a great feature. Although it was not formal, it was very helpful to meet two to three hours every week for NSCoder Nights. It was a great way to gauge progress and help each other out with all the little things that stop us from time to time. We finalized our artwork and installed localizations. keeping abreast of changes in localizable files as much as possible (this late, the changes were far between). Real artists ship8230 then get rejected We submitted to the app store a week before the Olympics were due to start, and after three days got rejected because we used the word 8220Olympics8221 in our keywords. Oops I wonder how people who live on the Olympic peninsula feel8230 We removed the keyword, re-submitted and after another four days of waiting8230 Tweety10 is available on the App Store. It8217s free, give it a try Post-mortem Having a real, in-person kick-off day for the project helped tremendously. This would not have happened otherwise. Most of our subsequent interactions were online via email, Skype or BitBucket and if we had not smoothed out the communication channels beforehand, the friction would have been too great. Mercurial is a great version-control system. Once we got past the initial hurdles of merging (hg does not come with a built-in merge tool, you have to set it up) and pushing (Mercurial Keyring Extension is a must). BitBucket, with its one free private project, was an awesome instrument in communication via code and issues. You get an email when an issue is created or updated, and you can resolve issues by pushing a change containing text like 8220Fixes 238243. Finally, I was delighted to see that as a group, we worked really well together. I hope we all gained some valuable knowledge and experience with this project I certainly did. This was really a case of the whole being larger than the sum of its parts I hope you will enjoy the app and the 2010 Winter Olympics in Vancouver, Canada . Displaying ads For a project I8217m working on, I had the need to display inline ads within a UITableView of news. My initial thought was simply to create a different kind of cell every 10 cells, and that cell knows how to display itself: This works. There is a CMAdImageTableViewCell created every 10 cells. And since the UITableView delegate can get the -(void) tableView: didDeselectRowAtIndexPath: message, you have a chance to intercept a tap on the ad cell and send the user to the ad8217s website. However, you have to do some bookkeeping. For instance, the total number of cells will be the sum of all the news cells and your ad cells, or news count news count 10. You also have to find the proper offset in your model when you get an indexPath, etc. Not difficult, but annoying. Another issue is that TableView cells all look and behave the same. An Ad cell doesn8217t say 8220I8217m an ad8221, it just says 8220I8217m another cell8221, by the way it scrolls. Your ad design will probably be different than your news design to tell them apart, but it would be nice to have another, subtle way to differentiate the ads. Section Headers UITableViews can be separated in sections, with an optional header and footer. These sections stay on screen, at the top and/or bottom, and are overlaid on top of the UITableView8217s actual data. They can be semi-transparent, allowing to to see the table8217s data underneath. You can see sections in action in many apps, including the Contacts application on your iPhone: notice the section headers 8220A8221, 8220B8221, 8220C8221. as you scroll down To create sections, just return the number of sections in your delegate8217s -(NSInteger) tableView: numberOfRowsInSection. Once you specify more than one section, you can set a section header8217s appearance by responding with a UIView to -(UIView) tableView: viewForHeaderInSection: in your UITableView8217s delegate. This is a full-fledged UIView, so you can do things like drawing with Core Graphics or adding a complete view hierarchy. For the simple case of an ad, if you already have a PNG with the ad to display, you can simply do: I made the header with a semi-transparent white background so you can see a little bit of the underlying news as you scroll by, giving the overlay a nicer appearance. You can adjust it to suit your needs. Esto es genial. The ads stay on-screen, on top of the content, and they don8217t interfere with it. There8217s only one problem8230 You can8217t tap on section headers. There is no delegate method to tell you what section header was tapped. UIButton to the rescue What if, instead of embedding a UIImageView, you embedded a UIButton in your customView UIButton is a subclass of UIView, but it handles events and can dispatch on target-action. Plus, you can add an image to a button Let8217s try this: The difference with UIImageView is the target-action method. We added a new target ( self ), with the method headerTapped: (defined above) for the event UIControlEventTouchUpInside. You can view all events handled by UIButton, but I recommend TouchUpInside because it is sent when the user lifts her finger while inside your button. If she slides out of the button the action is not sent and she can effectively 8220cancel8221 the button8217s activation. Voi You now have a section header that responds to taps. Notes This code uses hard-coded numbers for example purposes. Use macros or consts in your own code, not magic numbers Also, creating custom UIViews is expensive. You don8217t want to do it every time viewForHeaderInSection: is called as this will impact performance. Once you create a UIView, save it in a mutable array or dictionary and cache it for the next time you are called. This post applies to all Cocoa apps, whether on the desktop or on the iPhone. When you want to localize your application, you can take several routes. No nibs, only. strings files The first one is to not use nibs (or xibs. in the new parlance). If you build everything programmatically, alloc and - init - ing your controls and your views, you can store all the strings in. strings files. These files are simple key-value pairs of Unicode-encoded strings. Call the files 8220Localizable. strings8221, drop them in the appropriate language folders (English. lproj, French. lproj, etc8230). To use, simply call call: This technique is important even if you have nib files, because most of your strings are probably in. strings files already. Don8217t use hard-coded strings for anything that is user-visible. Only use hard-coded keys. Use nibs This looks easy: duplicate your English nib, move it to the appropriate folder, open it in Interface Builder and translate all the strings directly in IB. This is very bad . Don8217t do it. It8217s unmaintainable: as soon as you change one thing in the original nib, you have to do it in one or more other nibs. It8217s error-prone: you can easily disconnect a binding without realizing it, and Undo support in IB is spotty at best (I don8217t rely on it). By the time you realize your mistake, it may be too late and you have to revert everything. It8217s not versionable: although xib files are XML files, they are not meant to be user-editable. Think of them as binary files. You wouldn8217t merge binary files now, would you It8217s hard to do: there are many nooks and crannies where localizable strings are found in IB (tooltips), you8217re bound to forget some of them in some language. It needs a developer: you would not hand off a nib file to a translator and expect him to know all of the above: there is some training involved. And even if you have the Fear of God when editing nib files (because you8217ve been burnt before by a disconnected IBOutlet), chances are your translator has no such qualms. Translators want strings files, not nib files You could use Wil Shipley8217s approach of translating everything at run-time. That approach has one great advantage: everything is driven by strings files, which only contain strings (duh). Your translator(s) will do a great job with them, and you can easily diff the results in your own version control system when the translations come back. There are, however, drawbacks to this approach. Since everything happens at run-time: You have to ship and execute more code than necessary (this is a minor point, but still valid for the iPhone since it is very resource-limited). You can only see the results by launching your app in the appropriate language, switching using the International Settings panel, which is tedious. A compile-time approach My approach expands on Brian Dunagan8217s use of ibtools and genstrings . Xcode has excellent build scriptability due to Run Script build phases. In this example, we will use a script to generate a localized French xib from an English xib, using a strings file as a template for translation. First, create a French version of your xib file by adding a French localization to your English xib file. Assuming it is called 8220MainWindow. xib8221, select the xib file, choose File Get Info and in the 8220General8221 pane click 8220Add Localization8221. Type 8220French8221. This will create the 8220French. lproj8221 folder, which will contain a copy of the English MainWindow. xib. Next, add a Run Script phase to your application target: Finally, enter this as your script: Repeat each pair of lines for each xib you need to localize, and adjust the names accordingly. The first command extracts all the localizable strings from your English xib, and stores them in English. lproj/MainWindow. strings. This is your reference file: add it to version control, but you do not need to add it to your application. You can add it to your project, but make sure it is not included in your app bundle (it is useless at runtime). The second command takes a French-localized version of the same strings file ( French. lproj/MainWindow. strings ) and, using the English xib as a template, generates the French xib. Wait a moment8230 If you followed so far, build your app. The script should fail, because French. lproj/MainWindow. strings does not exist yet. Just make a copy of English. lproj/MainWindow. strings and put it in the French folder. Just like the English MainWindow. strings. you want to add this file to version control and your project, but not to your app8217s resources . If you build again, everything should go fine and your French MainWindow. xib should be created8230 in English. Translation Of course, you have to translate the French MainWindow. strings. Mine looks a bit like this: You can send this file to your translator, and instruct her to only translate the words in quotes on the right-side of the equal (82208221) sign. Don8217t touch anything else . But8230 the Fear of God Everything else in this file is necessary for ibtool to do its job properly, and should not be touched. There are two safeguards against you (or your translator) accidentally touching this information: You have the original English file. When the file comes back from your translator, you can diff it against the original (which is in English, remember) and see that she has followed your instructions (or not). It should be pretty easy to spot the differences with FileMerge. Every build, the script re-creates the English MainWindow. strings file. Your version control system should flag any differences immediately. For instance, if you added a label, you would see it in your new English file and you could apply the exact same change to your French file, and make a note to send it for translation again. I found that these two safeguards more than compensated for the fact that the generated strings file are really source code, since they contain essential information for ibtool to translate properly. Summary Since everything happens at compile-time, my solution has none of the drawbacks of Wil8217s solution: No extra code needed. You can look at a generated xib file in Interface Builder and immediately see any layout issues you might have. In this case, change the English xib, rebuild and check again. Remember, these files should be added to version control, but not to your app bundle: And this file should be added to your app bundle, but not to version control (since it is generated each time): Now, every time you build, you will generate your French interface and it will be added to your app. Simple y eficiente. I was fortunate enough to attend the fourth edition of the C4 conference in Chicago, September 25th to the 27th. Synopsis C4 is a developer conference, oriented towards Mac and iPhone independent (8220indie8221) developers. The talks are intended to get you out of your comfort zone, and to expose you to new ideas. To make you think about a new way to explore problems. This year, several BlitzTalks were presented. These talks are five minutes long and have 20 slides, auto-advancing every 15 seconds. It is fair to say that the BlitzTalks stole the show and were very appreciated by the audience. It was obvious that a lot of craftmanship went into each of those bite-sized talks. I gave a BlitzTalk at C43, which was titled 8220Friction-free documentation8221 and was very well-received. I have included it in this post for completeness8217 sake, because I obviously did not take notes during my own talk. Juxtaposition One of the funnier, and probably coincidental, aspect of this year8217s C4 was all the contradictory advice that was given. For instance, 8220you should have a web form for contact info8221 (Aspeslagh) vs 8220You should never have a web form8221 (Welch). Or 8220Don8217t use private APIs8221 (Drance) to 8220Here8217s how to load a plugin in 64 bits now that Input Managers are gone8221 (Morrisson). Or 8220JSTalk is the future. Applescript is dead8221 (Rentzsch) to 8220You should always have an AppleScript interface8221 (Correia). After all, the conference was exciting, thought-provoking and insightful. The food was excellent, and a lot of beer was drunk. Apologies in advance8230 This is my account. It has my biases. I may have summarized things in my own words, this is not verbatim . For that, you will have to wait for the videos. I took quite a few notes, but some talks just did not lend themselves to note-taking. For example, Mark Boszko8217s excellent 8220Video and You8221 was, well, very visual, and I don8217t draw that fast. It was especially hard to take notes in the BlitzTalks, they were, as Mike Ash put it, 8220like a shotgun blast to the frontal lobes, in a good way 8220. So this is a transcription of my notes. There are probably some errors in there if you see some please let me know and I will gladly fix them. And if I did not capture your talk fully, or at all, that can also mean that I was so absorbed by it that I could not take notes. I do have a special apology for Marshall Culpepper. I do not have any notes from his talk about Appcelerator, but the only reason is that I was physically drained from giving my BlitzTalk, which felt like giving a 30-minute talk in 5 minutes. That8217s a lame excuse, but it8217s the only one I have. Full-length talks Rentzsch 8211 JSTalk JSTalk is a language with optional bracket syntax, so it is easily accessible to both Obj-C and Javascript developers One will note that JSTalk is intended for Desktop applications, while Objective-J (see 280North) is intended for Web apps. JSTalk contains a framework, an optional editor and a command-line tool. You can add JSTalk support to your app with one line of code: JSTalk listen. This exposes your classes and object model in much the same way that FScriptAnywhere does. No need to write an object model wrapper like you do for AppleScript. Benefits: fast and easy to do Drawbacks: everything is exposed, nothing is documented unless you have sample code. Note that you can save a JSTalk script as a truly stand-alone applet, as the script bundle can contain the JSTalk framework, which is pretty small. Finally, JSTalk isn8217t really about Javascript, it8217s about scripting over Distributed Objects. Because that8217s really what8217s going on behind the scenes, as opposed to AppleEvents. Drance 8211 How to be a Good Developer Matt Drance was a developer at Apple, moving from DTS to System Software. He became indie a few weeks ago and would like to share, from the inside, how to be a Good Developer. First, you must have and cultivate your contacts at Apple. To do this, it helps a lot if you make great stuff. Find your focus, and polish that application. Don8217t be shy, do some marketing and it will attract Apple8217s attention. Get listed on MacOSX downloads: it8217s free. Adopt Apple technologies early and often. Submit to the ADA: you may not win, but some smart and influential people will look at your application. Go to Apple Events as much as you can. WWDC is not mandatory every year, but don8217t avoid it either. If there are TechTalks or kitchens in your area (or relatively close), try to attend as much as possible. When you have contacts at Apple, stay in touch. Sending promo codes to Apple employees is a great way to do this. Information, Organization and Diplomacy Information Log bugs If it8217s not in Radar, it does not exist. Never assume that Apple knows. Try to log good bugs. For the title, think keywords: ER (enhancement), REGR (regression), 10A342 (build number). Note: bug titles are editable, so make sure that this information is also in the description. More info is better. Shark samples are very useful. If you can, attach the smallest sample project that reproduces the issue. A screen recording is also a very good way to explain a problem: more often than not, an engineer will look at a screencast and think: 8220I know exactly why this is happening8221. Esto es bueno. Think big There may be a larger perspective here. You don8217t know who else can be affected by this, might be thousands. Your Enhancement Request can make Apple products better. For instance, the overlay controls in the iPhone camera were originally an ER for putting mustaches in front of people8217s faces. Now they are used for Augmented Reality apps on the iPhone. Duplicates happen, but they are important in weighing a bug. A good bug might also contain more info and help pinpoint the problem. Answer your bugs. You may disagree politely (for instance 8220as designed8221). Be civil, but you can also ask that it may be converted to a feature request. Make sure that documentation bugs are marked as such, as they are on a different track / release schedule. If the Next Major OS release is not soon enough, you can request a Clone for Software Update. No guarantees, of course. Get organized Your elevator pitch for your bugs should always be ready. You should know your bug numbers: keep a prioritized hitlist / wishlist, complete with bug numbers. If it is a clear, brief and forwardable document, and you send it to a contact at Apple, it has a good chance of being passed around. Diplomacy and Trust It is very important to establish trust. Assume things are under NDA. If unsure, ask. Keep things quiet: don8217t blab about next releases, and the possible fixes in them. If you see one of your Apple contacts listed in the press, on a blog, something, tip them off. Don8217t name names: poorguyapple may not have been supposed to help you Stick to the public API. Private APIs will break the trust you spent years building up. Control yourself. Be fair in public, and firm in private. Be nice in Radar, and think before speaking. Overall, stay positive and friendly. Apple is made of humans too Dribin 8211 Unit Tests These tests are difficult to automate. They are usually slow. This is often your UI. Several solutions exist for this (e. g. Eggplant) but they tend to be very high-maintenance. You are better off having good QA people, and beta testers. System tests often don8217t do well with edge cases, because they are so rare. Functional Tests These tests can be fully automated, or launched on-demand (e. g. nightly). They tend to test several areas in-depth (ex: file I/O). They can be relatively slow, their time is counted in minutes. 20 minutes is not unusual. Unit Tests These tests are very, very fast. So fast that you could run them at each compile and not notice. His app has over 200 unit tests and they run in less than a second. Unit Tests are always automated, repeatable and self-checking (meaning that they report failures in a standard manner, be it a build break or an exit code). Unit tests should not talk to a database, the network, the file system, or require a special setup of your environment. UTs rely a lot on fake (mock) objects. Por ejemplo. Core Data has the option of an in-memory store which is blazingly fast because it is not serialized to disk on every transaction. That has limited uses in the real world, but for Unit Tests it is essential. Benefits include regression testing (did I break something that worked 5 minutes ago), the ability to refactor, code that is cleaner and easier to maintain. It also allows testing hard-to-run conditions (what if that counter was 40,000) and helps pinpoint the locality (scope) of errors. Tests are often used as sample code, and so promote faster development. Refactoring is improving your design after it has been written, in order to make your software easiter to understand. It will help you find bugs, and program faster, but to do that you have to have good unit tests. Note that the MVC pattern in general makes code easier to test (see the Delegate pattern), but watch out for huge, all-encompassing controller classes. Wayer 8211 Translucent databases What if you had a database of truly anonymous data Note that most americans can be uniquely identified by age, sex and zip code. Scary, huh If you remove the root user, you push the security to the edge, to your users: they have to remember their passwords since what is stored in the database is a hash combining their name and password. That way, if the database is compromised, no private information is divulged. You may run the names through a simplification function first (e. g. ALLCAPS, no spaces) to help with entry name variation. If you do not have a password-recovery system (and you may not have one, it is acceptable) you may have to throw away data, make a new account. This might be acceptable (e. g. throwaway email accounts) or not (bank / health records). Welch 8211 Carrot and the Stick What to do when your users are angry at you. Listen to your users: they have something to say. As long as they are talking to you, they are still passionate about your product. Esto es bueno. Even if they use profanity, they still are professional. Communication is a two-way street. Engage your users with modern means of communication. You can even call them: they will listen. Don8217t have a simple web form as the only way to reach you. Don8217t tell them what to think. 8220Not a bug, but a feature8221 is not the correct response. Your users are human, too. And if they can feel that you are human, that will go a long way. Don8217t try to cater to every user. If you honestly can8217t do a certain thing, because you either can8217t or there is no business case for it, tell them. And maybe recommend another product. You will make two people happy: the user who wanted to buy your product (but won8217t) and the other company whose product you recommend. And you have not lost anything: it8217s not money you would have had anyway. But this kind of honesty tends to come back in terms of trust, especially for future products. Finally, there are two classes of users whom you may ignore, because the insignificant amount of money you will get from them pales in comparison to the time that they will cost you. The New Media Douchebag can be totally ignored. The Scobles, Winers and Arringtons pretend to wield a lot of power but in fact they do not. Don8217t be intimidated by them. They are a fickle bunch, and if you start to kiss their ass they will love you until the next shiny thing comes around, which may be tomorrow. And then you will have kissed ass for nothing. The blogloon can also be ignored. But make sure that beneath the bile that they are trying to spread there is not a valid issue. Because blogloons typically don8217t express their ideas clearly, good things can be lost in the noise. But once you have identified their issue (if there is one), you can ignore them. Fackler 8211 DVCS internals Augie Fackler wrote and maintains hg-subversion, the premier hg interface to svn. He had the following tidbits of information regarding the lesser-known DVCSs. Darcs was written by a physicist, in Haskell, over the principle of commutable patches. With those patches, you are essentially transforming your source tree from one version to another using a transform function, which is reversible. While seductive in theory, it turns out to be extremely slow in practice (on non-trivial source trees). Plus did I mention that you have to install a Haskell compiler Monotone is so security-conscious that every patch is signed, to the point that if you remove a patch in the middle of a chain, every subsequent patch has to be re-signed, in order, by the original signers. This is a big deal for most organizations, as people come and go all the time and key management becomes a nightmate. BitKeeper was the premier DVCS system, until the point where a smart kernel hacker realized he could telnet into the database, run a few commands and get a full dump with history. BK were so irate that they pulled their Open Source licenses for kernel development, and Linus had to write git (but that8217s another story all in itself). Modern DVCS are fast and work offline as well as online. They are very efficient for storage, and make revisionist history obvious. It is easy in CVS and possible in SVN to go back and change files 038 history in an undetectable manner. Not at all with DVCSs, which store md5 hashes of every change, making it easy to detect reporsitory corruption and tampering. The two main modern DVCSs are Git and Mercurial. Lloyd 8211 Cocotron Cocotron is an open-source, liberally-licensed project to port Cocoa to Windows. It is similar in intent to GnuStep, but has two big advantages. First, it runs natively on Windows. No need for a 8220Yellow Box8221 or a reboot. Second, it does not use the GPL LGPL license. Cocotron started at about the same time as GNUStep, right after the publication of the OpenStep spec in 1994. It was not open-sourced until 2006, when it became possible to do so in part because of the Xcode developer tools. Cocotron does not have native controls. Everything is custom-drawn. Implementation is surprisingly efficient: Foundation relies on 160 native OS calls, while AppKit has 200 OS calls. In graphic terms, CoreGraphics is a wrapper for the native drawing functionality. A project called Onyx 2D plans to implement the complete, native CoreGraphics suite in the near future. You can build Cocotron using cross-compilation in Xcode. There are modified versions of binutils, for example - F / - framework options are added to ld, gcc and gdb are also modified. Xcode plugins are available. Cocotron looks like a compiler to Xcode, accessible through build rules. It requires MinGW and the System headers/libs for the target system. Remote debugging of the Windows executable is possible from gdb on the Mac, and should be possible with a VM though Christopher had no first-hand experience in this. Lopp (aka Rands) 8211 Talking shit, delegating and knowning what you want When you do a presentation, have an arc, and three points. For this presentation, the arc is that software development is a series of small decisions. There are of course large decisions, but these are more milestones than the small, day-to-day decisions that we continually make: 8220what will I name this variable this class8221 etc. The milestones: Holy Shit, We could do this, We8217re doing it, I8217m screwed, We8217re screwed, Glimmer of hope, Actual hope, Done. Skills: talking shit (see Jerk City. Or don8217t. Rands disavows any knowledge of this.) You have to develop your comedy skills. It8217s the art of improvisation. With time, this will become less about the funny and more about the 8220quickly parse everything you know and find the best answer.8221 Rands believes that all geeks are extremely good at this, even though they may not show it. Delegate: We are all control freaks. We like to detect the system to figure out its rules so that we can win. And winning is good. Only problem is we8217re all very bad at something, which we may or may not be aware of. It may be graphic design. Maybe finance. Or managing a group of people to get them to do what you want. What do we do then The simple answer is to improve. We8217re so bad at this skill that if we work at it, we can improve it and it will be better. And that8217s often a good idea. The better idea is to delegate: find someone who8217s a rock star at that skill you suck so badly at. But to do that, you have to trust that others an help you. Which is difficult since you8217re a control freak, remember Each decision is an opportunity to fuck up. Knowing what you want. This takes a shit ton of work. It goes from 8220Holy shit8221 to knowing every. soltero. hecho. nunca. about something, and building your confidence about this subject. You may be a font nerd who cringes when he sees Arial, or a graphic design nerd, or a color nerd. But Knowing What You Want allows you to push all the decisions as early as possible Note: Im not sure I agree that Big Design Up Front, which was touted by Rands, is the most appropriate method, but it is certain that the earlier you make the decisions, the better your product will be. Kind of like doing the riskiest things first. Using your new skills This will help you make decisions in a crisis, and will give you leverage when negociation comes around. Because who wants to make compromises Knowing what you want gives you measure, structure, direction. Thomson 8211 MacRuby Objective-C is great, but it is not modern. It lacks several features of newer languages. Code reuse could be much better. Single inheritance is often a barrier. For instance, the Singleton design pattern implies lots of boilerplate code. Who wants to write boilerplate code Modern languages use either multiple inheritance (ugh) or mixin classes. Safety is limited. C is powerful at the price of safety. Raw pointers are often a major source of problems. Garbage collection means one less thing to worry about when writing the code you really care about. Syntactic abstraction. Why is it necessary to declare an NSArray Why aren8217t hash tables part of the language Things are getting better, slowly (e. g. foreach loops). MacRuby is not a bridge to Cocoa. It is a first-class citizen in Cocoa, with complete access to all the frameworks. It is as fast, sometimes faster than Obj-C when dispatching methods. It has IB and debugging support. When you use MacRuby, you get all the power and flexibility of a modern language. MacRuby boasts the first Ruby pre-compiler, which explains why it is so fast. However, like all duck-typed languages, you sacrifice static type safety when you use MacRuby. That may be an issue for you, but years of Objective-C have shown that programs are fairly resilient to those dynamic issues. Blitz Talks Rhyne 8211 Briefs Briefs is a small application framework that allows you to create simple mockups for the iPhone, directly on the iPhone. It is also possible to create a fairly complex application that way. Perfect for elevator pitches. Check it out at giveabrief . Aspeslagh 8211 Full Time Going indie full-time can be a lot of work. You have to automate your workflow as much as possible. Don8217t manually authorize every sale, for instance. When you build your store, assume you have more than one product. This will help tremendously when growing, Have a support form, and (if possible) a support person. Get a virtual phone number. Diversify your portfolio: people who buy one of your products are already predisposed to buying another one, especially if the experience was positive. Bobtiki 8211 Filming and photographing Check out HowTube, and github/atebits/ for SimFinger, screencasting for the iPhone. Speirs 8211 One-man band ecorner. stanford. edu is a great learning resource for things, even non-programming-related. Fraser learned all he knows about business and marketing from these free courses. Czerniak 8211 Security tools CrashWrangler is a great tool from Apple to help you analyze crashes. Dtrace for analysis. Good paper to read is Beauchamp 038 Weston. RE:Trace PyDbg is a Python debugger. Vazquez 8211 App Categories Apps on the iTunes store can be categorized in multiple ways. Here are three of them, along with the observation that you can charge a fair price for some of those apps without too much difficulty. Quick Hit 8211 Twitter, email Immersive 8211 games Accessory 8211 subordinate to main activity. For instance, a guitar tuner is subordinate to playing guitar. You are marketing to a group of enthusiasts that care about quality. There is no race to the bottom for 0.99: you can charge a good price if your application is well done and polished. Example: people that pay 10,000 for a saxophone will not mind paying 800 for a case if it is the best, toughest, lightest case out there. Correia 8211 AppleScript Matters Your application8217s scripting interface matters, because there are a lot more scripters out there than you think. And they will think up ways of using your app that you never thought of. Your scripting interface is your UI, for scripters. It does not have to be pretty, but it has to be consistent. Especially with AppleScript. Learn AS and its idioms, and adopt them in your scripting interface. For example, don8217t do 8220do new window8221 (one commanr) where 8220create new window8221 (verb, qualifier, noun) is the accepted idiom. You should design your scripting interface along with your object model. Cocoa makes this easier than you think. Benefits include connections with thousands of other apps out there, and Automator, the Scripts menu, etc. Casgrain 8211 Friction-free documentation The Blank Page syndrome Where to start can be paralyzing. Coders8217 blank pages usually have some scaffolding Help reduces your Tech Support. Time spent on Tech Support is time not spent on developing your app. Having the user help herself is always faster than email. Writing Help will pay for itself many times over. Tech Support staff can double as Technical Writers. Definitely worth it on a larger app, but not if youre just getting started. Hiring someone leads to management/synchronization issues, so friction. Keep It Simple Help is just HTML, so you could hire a web designer for your css instead of making one yourself. Help is just a localizable folder. Users expect to find Help in the Help menu (Spotlight-searchable). Do you like writing html Go nuts Its essentially Safari in a top-window. Dont overcomplicate things for now Its easy if youve never done it. Dont worry about structure: all the html files could be in the same folder. Resist the urge to write a pdf. It wont be searchable, and in most cases will open in a separate app (Preview) unless you do something clever. Dont do it, its a time sink and you will tend to sweat the details. Writing Help should be Friction-Free What tool do you currently use to capture text Text Editor Snippet editor Wiki Outliner Avoiding the Blank Page It should be easy to lay down new thoughts with your tool. No need to create a new document per page. Auto-save is great. You should have minimal structure: titles, lists, maybe bold / italics. Automatic linking between sections if you can get it. I use VoodooPad. Integrating Help in your Dev Tasks Think of Help as a Unit Test: document the feature, how it should work, then write the code for it. Dont sweat the details just yet (no screen grabs) its all code for now. Spell-check is your friend. One page per feature is a good rule of thumb. Spell-check is invaluable, as this code is not compiled but interpreted by humans. IT IS NOT A FEATURE SPEC. Just like code, you will throw some of it away, but less than you might think. Also why its important to avoid putting images in your documentation when you start: those can be expensive to re - create. Integrate Help in Version Control Sometimes simpler is better (we like to diff) Pure text, Markdown, HTML, XML, RTF, VoodooPad, OmniOutliner8230 Help should be a first-class resource in your app, just like the app icon and MainMenu. xib. Make sure it lives where your resources live. Integrate Help in your build using Shell script build phases. Automate, automate, automate8230 For instance, you could automatically convert Markdown to HTML. On-line help is seductive Just a couple of stub html files, and youre ready to go (targetblank, anyone). You can change the content without updating the whole app Dont do it unless your app depends on being on-line, since Help becomes dissociated from your app (you broke your version control). Plus your server infrastructure must be kept alive. It8217s a great way to procrastinate: Ill do it after I ship the app8230 Version Control is broken, unless you do something clever in which case youre just procrastinating Godwin-Jones 8211 Opacity Opacity is a Quartz-based, vector image editor that specializes in icons. It can save to a variety of formats using factories, most interestingly as NSView subclasses and HTML5 ltcanvasgt objects for quick prototyping. Muy recomendable. Hess 8211 Cocoa Boutique Cocoa Boutique is an open-source, in-app purchase for your app. It uses Aquatic Prime for the licensing, and php/mysql/paypal for the back-end processing. It has not been written because Wil Shipley is greedy (Golden-Braeburn). The Potion Store is also good but runs on Rails. Mitchell 8211 PyObjC It is a scripting bridge from Python to Objective-C. You can import most Cocoa frameworks directly into python. For developers, the language is faster / easier than Applescript. You can debug it with pdb. ipython gets you an interactive AppKit shell. Morisson 8211 Loading plugins in 64 bit applications I have no notes for this because I was too absorbed by the presentation. Wood 8211 Marketing The 8220Google Keyword Tool8221 helps you fine-tune your title and meta-data to rank better in Google. In general, limit your to 65 characters and your to 156 characters. Try to link yourself to your products (from a blog or your main page or something) using descriptive text, because Google indexes the link, as well as the text that generated the link. Don8217t use 8220Click Here8221 as your hyperlink text. Look for the Google Website Optimizer, it is full of good tools to help you make the most of your website by tracking where your users go and what helps them to buy your product. Have an email list with an incentive to join (eg freebie app, more templates for your app). Send good content to that mailing list so your users stay subscribed. When the time comes to announce a new product, do it on the mailing list and your users will help you with your marketing, because most of the time you give them valuable content for free, so they don8217t mind (and in fact appreciate) the occasional marketing message. These users are very good: work to keep them. They are predisposed to liking your product, and maybe recommending it to friends. That kind of marketing cannot be bought, it has to be earned. Gerbarg 8211 Compiler engineering So you found a bug, and you think the compiler is generating bad code. There are good news and bad news. Bad news: gcc8217s code is old and scary. It is very hard to go in there and find, much less fix issues. Few mortals can do this. Good news: 90 of the issues are in the front-end parser, and Apple has just released (Open Source) a new tag-team: clang/llvm. Clang is the static analyzer and llvm is a gcc front-end. clang is a compiler front-end, while llvm is a low-level virtual machine which can also generate native code. They are written in easy-to-read, easy-to-maintain C. You can subscribe and submit patches to the cfe-dev mailing list. You can check out the code from svn for clang-llvm and build it with current tools: congratulations, you have built your own compiler Louis said he was not a compiler engineer, having worked on the front-end only, and he was able in a few hours to create a patch to llvm that allows pushing and popping a stack of pragma warnings. In those few hours he also submitted the patch, got it approved and committed to the clang-llvm source tree. His contribution should appear in the next release of Xcode.


No comments:

Post a Comment