// <![CDATA[ function styleCode() { if (typeof disableStyleCode != 'undefined') { return; } var a = false; $('code').each(function() { if (!$(this).hasClass('prettyprint')) { $(this).addClass('prettyprint'); a = true; } }); if (a) { prettyPrint(); } } $(function() {styleCode();}); // ]]>
Cada vez más personas utilizan computadoras fabricadas por Apple y muchos de sus usuarios no saben que cuentan con una 'terminal'. Esta herramienta para interactuar con el sistema operativo tiene sus orígenes y espíritu en UNIX, por lo que es sumamente poderosa si la aprendes a utilizar.
¿La termi-qué?
A veces también llamada consola, dentro de tu Mac está en Aplicaciones-> Utilidades-> Terminal. Si usas spotlight (CMD + barra espaciadora) basta con que teclees 'terminal'.
¿Para qué me sirve?
Básicamente sirve para darle instrucciones a tu computadora. Un ejemplo sencillo es creando una carpeta con el comando 'mkdir' en vez de usar el menú del Finder o dando clicks en la pantalla con tu mouse.
¿Y por qué molestarse en aprender a usarla?
Generalmente un programador te daría una cátedra de todas las maravillas que puedes hacer con ella. Nosotros te comentamos que con sólo saber que existe, te conviertes en parte de un exclusivo segmento de 4% de los usuarios de Mac, y puedes hacer cosas cool e impresionar a algunos de tus amigos (e impresionarte a ti mismo en el proceso).
Así que abre tu terminal! Acá te damos 5 sencillos comandos para que le pierdas el miedo.
1. Haz hablar a tu Mac
Sólo teclea 'say Hola' y ¡escucha hablar a tu Mac! Intenta con una frase más larga o con el nombre de alguno de tus compañeros como:
2. Abre Finder
Si escribes
open .
Te abrirá una ventana de finder desde la carpeta en la que lo ejecutaste.
3. Apaga tu computadora
¿Y esto para qué? Si no lo encuentras últil pruébalo sólo por diversión, teclea:
sudo shutdown now
Te va a pedir tu password, así que introdúcelo después.
4. Cambia el formato de tus capturas de pantalla
Por defecto cuando tomas un screenshot se generan en formato PNG. Si quieres que los archivos sean más ligeros, aunque de menor calidad, puedes pedirle a tu computadora que los genere en JPG. Para esto teclea:
defaults write com.apple.screencapture type JPG
Ahora usa la secuencia habitual de CMD+Shift+3 y revisa el tamaño y calidad de la foto. Siempre puedes regresar al formato original escribiendo:
defaults write com.apple.screencapture type PNG
5. Distráete con emacs
Si no sabes que es esto, no te preocupes ¡te vas a divertir! Sólo un par de tips antes de usarlo:
1. Para salir en cualquier momento, tienes que teclear Control+x y después Control+c
2. Si todo falla cierra la ventana de la terminal
¿Listo? Teclea:
emacs
Y una vez en el menú presiona la tecla Esc, después teclea la tecla 'x'. Ahora prueba escribiendo alguno de los siguientes programas:
- tetris
- pong
- doctor
¿Te pareció divertido, frustrante, o quizá útil? Déjanos tus comentarios!
¿Te ha pasado que estás listo para empezar el proyecto nuevo que tu cliente quiere pero... todavía no se decide? Tal vez ya platicaste con él varias veces, le diste tu opinión, pero sigue indeciso y evaluando si será una buena idea, y encima quiere que se le añada otra característica más sin que se incremente el precio.
Acá te damos cuatro consejos para que cierres el proyecto y así sepas si vas a cobrar o no, dejando de perder tiempo, energías y enfoque.
1. Haz una cita
Ninguno de los siguientes puntos sirve si no puedes hacer que tu cliente comprometa un tiempo para verte. Si ya has intentado hablar mucho con él y ya está en modo esquivarte-y-no-contestarte, márcale desde otro número. Puedes comentarle que se te acaba de ocurrir algo y no le vas a robar más de cinco minutos; incluso puedes sugerir alcanzarlo en su hora de comida.
2. Prepara la propuesta
El objetivo es que lleves algo que tu cliente pueda firmar o rubricar. Nuestra sugerencia son impresiones de pantalla de la app o el proyecto. Si puedes imprimir a color y en papel grueso, todo se ve y se siente más profesional.
Otras opciones son generar una carta de aceptación (un acuerdo con los puntos que se desarrollarán), o si han mencionado o manejado contratos anteriormente, llevar uno impreso.
3. El cierre ascendente
Una vez que estés con tu cliente, tu trabajo es hacer que responda al menos cinco 'sí' a preguntas que le hagas. Éstas pueden ser obvias, pero el objetivo es mantenerlo en una actitud abierta y receptiva. Ej:
¿Te gustaría realizar el proyecto?
¿Te gustaría que más personas conocieran tu marca?
¿Crees que tus clientes se puedan beneficiar de esto?
¿Te gustaría ganar más likes/followers/clientes?
¿Te gustaría incursionar en el mundo de campañas digitales?
4. El cierre de la muerte súbita
Se breve y acota el proyecto. Si el alcance es muy largo, vete por partes y propón iniciar con unas características esenciales (quizá las primeras dos pantallas). Llega a un acuerdo sobre el punto de entrada, e invítalo a empezar.
La forma más efectiva de hacerlo es obteniendo su firma. Puedes pensar que esto resultará incómodo, pero no lo es, es una práctica común y lo más probable es que sólo te falte un poco de seguridad en ti mismo.
¡Así que prepárate para lo más importante! Saca tu propuesta y ponla sobre la mesa. Puede ser en la pantalla o en el punto que están tratando y con un bolígrafo pon tus iniciales en una esquina (el término para esto es rubricar). Esto significa que estás de acuerdo, y ahora esperas que él esté en acuerdo.
IMPORTANTE: Después de que tú firmas, no hables ni menciones nada. Te tienes que mantener callado. Tú ya hiciste tu parte y es su turno. Puede tardarse 5 minutos dándole vueltas a las hojas, leyendo los puntos, etc, etc, pero tú te debes mantener callado y de ser posible sonriendo y relajado.
Ahora, sólo hay dos resultados posibles:
a) Tu cliente firma
¡Bien! Tu trabajo ahora es seguir avanzando y obtener más firmas en más pantallas o en más puntos a desarrollar. Al llegar al acuerdo final, fija una cita inmediatamente para la próxima semana para revisar el progreso. En caso de que no hayan acordado una forma o fecha de pago, proponlo como tema a tratar en la siguiente junta.
b) Tu cliente pone excusas
¡Suerte para la próxima! Puedes dejarlo hablar y que te diga todo lo que quiera. Lo importante es que le hagas ver claramente que:
No está listo para empezar
No tiene claro lo que quiere
No seguirás invirtiendo tiempo en el proyecto
Es momento de guardar tu propuesta y prepararte para la retirada. Será tu decisión dejarle abierto que te llame en caso de que quiera continuar en un futuro.
¿Qué te parece? ¿Estás listo para cerrar ese proyecto que te ha dado dolores de cabeza? Quizá te hayan funcionado también otras técnicas, así que te invitamos a que nos las compartas y las comentemos.
// <![CDATA[ function styleCode() { if (typeof disableStyleCode != 'undefined') { return; } var a = false; $('code').each(function() { if (!$(this).hasClass('prettyprint')) { $(this).addClass('prettyprint'); a = true; } }); if (a) { prettyPrint(); } } $(function() {styleCode();}); // ]]>
Quizá estás por finalizar esa aplicación web que interactúa con Facebook... ¿y te diste cuenta que necesitas HTTPS para entregar la versión final? Encima de todo ¿tienes que entregarla en unas horas?
¡Pare de sufrir! Ya no es necesario gastar millones ni esperar días para que te autorice o te valide una autoridad certificadora. A continuación te decimos como.
Importante: Si no eres geek o una persona con conocimientos tan técnicos, ¡no te abrumes siguiendo los pasos! Mejor contáctanos y déjanos ayudarte.
La siguiente solución está basada en un caso real. Era domingo y teníamos que liberar el lunes. Todo el hosting estaba controlado por el cliente y no teníamos acceso a soporte. Para efecto práctico, utilizamos el servicio y una promoción de Godaddy de $5.99 USD y nos tardamos menos de 30 minutos en la configuración.
Es crucial aclarar que no es necesario que tu hosting esté con Godaddy. Puede estar en cualquier otro servicio, sólo necesitas tener acceso a él via SSH para poder hacer unas operaciones más adelante.
Los pasos son los siguientes:
1. Adquiere el certificado
2. Inicia la configuración
Ve a tus productos, expande 'certificados ssl' y da click en 'iniciar'.
En el panel, selecciona que será alojado en un servidor third party.
Te aparecerá ahora ingresar la solicitud para la firma del certificado. Esto se tiene que generar desde tu servidor donde está alojada la aplicación. Deja en pausa este paso e ingresa a tu servidor (normalmente vía SSH).
Crea un directorio donde lo vayas a salvar (más adelante se mencionará en la configuración como /usuario/certs), y dentro de él, ejecuta el siguiente comando:
Abre el csr en un editor de terminal como nano o vi, cópialo, y continúa el proceso de solicitud web:
vi dominio.csr
Ahora, para comprobar que eres dueño del dominio puedes seleccionar entre dos opciones. La que utilizamos en este caso, y es ideal si no tienes acceso a la configuración DNS, es la de una web control page.
4. Verifica tu dominio
Ingresa a tu panel de certificados, y en los filtros selecciona 'pending requests'. Ahí, en el área de progreso, selecciona 'what's the hold up?' y descárgate el HTML que te indican.
Vía ftp o scp, sube el archivo que acabas de descargar a la carpeta pública donde se encuentran los otros HTMLs de tu servidor.
Confirma que el archivo esté mostrándose. Normalmente es una dirección tipo http://hosting.com/archivo.html. Si no está mostrándose, reinicia tu apache o servicio web. Si está listo, ve a tu panel de certificados, y en el área de 'what's the hold up?' da click en 'verify your domain'.
5. Instala el certificado
Estás listo para bajar el certificado de tu panel. Generalmente viene en un ZIP, así que extráelo y sube a tu servidor el archivo de nombre similar a 'dominio.com.crt'.
Ahora sólo nos falta habilitar HTTPS. Este paso depende completamente de que servidor web tengas. El más común es Apache, y basta con agregar unas líneas de configuración. En nuestro caso, agregamos lo siguiente a '/etc/apache2/apache2.conf'. Asegúrate de reiniciar tu servidor una vez que hayas realizado este cambio.
Si al reiniciar tu servidor, este falla con un mensaje como: Invalid command 'SSLEngine', necesitas instalar el módulo SSL. Esto lo haces instalándolo desde la consola con:
sudo a2enmod
(...)
Which module(s) do you want to enable (wildcards ok)?
ssl
Ahora sí, ¡hemos terminado!
En realidad nosotros quedamos sorprendidos de que con solo 6 dólares y 20 minutos de nuestro tiempo pudimos habilitar navegación segura en nuestra aplicación web. ¿Qué te pareció? Por favor haznos saber si crees tener una mejor alternativa, en In2Teck siempre estamos abiertos a evaluar otras opciones :)
Hoy en día es una gran época para ser desarrollador: tutoriales y cursos gratuitos por todos lados, miles de APIs a nuestra disposición, servicios poderosos y populares que nos dan su bendición para usar su tecnología para nuestros propios productos. ¿Tienes un bug inexplicable? Busca en Stack Overflow. ¿Quieres acceso a una de las bases de datos más grandes de usuarios? Conéctalo con Facebook. ¿Servicios de telefonía y mensajería? Prueba Twilio. ¿Viralidad instantánea? Twitter, Tumblr, etc. Sí, realmente es una gran época para ser desarrollador.
El Horror
La semana pasada fue una de esas semanas de terror, en la que servicios y plataformas como Facebook Developers, Asana, Github y finalmente Gmail estuvieron caídos por horas, causando estragos entre todos los que dependemos de ellos y los usamos. En el caso particular de Facebook Developers, así vivimos nosotros la tarde del Martes 13 (¿coincidencia?) de Agosto de 2013:
5:55 pm
Mientras verificaba las pruebas finales de nuestra nueva Facebook App, recibí una notificación dentro del mismo Facebook con el siguiente mensaje: "Su cuenta de desarrollo ha sido bloqueada". Mi primera reacción: "Ok, vamos a ver de qué se trata"
5:57 pm
Le doy clic a la notificación y el único detalle que hay es "Usted no puede crear nuevas aplicaciones". ¿Crear nuevas apps de Facebook? Bueno, no debe de ser tan grave porque ya tengo mis apps creadas desde hace tiempo. Pero por si acaso, decidí entrar a Developers Facebook a revisar que todo estuviera en orden.
6:00 pm
"OMFG ¿DÓNDE ESTÁN MIS APPS? ¿DÓNDE?" La sección de Apps se encontraba totalmente vacía, sin ningún aviso, ni mensaje de error, ni nada de nada. "Ok, tranquilo Diego, tu equipo también tiene acceso a las apps y ellos seguramente no están bloqueados"
6:05 pm
"¿También recibiste la notificación de que estas bloqueado?", "Me llegó un aviso pero ni vi que era", "Umm no, no me aparecen las apps"
6:12 pm
No solo el equipo completo estábamos bloqueados, sino que de las cinco aplicaciones en producción (una de ellas a un día de su lanzamiento), solamente una estaba funcionando. Las demás habían dejado de funcionar y regresaban errores diciendo "la app no existe". Cuando tienes en producción una app móvil con más de 80 mil descargas, el producto estrella de tu cliente estrella, no quieres estar en una situación como esta. Ahora sí, el pánico se empezaba a apoderar de mí.
6:20 pm
Dentro de Developers Facebook, en la sección de Platform Status no aparecía ningún error. ¿Entonces solo nosotros fuimos bloqueados? ¿Qué hicimos para merecer este castigo?
6:33 pm
Una nueva notificación: "Usted ya no está bloqueado". ¿Fin de la pesadilla? No, las apps seguían deshabilitadas y no teníamos acceso a ellas.
7:00 pm
Un bug reportado en Facebook Developers nos hizo saber que no estábamos solos, que no era culpa de nosotros los desarrolladores. Alguien dentro de Facebook metió la pata y en grande: millones de apps deshabilitadas, cientos de miles de cuentas bloqueadas. Dentro del bug, Facebook anunciaba que ya se había solucionado, pero los usuarios seguían posteando que no era así, que la falla persistía.
7:07 pm
Facebook actualiza el estatus de sus servicios: "La falla sigue pero estamos trabajando en resolverlo". La tranquilidad volvía poco a poco, se trataba de un error en Facebook, no habíamos hecho nada malo o indebido, en unos minutos todo estaría bien. Era momento de juntar la evidencia y avisarle a los clientes lo que estaba ocurriendo.
10:50 pm
Casi cuatro horas y media después, finalmente se solucionó el problema y el mundo de las apps de Facebook volvía a ser perfecto. A nosotros nos afectó únicamente en disponibilidad de nuestras apps, pero seguramente en algún lado alguien había perdido dinero, MUCHO dinero (Farmville, The Sims o alguna de esas apps millonarias).
La Moraleja
Hubo una falla en Facebook que afectó a millones, ¿es razón para descartar su plataforma? ¿organizamos un boicot en su contra y juramos nunca más usar sus productos? La respuesta es NO. Fue un error humano, le pudo pasar a cualquiera y seguramente pasará nuevamente. ¿Qué podemos hacer ante una situación así? Nosotros recomendamos lo siguiente:
1. Conserva la calma. Tus clientes y usuarios han puesto su confianza en ti, tú eres el experto tecnológico. Si eres el primero en entrar en pánico ¿cómo crees que reaccionarán ellos? No lo olvides, mantén siempre la calma.
2. Investiga. Esta es la mejor época para ser un desarrollador, ¿recuerdas? Hay muchísima información que puedes encontrar rápidamente para saber si se trata de una falla general (le está sucediendo a otros también) o si es una falla aislada (eres el único con ese problema). Para el caso particular de los servicios y apps de Facebook, no olvides que en Developers Facebook puedes consultar el estatus de la plataforma y la base de datos de bugs en todo momento.
3. Pide ayuda y/o repórtalo. Sin importar el tipo de falla, siempre encontrarás a alguien dispuesto a ayudarte, es lo maravilloso de las comunidades de desarrollo. Si estas usando un servicio de un tercero (Facebook, Twitter, Google, etc.), seguramente hay un foro de discusión y una opción para reportar la falla.
4. Mantén informado a tus usuarios y clientes. Una rápida llamada telefónica a tus clientes explicándoles la situación los tendrá tranquilos y hacerlo habla bien de tu trabajo. Siempre será mejor que se enteren de la falla por ti que por las quejas de usuarios furiosos. Si tus apps o servicios son públicos, no olvides avisarle a los usuarios por medio de los canales que utilices (correo, blog, redes sociales).
5. Si la falla está de tu lado, arréglala.
Sigan estos sencillos pasos y todo saldrá bien, evitarán una crisis con sus clientes y usuarios (claro que siempre hay trolls) y podrán dormir tranquilos por la noche.
El pasado 11, 12 y 13 de noviembre @dmiramon, @woakin y yo estuvimos presentes en el evento de Startup Weekend organizado en el ITESM Campus Santa Fe.
Desde el primer día nos sorprendió la energía y la calidad de ideas que se expusieron en el evento. Personalmente presenté una idea de @migsho para desarrollar una plataforma de juego de 'Humanos vs Zombies', pero no resultó seleccionada.
Decidimos apoyar la idea de "Lunch Rabbit" creada por @billbabeaux. El concepto era simple y poderoso: apalancarnos de la red social más utilizada en el mundo para encontrar personas con intereses similares dentro de nuestra área de trabajo y compartir un almuerzo.
La idea fue desarrollada y, a través del proceso de maduración correspondiente a las 54 horas del evento, se refinó y expuso un demo de la idea que gustó a los jueces y la hizo ganadora del evento.
Foto con @bs y @dweekly.
El siguiente paso es ir el 22 de enero al evento "Build or Die" en Sillicon Valley, donde se pondrá a prueba el concepto, así como el equipo de trabajo para poder crear un producto no sólo divertido, sino funcional y sustentable.