Reality check: Mac es raro

Vengo de atender a un amable técnico que venía a arreglar mi router.

Cuando lo ha encendido, después de la observación de rigor a las luces parpadeantes, me pregunta:

¿Tienes un ordenador a mano?

El único ordenador que tengo a mano es un PowerBook bastante baqueteado (el Mac mini está feliz en una estantería, y sólo vio una pantalla y un teclado el día que lo configuré)

Coño, ¡pero esto es un Mac!

Hmmm… la cosa va a ser dura.

¿No tienes un PC normal?

Pues no, mire usted…

Hubiera dado dinero por tener a mano una cámara para hacerle una foto al tipo. Deberían ponerla en la enciclopedia cuando buscases “aprensión”.

En fins…

Un par de notas sobre QuickSilver

Para los asistentes al curso (y para los que no fueron : )

El manual al que hacía referencia está aquí en formato PDF. El autor también ha creado una cheat sheet para QuickSilver

Podeis hacer comentarios al manual en este thread del foro de QuickSilver (que, por otra parte, es totalmente recomendable porque está lleno de freaks que comparten trucos : )

Fue un placer tenerles en el Aula Coctelera™ ;D

Mini-curso de Quicksilver

Quicksilver

Quicksilver es uno de esos programas que te cambian la vida (y una razón poderosa para preferir un Mac a un PC).

Sin embargo, con la potencia viene de regalo una curva de aprendizaje bastante escarpada.

Es por ello (oye) que me han convencido para impartir un mini curso de Quicksilver.

La cita será en el aula de La Gran Corporación™, el próximo jueves 21 de septiembre, a las 19:00h.

Confirmen su asistencia dejando un comentario en el blog.

Esta vez no habrá sorteo de licencias (viva el freeware! : )

Update: He añadido el evento en Upcoming.org, así que se agradecería que se registrasen por allí : )

Übertragen, transferencias de ficheros fáciles en Mac

Icono de Übertragen

Si tienes la fortuna de trabajar en un departamento con varios Macs, y necesitas enviar y recibir ficheros de cierta envergadura, este widget de Dashboard es una joyita. Ligero, rápido, y tan fácil de usar que casi da verguenza.

Instrucciones:

  1. Bájate el widget

  2. Activa la opción de recibir ficheros vía Bonjour:

    Opcion Bonjour en Ubertragen

  3. Arrastra un fichero al icono de Übertragen y elige un destinatario.

  4. No hay paso 4.

Utilidades como ésta son las que te hacen sentirte orgulloso de usar un Mac :D

Mini-curso de TextMate

La gran corporación continúa su expansión vertiginosa y se ha anexionado los territorios colindantes (léase: entreplanta) de la nuestra nueva oficina.

El objetivo de tal conquista es convertirla en el Aula Coctelera™ (yo me hubiera mudado a vivir allí, pero no creo que mis compañeros llevaran muy bien el hecho de que no tenga ducha…)

Para tal fin, y sin otro motivo que inaugurarla como dios manda, tenemos idea de impartir un minicurso de TextMate tan pronto como terminen de arreglar el suelo de la sala (teóricamente, la semana que viene)

El plan (o la ausencia de él) consiste en hacerlo un jueves sobre las 19:30 – 20:00 y aguantar el chaparrón durante 60-90 minutos.

Tras el curso, procederemos a hacer una inspección de temperatura de los tiradores de cerveza de la zona, como viene siendo habitual en estos eventos (y sin estos eventos, ciertamente). El evento será gratuito y la asistencia es libre, con permiso de la sala.

Calculamos que será sobre el 22 de junio, en Madrid capital. En cuanto tengamos fecha y hora concreta daremos más detalles, pero adelanto que los requisitos son:

  • Idealmente, tener un Mac (o intención de tenerlo)
  • Cierta familiaridad con algún editor de código
  • Inquietud por trabajar más rápido (o menos estresado)
  • No se requieren conocimientos previos de TextMate

Si te gustaría asistir, deja un comentario para hacernos una idea de la demanda. Si hay algún tema en concreto del que te gustaría que se hablara, ídem de lo mismo…

Ah… casi se me olvidaba… el profesor será éste que escribe (aunque espero que Furilo me eche una manita para las demos de Ruby On Rails : )

Update: Allan Odgaard, el programador de TextMate, me acaba de confirmar la sorpresilla que tenía guardada. Entre todos los asistentes se sorteará una licencia de TextMate :D

