30 abril 2007
Desde hace tiempo busco la mejor forma de hacer "fotolibros" (libros de fotos impresos) en MacOS X sin tener que utilizar iPhoto ni Windows. Por desgracia, la mayoría de fabricantes de este tipo de productos no disponen de software para Mac y los foros donde se hacen comparativas se encuentran relativamente desactualizados. Hasta ahora, por necesidad, había trabajado con Windows y el software de Hofmann (el mejor de los que he probado hasta ahora, tanto en software como en resultado final), pero ¡por fin! he encontrado uno que pinta bien y no requiere de Windows: ya.com ha portado su software a Mac y han añadido una opción que no estaba la última vez que lo probé: Modo experto, que permite jugar con los cuadros de texto e imagen de manera más libre y eficaz. La calidad de papel y las posibilidades que hay para jugar con las imágenes son inferiores a las de Hofmann pero tiene buena pinta para hacer un album decentillo. Me parece que lo voy a probar prontito, así que ya os contaré los resultados ;-)
27 abril 2007
Llamamiento a la curiosidad
Últimamente he estado hablando con bastantes personas relacionadas con el desarrollo de aplicaciones y sistemas avanzados y me ha sorprendido ver que profesionales que deberían tener una visión realista y precisa del mercado de las TIC siguen teniendo un concepto sobre Apple tal cual era hace 10 años (eso sí, todos saben que ahora se puede ejecutar Windows más rápidamente y que los iPods causan furor).
Sin embargo, lo cierto es que, a pesar de trabajar a menudo con Macs, yo también tenía esa visión hasta hace pocos meses. Mi concepto cambió cuando "descubrí" como es MacOS X por dentro: los fantásticos frameworks incluídos, los magníficos patrones de diseño implementados y, en general, las herramientas proporcionadas... casi todo en el software de Apple se puede usar como ejemplo de buenas prácticas en Ingeniería del Software. Desde entonces todos mis desarrollos (antes multiplataforma) los estoy rehaciendo para que sean exclusivos de Mac.
Reflexionando, creo que las causas comunes para pensar así son:
Hoy quiero lanzar un llamamiento a la curiosidad. A mi me convencieron la arquitectura y el entorno de desarrollo de MacOS X... vosotros curiosead lo que os interese y comprobad que casi seguro también se encuentra más sencillo, potente, seguro y elegante en un entorno Apple.
¡Ufff!, ¡esta entrada de hoy parece subvencionada o sectárea! Mejor no me defiendo diciendo que es convicción porque lo puedo empeorar ;-)
Sin embargo, lo cierto es que, a pesar de trabajar a menudo con Macs, yo también tenía esa visión hasta hace pocos meses. Mi concepto cambió cuando "descubrí" como es MacOS X por dentro: los fantásticos frameworks incluídos, los magníficos patrones de diseño implementados y, en general, las herramientas proporcionadas... casi todo en el software de Apple se puede usar como ejemplo de buenas prácticas en Ingeniería del Software. Desde entonces todos mis desarrollos (antes multiplataforma) los estoy rehaciendo para que sean exclusivos de Mac.
Reflexionando, creo que las causas comunes para pensar así son:
- MacOS X sólo funciona sobre máquinas de Apple (eso por sí mismo ya provoca muuuuucho desconocimiento) y
- casi todo el mundo habitual de MacOS X acaba siendo acérrimo (lo que de entrada causa mucha desconfianza porque da la sensación de subjetividad y sectarismo).
Hoy quiero lanzar un llamamiento a la curiosidad. A mi me convencieron la arquitectura y el entorno de desarrollo de MacOS X... vosotros curiosead lo que os interese y comprobad que casi seguro también se encuentra más sencillo, potente, seguro y elegante en un entorno Apple.
¡Ufff!, ¡esta entrada de hoy parece subvencionada o sectárea! Mejor no me defiendo diciendo que es convicción porque lo puedo empeorar ;-)
24 abril 2007
El factor WOW!
Agradeciendo a los canales de televisión que fomenten la lectura y otras actividades culturales emitiendo programas insoportables me puse anoche a ver algunos vídeos didácticos de Apple. La sorpresa llegó con un vídeo en el que se hacía un repaso a la evolución de Apple y se pasaba del escalón anterior (facilidad de uso) al futuro (que incluye el "factor Wow!").
"Wow!", ¿no fue esa la palabra que usó Microsoft para intentar vender Windows Vista? ¡Sí!, así que miré la fecha del vídeo y resultó estar grabado mucho tiempo antes de que Microsoft empezase a promocionar Vista con esa palabreja. Como dicen en un famoso programa de radio (en España): ¿Casualidad? No lo creo.
"Wow!", ¿no fue esa la palabra que usó Microsoft para intentar vender Windows Vista? ¡Sí!, así que miré la fecha del vídeo y resultó estar grabado mucho tiempo antes de que Microsoft empezase a promocionar Vista con esa palabreja. Como dicen en un famoso programa de radio (en España): ¿Casualidad? No lo creo.
23 abril 2007
DirectX 10 en MacOS X
Acabo de leer una noticia curiosa: parece ser que un chico ha conseguido que los DirecX10 se ejecuten en MacOS X y Linux. La noticia suena a mentirijilla, pero por si acaso aquí dejo un par de links por si resulta que ésto llega a más y dentro de poco podemos ejecutar los DirectX10 en Mac. No obstante, él reconoce haber utilizado ingeniería inversa (que está prohibida para este uso), así que si es cierto tampoco confío en que llegue a ser nada serio.
Los links: The Inquirer y Alki Project
Los links: The Inquirer y Alki Project
20 abril 2007
Cambiar el tamaño de las particiones [Editado]
Tenía que instalar una beta de Leopard para testearla ;) y no podía cambiar el tamaño de la partición de mi disco duro simplemente con la Utilidad de Discos que se incluye en MacOS X así que investigando un poquito he encontrado un tutorial sencillo que permite, usando la línea de comandos de Tiger 10.4.6 o posterior, cambiar el tamaño de la partición de una manera no destructiva.
Resulta tan sencillo como usar la utilidad diskutil con el parámetro resizeVolume. En mi MacBook sería algo así:
diskutil resizeVolume disk0s2 limits
Con este comando se puede ver cuánto se puede escalar la partición. disk0s2 es mi disco duro, pero se puede saber fácilmente con el comando df. Haciendo caso a estos límites el escalado sería tan sencillo como poner, por ejemplo, para 40GB:
diskutil resizeVolume disk0s2 40G
¡y ya! Sencillo y potente... aunque ¡cuidado! hay algunos casos para los cuales no está soportado y que se deben tener en cuenta. Una buena ayuda se obtiene con:
diskutil resizeVolume -help
Comentarios y experiencias personales se pueden ver en esta web.
Resulta tan sencillo como usar la utilidad diskutil con el parámetro resizeVolume. En mi MacBook sería algo así:
diskutil resizeVolume disk0s2 limits
Con este comando se puede ver cuánto se puede escalar la partición. disk0s2 es mi disco duro, pero se puede saber fácilmente con el comando df. Haciendo caso a estos límites el escalado sería tan sencillo como poner, por ejemplo, para 40GB:
diskutil resizeVolume disk0s2 40G
¡y ya! Sencillo y potente... aunque ¡cuidado! hay algunos casos para los cuales no está soportado y que se deben tener en cuenta. Una buena ayuda se obtiene con:
diskutil resizeVolume -help
Comentarios y experiencias personales se pueden ver en esta web.
Editado 05/11/08: Haciendo espacio para reinstalaciones de Leopard he encontrado que, en ocasiones, no se realiza el redimensionado por errores del tipo "-9###". En estos casos siempre he podido redimensionar las particiones arrancando desde el disco de instalación de MacOS X y usando la utilidad de discos para chequear y solucionar problemas de poca monta (jerarquías de ficheros y otros defectos del FS sin mucha importancia) en el disco. A continuación el proceso se ha podido realizar sin problemas. En cualquier caso, con la utilidad de discos del instalador de Mac OS X Leopard el proceso es mucho muy sencillo, aunque requiere reiniciar el equipo.
19 abril 2007
Framework de Google
El pasado lunes Google publicó un framework para que los programadores de MacOS X con Objective-C podamos acceder de manera sencilla a algunos de sus servicios (concretamente a: Base, Blogger, Calendar, Spreadsheets y Notebook). Tienen en previsión extender la funcionalidad de este framework a otros servicios de Google, pero de momento habrá que esperar... o colaborar, porque se trata de una propuesta Open Source.
Para descargar el framework, su código fuente, y acceder a los foros y documentación relevante se puede seguir este link.
Es una buena noticia que empresas que típicamente desarrollaban para Microsoft Windows empiecen a extender sus sistemas a MacOS X. ¡Incluso Movistar (casi exclusiva de Microsoft) ha sacado este mes algunas soluciones para Mac!
Para descargar el framework, su código fuente, y acceder a los foros y documentación relevante se puede seguir este link.
Es una buena noticia que empresas que típicamente desarrollaban para Microsoft Windows empiecen a extender sus sistemas a MacOS X. ¡Incluso Movistar (casi exclusiva de Microsoft) ha sacado este mes algunas soluciones para Mac!
17 abril 2007
La base de datos de MacOS X Tiger
Mac OS X 10.4 (Tiger) incluye, de manera bastante disimulada, un gestor de bases de datos que cualquiera puede utilizar para sus propias aplicaciones: SQLite. Con este pequeño programa se pueden gestionar pequeñas bases de datos autocontenidas desde AppleScript, la linea de comandos o por librería (para utilizar en nuestros programas). Sencilla, útil, controlable desde AppleScript, basada en SQL y relativamente potente, quizás lo más interesante es que permite escalar muy fácilmente si se quiere ampliar hacia cualquier otra base de datos compatible con SQL.
Apple ofrece información desde esta página.
Como SQLite es un proyecto open-source se puede acceder a su documentación específica en esta otra web.
¡Que disfrutéis trasteando esta noche con SQLite!
Apple ofrece información desde esta página.
Como SQLite es un proyecto open-source se puede acceder a su documentación específica en esta otra web.
¡Que disfrutéis trasteando esta noche con SQLite!
16 abril 2007
Intel GMA 950
He estado varios días intentando resolver un problema de lo más estúpido con OpenGL en mi Mac. Entre las decenas de páginas y PDFs que he consultado la solución la encontré en un ejemplo que pude descargar de la web del ADC.
Pero mis problemas con la programación no son el motivo de esta entrada. El tema es que durante la búsqueda del problema, en una página que ahora no logro encontrar, había un listado en el cual se destacaba que la tarjeta gráfica Intel GMA 950 (la de los MacBook) sólo es capaz de usar OpenGL 1.4 (Intel lo especifica aquí). Los demás modelos de tarjetas gráficas que utiliza Apple sí sorportan OpenGL 2.0.
Este detalle, que puede parecer una tontería, a mi me ha resultado muy útil para localizar problemas en algunos programas comerciales para Mac. Por este motivo, y porque a mi me ha hecho polvo el no poder usar alguna característica concreta de OpenGL 2.0 en mi MacBook, dejo aquí este pequeño recordatorio.
Pero mis problemas con la programación no son el motivo de esta entrada. El tema es que durante la búsqueda del problema, en una página que ahora no logro encontrar, había un listado en el cual se destacaba que la tarjeta gráfica Intel GMA 950 (la de los MacBook) sólo es capaz de usar OpenGL 1.4 (Intel lo especifica aquí). Los demás modelos de tarjetas gráficas que utiliza Apple sí sorportan OpenGL 2.0.
Este detalle, que puede parecer una tontería, a mi me ha resultado muy útil para localizar problemas en algunos programas comerciales para Mac. Por este motivo, y porque a mi me ha hecho polvo el no poder usar alguna característica concreta de OpenGL 2.0 en mi MacBook, dejo aquí este pequeño recordatorio.
I (love) (apple) code.

Sé que es una tontería pero hoy he recibido mi paquetito del ADC (Apple Developer Connection), con su MacOS X original y su DVD adicional de documentación y herramientas y... ¡una camiseta! Es una tontería, pero no me la esperaba y me ha hecho ilusión. Os dejo una imagen mal tomada con mi iSight de la serigrafía delantera.
13 abril 2007
Casos de prueba
Una de las partes más importantes de la ingeniería del software es la fase de pruebas. Las pruebas, cuando se hacen mínimamente bien, suponen mucho más tiempo y dinero que el desarrollo en sí. Por eso, se siga la metodología que se siga, definir casos de prueba y llevarlos a cabo desde las primeras fases del ciclo de vida es fundamental para desarrollar software rápidamente y con calidad.
Hoy dejo aquí un link introductorio al uso de casos de prueba en Mac con Xcode y la clase OCUnit. Sencillo, práctico y que todos deberíamos utilizar a menudo:
Test Driving Your Code with OCUnit
Por cierto, en el artículo hay una pequeña omisión: si utilizáis Xcode 2.1 o posterior no hace falta que instaléis OCUnit porque va instalada de serie, por lo que algunos pasos se ven ligeramente modificados. De hecho, se puede crear una clase de prueba directamente desde el diálogo para añadir ficheros y clases nuevas.
Para los que uséis Xcode 2.1 o posterior (mis ejemplos están hechos con la versión 2.4.1), os pongo a continuación unas pequeñas correcciones del tutorial.
Donde pone: 1. Create a new target to run the tests. Choose "Project > New Target" and select the "Cocoa > Test Framework" target type. En realidad debería ser: 1. Create a new target to run the tests. Choose "Project > New Target" and select the "Cocoa > Unit Test Bundle" target type.
Un poco más adelante dice: In the dialog that appears, select "Cocoa > Objective-C SenTestCase subclass" then click the "Next" button. Y debería ser tal que: In the dialog that appears, select "Cocoa > Objective-C test case class" then click the "Next" button.
Hoy dejo aquí un link introductorio al uso de casos de prueba en Mac con Xcode y la clase OCUnit. Sencillo, práctico y que todos deberíamos utilizar a menudo:
Test Driving Your Code with OCUnit
Por cierto, en el artículo hay una pequeña omisión: si utilizáis Xcode 2.1 o posterior no hace falta que instaléis OCUnit porque va instalada de serie, por lo que algunos pasos se ven ligeramente modificados. De hecho, se puede crear una clase de prueba directamente desde el diálogo para añadir ficheros y clases nuevas.
Para los que uséis Xcode 2.1 o posterior (mis ejemplos están hechos con la versión 2.4.1), os pongo a continuación unas pequeñas correcciones del tutorial.
Donde pone: 1. Create a new target to run the tests. Choose "Project > New Target" and select the "Cocoa > Test Framework" target type. En realidad debería ser: 1. Create a new target to run the tests. Choose "Project > New Target" and select the "Cocoa > Unit Test Bundle" target type.
Un poco más adelante dice: In the dialog that appears, select "Cocoa > Objective-C SenTestCase subclass" then click the "Next" button. Y debería ser tal que: In the dialog that appears, select "Cocoa > Objective-C test case class" then click the "Next" button.
12 abril 2007
SQA en el mundo real
Una de las cosas que siempre sorprenden, aunque deberían ser algo habitual, es ver que algunas empresas realmente se toman en serio la calidad. En informática, el aseguramiento de la calidad (SQA: Software Quality Assurance) es algo que brilla por su ausencia. Por eso, me parece de celebrar incluso una supuesta mala noticia como es que Apple retrase casi 5 meses (hasta Octubre) el lanzamiento de su nuevo sistema operativo (Leopard) porque aun estando terminado quieren hacer un testeo exhaustivo.
Sinceramente, ver que Microsoft adelanta la venta de Windows Vista en contra de las opiniones de los analistas que prevenían contra sus abundantes fallos y que Apple retrasa meses la aparición de un producto terminado para garantizar la calidad final me hace sentirme más orgulloso de haber dado el salto a Mac.
Sinceramente, ver que Microsoft adelanta la venta de Windows Vista en contra de las opiniones de los analistas que prevenían contra sus abundantes fallos y que Apple retrasa meses la aparición de un producto terminado para garantizar la calidad final me hace sentirme más orgulloso de haber dado el salto a Mac.
Programación OpenGL en MacOS X
Apple ofrece diferentes herramientas y frameworks para trabajar con OpenGL, tanto en 3D como en 2D. Aunque la documentación y los ejemplos que se pueden encontrar en el ADC (Apple Developer Connection) son un buen punto de partida, la forma más rápida y sencilla de introducirse en el OpenGL bajo Mac es a través de los siguientes tutoriales:
- CocoaGL Tutorials. Tutoriales sencillos relacionados directamente con MacOS X y Cocoa
- NeHe (Neon Helio Productions). Tutoriales muy interesantes y útiles (no sólo de OpenGL). Aunque hay versiones para Mac, en general, se encuentra explicado y con ejemplos para distintas plataformas
- 3D Kingdoms: Selection tutorial. Un tutorial muy interesante sobre cómo hacer selecciones dentro de OpenGL. No es introductorio, sino que se supone un cierto nivel del OpenGL
¿Es un blog...?
¿Es un blog un supuesto sitio donde se añade una entrada al mes?... no parece muy razonable. Un blog, por definición se debería actualizar periódicamente con los cambios que sucedan sobre la marcha... así que, sintiéndolo mucho, el blog que aquí véis, desde este momento (espero) va a cambiar radicalmente.
Desde que cayó en mis manos el MacBook con el que trabajo me he visto atrapado en una angustiosa espiral de ganas de aprender. Me estoy leyendo todos los manuales que veo relacionados con MacOS X, me paso horas programando pruebas... consigo resultados positivos (normalmente cerca de las 2 de la madrugada) que luego deshago para intentar optimizar y mejorar integrando nuevas tecnologías, "descubro" herramientas y frameworks que me dejan con la boca abierta y cuanto más sé sobre el entorno de programación de Apple veo que muchas más cosas me quedan por aprender.
Sinceramente, estoy tan deslumbrado que apenas me asombro con las "tonterías" que se repiten sin cesar por la blogosfera. Así que, mientras pueda, voy a convertir mi blog en eso mismo, un blog donde ir apuntando aquellos datos más relevantes que vaya encontrando. Un día será un tutorial interesante, otro una web o un documento digno de leer, una conclusión o un fragmento de código ¿qué más da? Lo importante es que se refleje información útil y fácilmente accesible y que, quien lo desée, pueda participar con comentarios o cuestiones.
Así que... ¡a trabajar!
Desde que cayó en mis manos el MacBook con el que trabajo me he visto atrapado en una angustiosa espiral de ganas de aprender. Me estoy leyendo todos los manuales que veo relacionados con MacOS X, me paso horas programando pruebas... consigo resultados positivos (normalmente cerca de las 2 de la madrugada) que luego deshago para intentar optimizar y mejorar integrando nuevas tecnologías, "descubro" herramientas y frameworks que me dejan con la boca abierta y cuanto más sé sobre el entorno de programación de Apple veo que muchas más cosas me quedan por aprender.
Sinceramente, estoy tan deslumbrado que apenas me asombro con las "tonterías" que se repiten sin cesar por la blogosfera. Así que, mientras pueda, voy a convertir mi blog en eso mismo, un blog donde ir apuntando aquellos datos más relevantes que vaya encontrando. Un día será un tutorial interesante, otro una web o un documento digno de leer, una conclusión o un fragmento de código ¿qué más da? Lo importante es que se refleje información útil y fácilmente accesible y que, quien lo desée, pueda participar con comentarios o cuestiones.
Así que... ¡a trabajar!