Update 2: MacDevCenter publica una entrevista con Allan Odgaard, el programador de TextMate.

Trucos Mac: Navegando con la tecla ⌘

Inauguramos la sección de trucos para Mac con uno bastante chorra…

En casi todas la aplicaciones de Mac (las que están bien hechas, vaya…) si hacemos ⌘ + Click en el título de la ventana (justo donde está el nombre del documento) nos aparecerá un desplegable con la ruta del documento.

Apple + Click

Si seleccionamos uno de los elementos de la lista, se nos abrirá una venta del Finder con la carpeta seleccionada.

Extra bonus: Si lo hacemos en Safari, podemos ascender por la estructura de carpetas de un site:

Apple + Click en Safari

Compilando MTASC y Swfmill para Mac Intel

Note: The post is available in English here

El problema

Ultimamente estoy revisando mi sistema de trabajo para proyectos de ActionScript.

Una de las primeras opciones ha sido usar MTASC junto con Swfmill (y un bonito sistema usando un Rakefile en Ruby, pero esa es otra historia…)

Las primeras pruebas de compilación fueron bastante alentadoras, pero me encontré con la siguiente sorpresa:

Mi PowerBook 12″ 1.3Ghz compila un 50% más rápido que un iMac Dual Core a 2Ghz!

Lo primero que hice fue comprobar que estaba usando la misma versión de MTASC y Swfmill en los dos sistemas. Y descubrí que en el PowerBook estaba usando una versión más antigua de MTASC. Al actualizarla, la diferencia era aún mayor…

Lo siguiente era averiguar si, como me temía, la última versión de MTASC no estaba optimizada para procesadores Intel:

AleMac:~ ale$ file bin/mtasc
bin/mtasc: Mach-O executable ppc

Lo que me temía…

Y Swfmill?

AleMac:~ ale$ file bin/swfmill
bin/swfmill: Mach-O executable ppc

Fantástico…

La solución

Como uno es un poco freak, la solución obvia era recompilar MTASC y Swfmill (grandes ventajas del Open Source :) para Mac Intel.

Si pensaste que era fácil, estás equivocado. Aquí tienes la crónica de cómo compilar MTASC y Swfmill en Tiger para Mac Intel sin pegarte un tiro…

Requisitos

Instalando dependencias

Primero actualizamos los paquetes de DarwinPorts

sudo port -d selfupdate
Password:
DEBUG: Rebuilding the darwinports base system if needed.
Synchronizing from rsync://rsync.darwinports.org/dpupdate/dports
receiving file list ... done

Para compilar MTASC y Swfmill necesitamos instalar una serie de paquetes usando DarwinPorts:

  • zLib
  • pkgconfig
  • libxml2
  • libxslt
  • freetype
  • libpng
  • gdbm

A compilar!

sudo port install zlib
sudo port install pkgconfig
sudo port install libxml2
sudo port install libxslt
sudo port install freetype
sudo port install libpng
sudo port install gdbm

Esto debería tardar unos 10 minutillos (en un iMac Dual Core 2.0Ghz)

También es necesario instalar OCaml y findlib.

OCaml está en la lista de paquetes de DarwinPorts, pero no findlib, así que lo haremos usando GODI

Instalando OCaml y findlib con GODI

Primero nos bajamos el código fuente de GODI y lo descomprimimos donde nos de más coraje. Yo voy a ponerlo en ~/src (un directorio ‘src’en mi carpeta home)

Para compilar GODI, hay que configurar un par de cositas…

cd /Users/ale/src/godi-bootstrap-20060405/
./bootstrap --prefix $HOME/src/godi

Y empezamos a compilar… Los binarios se instalarán en ~/src/godi/bin y ~/src/godi/sbin, así que habrá que añadir esas dos rutas al PATH (y si no sabes cómo se hace, quizá no deberías haber llegado hasta aquí :)

Y ahora es cuando empieza lo divertido:

cd /Users/ale/src/godi-bootstrap-20060405/
./bootstrap_stage2

Tras un tiempo prudencial (6 minutos tardó esto…) tendremos un compilador de OCaml nativo para Mac Intel, y GODI listo para empezar a instalar paquetes… Para ello, ejecutamos ‘godi_console’y nos buscamos la vida para instalar:

  • godi-findlib
  • conf-tcltk
  • conf-gdbm
  • godi-ocaml-dbm
  • godi-ocaml-all

Ahora ya estamos listos para empezar a compilar MTASC (si, esto no ha hecho más que empezar…)

Compilando MTASC

Comparado con lo que hemos hecho hasta ahora, compilar MTASC es un juego de niños…

Nos bajamos el script de instalación de MTASC desde aquí: http://www.mtasc.org/doc/mtasc/install.ml

Yo lo he guardado en ~/src/mtasc

cd /Users/ale/src
mkdir mtasc
cd mtasc
curl http://tech.motion-twin.com/doc/mtasc/install.ml -o install.ml

Y ahora viene lo más divertido, que es parchear ‘install.ml’para que compile en OSX. Para ello, buscamos la línea que dice

let zlib = match Sys.os_type with "Win32" -> "zlib.lib" | _ -> "-lz"

por algo parecido a esto:

let zlib = "/opt/local/lib/libz.a"

(que es donde DarwinPorts instala zLib por defecto…)

Ahora compilamos MTASC:

ocaml install.ml

Con un poco de suerte, cuando terminen de pasar líneas a toda velocidad por la pantalla, tendrás dos ejecutables: ‘mtasc’y ‘mtasc-byte’en la carpeta ‘mtasc/bin’

La prueba de fuego…

AleMac:~/src/mtasc/bin ale$ file mtasc
mtasc: Mach-O executable i386
AleMac:~/src/mtasc/bin ale$ file mtasc-byte
mtasc-byte: Mach-O executable i386

Woohoo! :D

Ahora vamos a intentar compilar Swfmill

Compilando Swfmill

Descomprimimos los fuentes de Swfmill en ~/src

tar xvzf swfmill-0.2.11.tar.gz

Yo no he conseguido que compile sin hacer la siguiente chapuza: buscar en todos los ficheros la cadena ‘-static’y sustituirla por ” (Teóricamente bastaría con poner –disable-static en configure, pero por algún motivo pasa del tema…)

Y ahora configuramos con las siguientes opciones:

./configure --prefix=$HOME

y compilamos…

make

Cuando acabe, tendremos un bonito binario en src/swfmill-0.2.11/src

De nuevo, la prueba del algodón:

AleMac:~/src/swfmill-0.2.11/src ale$ file swfmill
swfmill: Mach-O executable i386

Rescatando el fruto de nuestro trabajo

Ahora, lo ideal sería poner nuestras nuevas versiones de MTASC y Swfmill en algún sitio fuera de los directorios donde los hemos compilado…

Yo los he metido en ~/bin, que es un directorio que tengo en el PATH.

¿Merece la pena?

Bueno… pues aquí van unas pruebecillas de rendimiento en un pequeño test que tengo montado con MTAS + Swfmill, comparando la versión descargable de MTASC con la versión “native” y “bytecode”, compiladas en Intel.

La prueba consistió en compilar 4 veces seguidas midiendo el tiempo de compilación con el comando ‘time’. Mi proyectillo usa la opción ‘-keep’, con lo que las compilaciones a partir de la primera son más rápidas. Entre medición y medición se eliminaron todos los .swf

MTASC PowerPC + Swfmill PowerPC

real    0m1.020s
user    0m0.649s
sys     0m0.352s

real    0m0.197s
user    0m0.073s
sys     0m0.026s

real    0m0.101s
user    0m0.073s
sys     0m0.025s

real    0m0.103s
user    0m0.073s
sys     0m0.024s

MTASC “native” Intel + Swfmill Intel

real    0m0.568s
user    0m0.150s
sys     0m0.072s

real    0m0.105s
user    0m0.073s
sys     0m0.025s

real    0m0.103s
user    0m0.073s
sys     0m0.026s

real    0m0.101s
user    0m0.073s
sys     0m0.025s

MTASC “bytecode” Intel + Swfmill Intel

real    0m0.227s
user    0m0.156s
sys     0m0.061s

real    0m0.102s
user    0m0.073s
sys     0m0.025s

real    0m0.102s
user    0m0.073s
sys     0m0.026s

real    0m0.101s
user    0m0.073s
sys     0m0.026s

Creo que sobran las palabras… :D

Pues eso… ¡que lo disfruten!

Nota: Si alguien tiene algún proyecto gordo donde se puedan hacer pruebas más contundentes (el mío es sólo un test) le agradecería que pusiera sus comentarios, o que me enviara código a ale {arrobilla} bomberstudios {puntillo} com

Update: Ante el clamor popular, aquí están los binarios compilados:

Los binarios son sólo para Mac Intel (no son Universales) y sólo los he probado en 2 equipos. Se agradecerán comentarios si funcionan en más cacharros…