by David on April 27, 2009

La Integración Continua es un concepto ampliamente definido en el que básicamente se pretende automatizar la construcción/compilación e integración del desarrollo de un producto software, para agilizar el ciclo de diseño-ejecución-prueba, detectando de forma óptima los errores, bugs y fallos en dicho proceso de desarrollo.

En el caso de desarrollo de software realizado por un equipo, queremos integrar nuestro código propio con el que finalmente va a ser lanzado. Para la gestión del desarrollo de todo el equipo, la integración de código, su compilación y pruebas habrá que seguir ciertas directrices, que están dentro del concepto de Integración Continua.

Una de las grandes ventajas de la Integración Continua está en el hecho de probar nuestro código “en tiempo real”. Esto está dentro del concepto Kaizen o mejora continua, cuyas ventajas se reducen en gran parte a la reducción de tiempo de integración con una fiabilidad enorme.

Los aspectos a tener en cuenta en la Integración Continua pueden resumirse a:

  • Mantener un repositorio de código
  • Automatizar la compilación e integración
  • Hacer tus propios tests
  • Commits diarios
  • Cada commit debe compilar
  • Compilar rápida y ágilmente
  • Testar en clon de producción
  • Hacerlo fácil
  • Resultados accesibles por parte de todos
  • Automatizar despliegue

Basándonos entonces en estos aspectos es importante poder realizar las tareas necesarias para disponer siempre de una última versión de nuestro código que esté testada y probada. Para ello existen herramientas software que nos proporcionarán un Servidor de Integración Continua que nos facilite la realización de esas tareas basadas en los aspectos anteriormente comentados.

Por ello, es esencial la elección de la herramienta que utilicemos para desarrollar en un entorno de Integración Continua. Esta elección vendrá determinada por ciertos criterios de selección que marcarán nuestras necesidades de desarrollo y el entorno. Estos criterios tratarán de ser lo más objetivo posibles.

Nuestros criterios a la hora de la elección estarán basados en:

  1. Características de la herramienta software, como
    • Integración de sistema de control de versiones
    • Capacidad de manejo e integración de plataformas de construcción y despliegue (Maven, Ant)
    • Metodología de feedback e informes
    • Etiquetado
    • Si soporta dependencia de otros proyectos o no
    • Facilidad de extender
  2. Fiabilidad y rendimiento. Productos opensource nos permitirán hacer pruebas de rendimiento fiables.
  3. “Longevidad” del software. Sin perder la funcionalidad y robustez de una herramienta consolidada y establecida, hay que tener una visión de futuro y pensar a largo plazo (posibilidad de extender nuestro producto o modularlo).
  4. Entorno objetivo. Hay que tener también una visión más allá de la calidad del código y no perder de vista el entorno de producción, trabajo y ejecución. Tendremos que tener en cuenta entonces los sistemas operativos soportados por los servidores, los requerimientos del sistema, el versionado y el soporte de versionado.
  5. Facilidad de uso. Aunque a veces este criterio puede ser subjetivo, el uso de consolas web, configuración a través de edición de archivos, utilización de asistentes o paneles de control vendrán determinados por los usuarios de la herramienta-servidor que va a ser utilizada y administrada.

Estos criterios de selección no deben ser rígidos y buscamos un entorno lo más flexible posible. Pero el exceso de flexibilidad puede llegar a hacer nuestro sistema improductivo y algo caótico, provocando el efecto contrario al deseado y por tanto, algo de rigidez del sistema nos puede ayudar a establecer las líneas adecuadas de actuación.

Por estas razones y según los criterios que hemos expresado para la elección de nuestras herramientas en un entorno de Integración Continua, una buena elección será el uso de Hudson como “CI Tool” (herramienta de Integración Continua) y Maven como “Lifecycle Build Tool” (herramienta de construcción del ciclo de vida).

De forma resumida exponemos las ventajas y características de estas dos herramientas para la gestión de nuestro proyecto de desarrollo de software.

Maven

De forma más detallada a nuestra introducción anterior, Maven es una herramienta de gestión y comprensión de proyectos de desarrollo de software, normalmente en Java, que nos permite compilar, testar integridad y compilación, desplegar, documentar y gestionar las dependencias de código de forma sencilla y extendible.

Maven es una herramienta abierta y libre (pertenece al Proyecto Apache) claramente orientada al trabajo en equipo, siendo esta es una de las principales razones por las que la elegimos como herramienta ideal para metodologías agiles de programación y posterior Integración Continua con otras herramientas software.

La herramienta es compleja pero fácil de usar y muy rápida a la hora de compilar y desplegar proyectos. Entre las ventajas de usar Maven como herramienta de desarrollo en el trabajo en equipo, podemos destacar:

La dependencia entre proyectos no es problema
Un mismo proyecto se puede ejecutar en distintos entornos. Sólo hay que cambiar un archivo de configuración
La integración del trabajo de desarrolladores es transparente
Hay una maximización de la cohesión del código y una minimización del acoplamiento
Fácil reutilización del código

Para los desarrolladores familiarizados con herramientas similares, como Apache Ant, Maven ofrece las mismas funcionalidades, con la diferencia de gestionar las dependencias de proyectos de una forma mucho más sencilla y comprensible, optimizando notablemente el tiempo de desarrollo en trabajos multiproyecto.

El funcionamiento de Maven viene expresado según el siguiente diagrama:

Los cuadros grises son dados por el desarrollador, los rojos por la herramienta, y el marrón es la salida y resultado final (lo que en Maven se denominan Artefactos). Es decir, podemos comprobar que Maven es muy flexible a la hora de poder personalizar plugins para nuestro proyecto y también para gestionar las dependencias y configuraciones con un simple archivo POM (Project Object Model). Pero tampoco podemos olvidar que nos proporciona la rigidez suficiente con su arquitectura y metodología para no perder el foco y que los trabajos multiproyectos no se conviertan en los temidos “dinosaurios” difíciles de gestionar.

En definitiva y en nuestro caso, Maven nos proporciona una solución modular orientada al trabajo en equipo que elimina problemas de herramientas anteriores, como es la compleja resolución de dependencias, a la vez que nos permite integrar el trabajo con otras herramientas de Integración Continua. Es importante destacar para nuestro caso que se dispone de un plugin para proyectos JRuby.

Hudson

Esta herramienta de Integración Continua nos lleva un paso más allá de los resultados de nuestra solución de Ciclo de Vida, que es Maven. Es decir, ya no sólo se trata de paquetizar e integrar las distintas áreas de desarrollo de nuestro producto resolviendo las dependencias de código de los paquetes subdivididos, sino de que la integración sea efectiva, cumpla nuestros criterios de calidad y el tiempo empleado en la detección de errores y su resolución sea el menor posible. Hudson nos proporciona una solución sencilla para llevarlo a cabo.

Hudson es una herramienta libre y abierta relativamente nueva de Integración Continua muy utilizada y de gran éxito en el entorno de desarrollo del software. Su arquitectura basada en plugins y su fácil instalación la hacen una herramienta potente y fácil de usar. El desarrollo de plugins es una característica importante al destacar su flexibilidad.

Podemos comprobar las diferencias con otras herramientas CI (Integración Continua) en este link, comprobando que además de ser una de las más completas, su extensibilidad viene proporcionada por plugins, lo que la hace bastante modular y ligera si no se necesita de amplia funcionalidad.

Podemos comparar a Hudson con una de las herramientas CI más consolidadas actualmente, que es CruiseControl, comprobando que, además de ofrecer mayor amplitud de funcionalidad, sus características vienen determinadas por la instalación sencilla de plugins.

Resumiendo, parte de las ventajas de Hudson vienen determinadas por:

  • Fácil instalación y uso (un fichero WAR es toda la herramienta de instalación)
  • Plugins fácilmente extensibles
  • Soporte completo de Maven, lo que nos facilita enormemente la integración
  • Soporte para entornos “colaborativos” (múltiples equipos y grupos de proyectos)
  • Software Libre 100%
  • Sistema de alertas intuitivo para los desarrolladores
  • Muy pocos problemas “reportados” de esta herramienta

En definitiva, Hudson es una herramienta sencilla, de alta funcionalidad, abierta, bien documentada y con un futuro muy prometedor como CI Tool consolidada, y además, se integra muy bien con Maven. En nuestro caso cubre las necesidades, además de proporcionar un entorno “user-friendly”.

by Javier on November 22, 2008

Or how to turn your Intel based Netbook into a Macbook nano and not spend 1600 euro trying1.

A couple of months ago both crews of Venera7 and El Geek Errante, driven by the geeky rush of the moment, decided to buy the quite sexy netbook from Acer, the Aspire One. The idea was to have something extremely light and portable that could be carried in a small bag with a book and some other small stuff.

The Acer Aspire One has a nice set of features: a 9″ LED backlit glossy screen, 120Gb HD, a really small factor, 2 USB ports, 1Gb RAM (expandable to 1.5Gb), an Intel Atom 1.6GHz processor and an integrated Intel GMA 950 video card. And all for 350 Euro (taxes included). It’s quite easy to find in Spain and I guess in general around the world. We bought our white ones at PC City in Madrid; I guess after that they ran out of stock for the weekend in the white model :-)

We thoroughly evaluated the MSI Wind, the Dell Inspiron Mini, the HP whatevermodelitisthatisverysmall, and the Asus Eee PC. Turns out in terms of features/usability/size the Acer is the best option. Basically, MSI Wind and Dell are too big, HP is too slow, and Asus Eee PC is too crappy and too small (keyboard is for children). Anyway, go to Youtube and see the reviews, comparisons and tour de forces by yourself.

Surprise, I´m not only installing Mac OS X!

Yep buddies, that´s right. I´ll also explain how to repartition the internal disk to have Mac OS X as the main OS and a small Ubuntu partition for Linux stuff (like wireless hacking), install both operating systems, and configure GNU´s Grub to be able to dual boot them.

The plan will be to partition the Aspire One internal disk into three different physical partitions: first one for Mac OS X (110Gb), second one for Ubuntu Desktop (9Gb) and the third one for Linux swap space (1Gb).

I´ll explain all the details in the upcoming sections.

What will work and what won’t

Everything will work charmingly (including the official Apple Mac OS X updates and the integrated webcam) except for the following things (that we´ll try to minimize with different software toys):

  • Sleep: will not work at all. Actually, closing the lid will cause the computer to shut down inmediately, but we´ll workaround it using InsomniaX.
  • Automatic switch between internal speakers and the audio output jack. This one is solvable installing some additional Kernel Extensions, but SoundSource does the trick pretty well anyway.
  • The integrated SD readers. Personally I don´t give a damn about this one, especially when I have more USB slots available than in my MacBook Pro to connect all kinds of external storage.

If you have already googled about the Acer Aspire One and Mac OS X, yes, everything else is working. Amazing, huh? Just wait to see the steps to tune up your little creature!

Hardware you’ll need

  • A working Apple Macintosh Intel2 Machine running Mac OS X or a PC running any version of Linux or Windows (this post will assume you have a Macintosh computer as described. If not, I’ll give some pointers on how to perform the operations described for Mac OS X in other platforms)
  • An Acer Aspire One A120. For a more Apple-ish style, get the white one ;-) As I already said, 350 euro is pretty much the standard price after taxes in almost any store.
  • An Apple sticker. You can get one from one or your Apple products (notebooks, iPods, iPhones…). It’s required to stick it on your Acer Aspire One and in doing so agreeing to the Mac OS X licensing terms.
  • [OPTIONAL] A Dell Broadcom based 1490 PCI Express Wireless Card. US$15 if you get a refurbished one from a Taiwanese dealer at eBay.
    This item is not required unless you want working wireless in your computer with Mac OS X, which I wanted.
  • [OPTIONAL] A 1Gb SIMM module, if you want to take advantage of the wireless upgrade operation to also upgrade your Acer’s memory to 1.5Gb. That I also did. 16 euro in any decent on-line computer store.
  • A >256Mb USB stick, for updating the Acer Aspire ONE BIOS.
  • An external USB DVD drive or a 8Gb USB Stick or an >8Gb empty external USB Hard Disk. Actually, if you have the 8Gb USB Stick or the external USB hard disk, you won’t need the >256Mb USB stick because it’s possible to reuse them for the BIOS update.

Software you’ll need

Upgrading your Aspire One hardware

First of all, as I’ve already said, you don’t need to do this if you don’t want to either upgrade your memory or change your wireless card, although the latter is strongly recommended because it doesn’t make much sense to have a netbook that isn’t able to surf wirelessly, doesn’t it?

So, let’s assume you’re convinced and you’ve already purchased and received all your gear (typically for Spain the Dell WiFi card delivery takes 2-3 weeks).

Now breath deeply: you’ll have to open your Acer Aspire One. Fear not, my friend, because the operation is quite easy. What I’ll do here is point you to the best Aspire One hacking tutorial out there and just make some comments and remarks about what we’re interested in.

The Aspire One hardware hacking tutorial is a video made by TnkGrl that explains in very detail how to open it. Go there, watch it a couple of times, get the necessary gear to open it and follow her instructions while you´re opening your Aspire One.

So go watch it now!: Tnkgrl awesome Acer Aspire One hacking tutorial

My comments to the video:

  • Get an A4 blank paper sheet and using it as a blueprint of your laptop put all the screws there in the same position they were back in the Acer Aspire One. This way you’ll remember were to screw them back. Also, you may write down your notes in this paper, like marking an screw and saying “remember to not screw this one too much” or stuff like that.
  • Get the right screwdriver. For me it means a precision star-shaped screwdriver with enough handle to apply some force. How tightly some screws are screwed is not seen in the video, but because I wasn’t using the best screwdriver out there from the beginning, I was about to totally erode a couple of internal screws before unscrewing them. That’s bad quality prime materials, Asus.
  • You don’t need a credit car for opening the keyboard. Believe me. Despite what’s shown in the tnkgrl video, putting off the keyboard is very easy. Just press gently the tabs noted in the video with a flat headed screwdriver and do some lifting with it and voilá, the keyboard will gently fly into your hands.
  • Pay attention to cable connectors. It´s very easy to unplug and plug them if you follow Tnkgrl´s detailed instructions. Also, don´t forget to re-plug the keyboard flat cable or you will end up opening the keyboard again (as it happened to me).
  • Finally, the model Tnkgrl is opening is the SSD disk one (no regular hard disk) so the internals are a bit different. If you are just upgrading your wireless card you don´t care about what I´m going to point out, but if you’re planning to upgrade your memory this is important: to remove the main board as instructed in the video you´ll have also to remove the small circuit board located right to the main one. This only implies removing the wifi switch and three screws. That´s it.

If the process went OK and the original Linpus that came with the Aspire One is still installed, you should be able to see the upgrades from the OS. Don´t worry now, because we´ll see them as soon as Ubuntu Desktop and Mac OS X are installed.

Updating the Aspire One BIOS

To smoothly install Mac OS X in our computer, we´ll have to update the BIOS firmware with the official Acer BIOS update release 3304 you just downloaded. Here´s the detail of what´s inside the download from Acer:

  • The BIOS update itself: ZG5_3304.FD
  • The MSDOS executable upgrade program: FLASHIT.EXE

The Aspire One is able to boot from external USB devices. Thanks to this, we´ll be able to upgrade our software without having to waste a DVD: we´ll just boot an MS-DOS compatible operating system from an external USB drive that has inside the proper upgrade image files and programs.

Now, for doing a bootable USB drive you have mainly two options: do it with Mac OS X or do it with Linux or Windows. The latter is pretty well documented in the Internet, so I won´t go with this one. Alternatively, I chose to make my life a bit more complicated and fight with the method to create bootable USB drives from Mac OS X. Once again, it´s not difficult, it was just poorly documented until now.

So, we´ll create our FreeDOS bootable USB drive and we´ll transfer the two necessary files for flashing our BIOS. The FreeDOS image will have to have enough room to host the extra BIOS flashing files. That´s the reason I´ve chosen to download a 11.52Mb image instead of the traditional floppy images. Anyway, here are the the steps to follow to create the flashing USB drive and update your Acer BIOS:

  • Go to your Intel Mac computer, open a Terminal and type the following to identify the device assigned to your USB stick:
    $ ls /dev/disk*
    
  • Now insert your USB drive and type the command again
    $ ls /dev/disk*
    

    You should see a new /dev/disk device that corresponds to your USB drive. In my case, it was /dev/disk1 so from now on I´ll assume this is yours too.

    Be careful because we´re going to completely erase the USB drive. If you have data inside it you want to keep, do a backup now.

  • Umount (do no physically extract it) the USB drive:
    $ sudo umount -f /dev/disk1
    
  • Now we´ll copy the FreeDOS image we just downloaded. I´ll assume here the image file is in your Downloads folder inside your home directory. Your mileage may vary, so just remember to change the commands accordingly:
    $ sudo dd if=/Users/javier/Downloads/fd011520.ima of=/dev/rdisk1
    

    The dd command copies bit by bit the FreeDOS image to your USB drive, so now you have a DOS bootable USB drive.

  • It´s time to copy the BIOS update files to the USB drive. Physically unplug it, plug it in again and with the Finder, copy the two files (ZG5_3304.FD and FLASHIT.EXE) to the USB drive root directory. If for some reason the USB drive is not showing up in the Finder, just go to the command line and copy the files with the cp command. Assuming the new Acer BIOS update files are in ~/Downloads/ZG5_3304:
    $ cd /Volumes/Untitled
    $ cp /Users/javier/Downloads/ZGS_3304/* .
    
  • Eject and unplug your USB drive.
  • Shut down your Acer Aspire One and plug the USB drive in it.
  • Boot the Aspire One and press F12 to go to the boot menu. Select the USB drive you just plugged and hit enter. FreeDOS should be starting by now.
  • Now you have a DOS prompt. First thing to do is to backup the current Aspire One BIOS:
    A:\> FLASHIT ZG5_3114.FD /G
    

    This creates a new file in the USB drive root called ZG5_3114.FD containing the actual BIOS. If anything goes south, we´ll always be able to recover our previous BIOS with this file following the instructions you have in Aspire One User Forums

  • It´s time now to reflash the BIOS with the version we downloaded from the Acer website. This is done executing the FLASHIT.EXE program as follows:
    A:\> FLASHIT ZG5_3304.FD /ALL
    

    Wait until the process is over. The Aspire One should restart automatically. When done, hit F2 to go to the BIOS setup utility and check that System BIOS information now points to v0.3304

  • Inside the BIOS setup program, hit F9 to recover factory settings. This step is important so do not miss it.

That´s all.

Installing Ubuntu Desktop and configuring multiboot with Grub

Why install Ubuntu in the Aspire One?

Several reasons: it rocks, it’s perfect for wireless hacking if you’re on the go, and it gives you more control over what’s going on with your laptop. Ubuntu Desktop is a supported operating system for the Aspire One, so it’s only a good idea to have it. Besides, it’ll help us partition the Aspire One internal disk and boot Mac OS X properly.

I won’t go with a lot of detail for the Ubuntu installation in your Aspire One because the process is quite standard and well documented. The only three important steps for me were getting the Ubuntu Installation disk in an USB image, the disk partitioning and, of course, Grub configuration that’s far from obvious.

As I’ve already told you, I don’t have an external USB DVD drive, so what I did to install Ubuntu in my Aspire One was to burn and Ubuntu Live cd with the image you just downloaded from the download lists provided before, boot it in an Intel-based computer (your Mac, for example), and follow the instructions in Ubuntu community forums to create a bootable Ubuntu USB distribution. If it has enough space, use the USB drive you just used for upgrading your bios, or the one you’re going to use for Mac OS X Kalyway installation. It really doesn’t matter because you’ll use the Ubuntu bootable USB drive just once.

So, now you’ve got an Ubuntu bootable USB drive. Boot it in your Aspire One by hitting F12 and selecting the external USB drive to boot and start the installation. In my case, using the Ubuntu installer, I chose manual partitioning of the Aspire One disk. I made three partitions: the first one for Mac OS X, was about 110Mb. Second one was for Ubuntu, 8Gb, and the third one took the remaining disk space for Linux swap. Of course, I proceeded to install Ubuntu in the second partition using the third one as swap. When assigning mounting points to the partition, I told Ubuntu installer to locate boot information in /boot under the root directory in the second partition (the one prepared for Ubuntu). It’s there where we will be installing the PC_EFI boot necessary to boot Mac OS X.

Once Ubuntu is installed, boot it in your Aspire One, and prepare to do some administration to configure Grub as the multiboot program. These are the steps I followed to be able to boot Mac OS X after its installation:

  • Log in into Ubuntu with your regular user and open a terminal. Then go to the /boot directory, create a pc_efi directory and copy there the boot_v8 you got when you downloaded PC EFI v8.0. I’ll be assuming you already have the file in your home directory. If not, copy it from wherever you downloaded it there now.

    $ sudo mkdir /boot/pc_efi
    $ sudo cp ~/boot_v8 /boot/pc_efi
    
  • Now edit the Grub configuration files to tell it to use PC EFI to boot the Mac OS X partition. Edit the /etc/grub/menu.lst and add the following at the end of the file. If you want Mac OS X to boot first, just make sure to put the following lines before the other similar that are there.

    title Mac OS X
    root (hd0,1)
    kernel /boot/pc_efi/boot_v8
    

Now you should be able to boot Mac OS X once it’s installed. I also tried this procedure with Chameleon EFI and for some reason it didn’t work, so PCI EFI is the one I’m recommending here.

Preparing Mac OS X installation

The Aspire One is now prepared for the Mac OS X Kalyway installation. Next steps will describe how to set up your USB drive to get a bootable Mac OS X image. You don’t need that if you have a working external USB DVD to use Kalyway DVD.

  • Go to your Intel Macintosh computer and insert the USB drive you chose (the 8Gb stick or an external hard disk). Just keep in mind you’ll need enough space to copy a DVD image in it.
  • Fire up Disk Utility and select the USB drive. Go to the partition tab for this this drive, select “1 partition” from the drop-down menu and name the device “Kalyway”.
  • Make sure the selected partition format is Mac OS X Extended (Journaled), then click in the “Options” button that’s located below the partition map picture. Make sure MBR (Master Boot Record) is selected and click OK to apply your changes. Disk Utility will create the partition with the specified format and including a MBR.
  • Now we’re going to restore the image of the Kalyway DVD installer you downloaded onto the USB drive. Select the USB drive, go to restore tab, and drag the Kalyway ISO image from the finder to the field that says “Source”. Inside destination field, just drag the USB drive. Now click “Restore” and go to grab a coffee.
  • Eject the USB drive using the Finder and plug it back in.
  • Remember you downloaded OSX86 tools? It’s time now to launch them to make our USB drive bootable. Just be sure you downloaded build 149 (I’m pretty sure the link I posted is the right one, but who nows) because the last versions won’t work for you (I also tried and failed miserably).
    Click the button “Install EFI/Run FDISK”
  • Select “Run Script” when the next window appears and it’ll fire up a terminal window. Enter your administrator password, and then you’ll be presented with the text menu. I used here Chameleon EFI – so I entered “4.” After that it shows you the available disks and partitions. Find your USB drive (mine was /dev/disk3) and enter its number (so in my case it was “3″). At the next prompt, do what it says – do not select “0″ for the partition scheme, most likely select “1″ for the name of the drive you selected (if you followed my instructions step by step it should be “Kalyway”). Now just hit Enter, watch it work, and you’re all set.
  • Eject your USB drive and plug it in your Aspire One. Boot it up and right after it press F11. You should be able to boot right off your USB drive.

Installing Mac OS X

Did it work? Is your USB drive booting? Great, the following is where the rubber hits the road.

  • First of all, take that sticker you were saving for your next car and stick it somewhere in your Acer Aspire One. This is apparently necessary because Apple´s Mac OS X license agreement states that you can only install Mac OS X in an Apple Branded computer. Anyway, if you don´t do it I don´t think anybody will notice it, but still looks fine in the white model, specially the one that’s coming with iPod nanos :-)
  • I guess you did boot your USB drive in the previous section and you’re waiting for instructions. If not, do it now! A lot of text output will scroll in front of you. Just relax and wait for Mac OS X to boot.
  • You’ll be presented a language selection menu: select your preferred language and hit next. In my case, for consistency with other computers I have and also because the information you typically find in the Internet is in english, I chose English. After it, it’ll say “Preparing Installation” for a while.
  • When you get the ‘Welcome’ screen, don’t hit continue straight away! Move your point to the ‘Utilities’ menu, and select ‘Disk Utility’
  • When the Disk Utility application has loaded, click your main drive in the left hand pane (probably the very top entryis your HDD manufacturer’s name’)
  • Click ‘Partition’ on the right hand pane.
  • Select the partition you already prepared for Mac OS X (that would be partition 1) and choose ‘Erase partition’ with the option ‘Mac OS extended Journaled’ selected.
  • Name your partition ‘Macintosh HD’ and click ‘Apply’.
  • Wait for it to do it’s thing, then select ‘Quit Disk Utility’ from the ‘Disk Utility’ menu.
  • You’ll now be taken back to the installer welcome page. Click ‘Continue’.
  • Click ‘Agree’ when the legalese blurb pops up.
  • Choose a destination drive – obviously the one you just partitioned! Click ‘Continue’.
  • This is important! Do not click ‘Continue’ and click ‘Customize, because here’s where we’re going to start ‘hacking’ our installation.
  • Let the options you see in front of you as following:
    • Completely uncheck ‘Language Translations’.
    • Expand ‘Kernels’ and select ONLY ‘kernel_9.2speedstep’.
    • Expand ‘Graphics_Drivers’, expand ‘Intel_GMA’ and select ONLY ‘GMA950′.
    • Completely uncheck ‘Audio_Drivers’.
    • Expand ‘Networks_Drivers’. and select ONLY ‘RTL1000′.
    • Completely uncheck ‘Mobo_Chipsets’.
    • Completely uncheck ‘Thirds_Applications’.
    • completely uncheck ‘Patches’.
  • You done? OK, click ‘Done’.
  • Click ‘Install’ and go and make yourself a cup of hot Cocoa instead of tea! (hey, you’re about to enter the Mac Universe and ruling lands of Cocoa ;-)
  • The install will now take place. To speed it up, I recommend you to click ‘Skip’ the installation DVD check, that doesn’t make any sense either because we’re using a USB device.
  • When the ‘Install Succeeded’ screen appears, hit ‘Restart’.
  • If Grub was correctly configured, after some boot up screens, Mac OS X will now start up for the first time, and take you through the setup wizard.

OK, Mac OS X is now up & running in your Aspire One, but we’re far from finished. Let’s go through the steps necessary to get it ready to use in the following section.

Upgrading your Mac OS X and post-installation steps

Here’s is where we take our Mac OS X to its latest version (at the time of writing this post, it’s 10.5.5) and do some tweaks to have as much as possible working in our personal MacBook nano.

We’ll need to have most of the stuff we listed as software downloads available for the Aspire One so Primo) you have it in an external USB drive that you’ll be plug in into the Aspire One or Secondo) you have now Internet connection from your MacBook nano so you’re able to download it from the Internet.

  • Now that you have booted into OS X for the first time, goto drive name > applications > Utililities > Terminal.

    Currently we are using 9.2 Speedstep Kernel, but we want to use Vanilla Kernel from the original Mac OS X because it’ll allow us to get all the software updates from Apple. We will be installing it in the following steps, but we have to be ready for it. This means we’ll have to make some configuration changes in Mac OS X because for this system vanilla kernel will only support 1 cpu.

    With your favorite editor, edit the /Library/Preferences/SystemConfiguration/com.apple.Boot.plist file to do the following modifications (you could open a Terminal and use vi or just use the Editor program located under ‘Applications’ > ‘Utilities’). Inside the file, look for “Kernel Flags”, put there “cpus=1″ and save the file.

  • Get your Kalyway Mac OS X 10.5.3 Combo Update and run the ‘1_Kalyway_UpdCombo10.5.3.pkg’. This wil upgrade the system from 10.5.2 to 10.5.3 and step through the installation process. Do NOT hit restart when prompted!
  • After the previous installation has completed, run 2_kalyway_10.5.3_kernel.pkg and step through the installation process. Select now the ‘vallina_kernel_9.3′ kernel.
  • When finished, click the ‘Restart’ button you didn’t hit before to restart your MacBook nano and get ready to press F8 in the boot process.
  • When prompted to do so, press F8 to interrupt the Darwin startup. Type ‘update -v’ (without the quotes obviously), and press enter. Your AA1 may reboot a couple of times during this update process.
  • When you have booted back into OS X, you can check the Version details by clicking on the Apple logo on the upper left hand corner> choose about this Mac. Since we are using Vanilla kernel now we can upgrade using Apple original update.
  • Insert now the disk containing the 10.5.4 update, that you should’ve downloaded by now with the rest of the software stuff. Before you run the file, open up Terminal and do the following:
    $ sudo su -
    $ while sleep 1 ; do rm -rf /System/Library/Extensions/AppleIntelCPUPowerManagement.kext ; done
    

    Keep this window open while you run the downloaded update and install it.

  • Double click the MacOSXUpd10.5.4.dmg to mount the image and after the image has mounted, run MacOSXUpd10.5.4.pkg and step through the installation process.
  • Before you reboot, exit the Terminal script by holding down Ctrl and pressing C (Ctrl + C). Close Terminal and hit the button on the Update to reboot your computer.
  • When prompted press F8 and use “-v” to boot without quotes ( a lot of text msg comming out don’t worry system will boot it self soon )
  • When you have booted back into OS X, get the software you downloaded containing the Mac OS X 10.5.5 update. Again, before you run the file, open up Terminal and do the following:
    $ sudo su -
    $ while sleep 1 ; do rm -rf /System/Library/Extensions/AppleIntelCPUPowerManagement.kext ; done
    

    Keep this window open while you run the downloaded update and install it.

  • Double click the MacOSXUpd10.5.5.dmg to mount the image, and after the image has mounted, run MacOSXUpd10.5.5.pkg and step through the installation process.
  • Before you reboot, exit the Terminal script by holding down Ctrl and pressing C (Ctrl + C). Close Terminal and hit the button on the Update to reboot your computer.

    System will take a long time to reboot let the system be until it will restart, so be patient and give it plenty of time. If in case you run out of patience or it will not reboot you have to do hard reboot on the system and use “update –v” steps on boot you’ve already seen here.

Now you’re Mac OS X is Leopard 10.5.5. You’ve got still some steps to perform to get some things running, so let’s go for them.

Making the sound work

  • Get the Paul’s Wind Drivers & Utilities pack you already downloaded into your MacBook nano and select the ‘Sound’ directory
  • Double click on AzaliaAudio.pkg, go through the installation wizard and restart the computer.
  • Now run the installer from the ALC268FIX you got with the software downloads you did, but DO NOT restart the system.
  • Before restarting, make sure you delete the /System/Library/Extensions/ALCInject.kext file.
  • From Paul’s Wind Drivers & Utilities, get the Kext Helper b7 application and drag it to your Applications folder. We’ll be using it a lot because it’s gonna be the tool used for installing Mac OS X Kernel Extensions.
  • Fire up Kext Helper (the application you just installed), locate the HDAEnabler.kext file in Paul’s Wind Drivers & Utilities directories, drag and drop it to he Kext Helper application, insert there your user password, and click on ‘Easy install’.
  • Fix Permissions with Disk Utility (launch Disk Utility, select your partition and then click on “Repair Disk Permissions” in the “First Aid” tab).
  • When repair permissions is done, restart your computer.
  • Goto System Preferences > Sound > make sure that Internal Speakers is selected in Play alerts and Sound effects through.
  • Now that your sound is working, to be able to switch between internal speakers and headphones at your will, install Rogue Amoeba’s SoundSource (the link is also at the beginning of this post).

Fixing the “About this Mac” message

  • Go to Paul’s Wind Drivers & Utilities Pack location in your Aspire One and under Utilities, double click on About this Mac.pkg.
  • Install it following the instructions. There’s no need to restart here.
  • Check that changes were made by going to the Apple logo in the top right corner > About this Mac and checking that it now says “Processor Intel Atom CPU N270@1.6Ghz”

Getting 1024×600 resolution

  • Run the Kext Helper application from your Aspire One.
  • Go to Paul’s Wind Drivers & Utilitis Pack location, and drag an drop the following files to the Kext Helper application: AppleIntelGMA950.kext, AppleIntelIntegratedFramebuffer.kext, AppleSMBIOS.kext, ClamshellDisplay.kext and Natit.kext
  • As before, enter your password and click ‘Easy Install’.
  • Fix Permissions with Disk Utility (launch Disk Utility, select your partition and then click on “Repair Disk Permissions” in the “First Aid” tab) and when finished restart your computer.
  • You can now go to System Preferences > Display to choose a resolution that best fits your needs.

Getting the network plug & unplug to work

  • Install the Realtek RTL810E drivers you downloaded from Realtek if you followed my instructions at the beginning
  • Restart your MacBook nano and you’re all set.

Getting the battery indicator to work

  • Go to the software package you should’ve download by now and unzip it.
  • Inside it, go to the AppleACPIBatteryManager > Build > Release directory. There you should see a AppleACPIBatteryManager.kext file.
  • Fire up the Kext Helper application, drag and drop the AppleACPIBatteryManager.kext file, insert your user password and click on ‘Easy Install’.
  • For safety, restart your Aspire One. When done, you should have a working battery indicator.

Avoiding system shutdowns while closing the lid

This one is really easy. Just install InsomniaX (the link is also in the ‘Software you’ll need’ list) and configure it to fire up every time you start your Mac OS X. This can be done going to System Preferences > Accounts, clicking on your account and going to the ‘Login Items’ tab. There you can click on the ‘+’ button and add InsomniaX to the list.

And that’s all, my friends. You should be able to go to the Apple menu and click on ‘Software Updates’ to get the latest updates from Apple, and also download and install your favorite Mac OS X applications.

Enjoy the fruit!

Acknowledgements

Here’s the list of people that has been done possible this step by step tutorial:

  • Mario Camou, aka “The Doctor”, for beta testing quite everything I’ve documented here.
  • Tnkgrl, for the amazingly great blog she has about hardware hacking the Acer Aspire One.
  • Paul, for his Utilities and Drivers pack
  • Harbot, for the tutorial that helped as base to build this one.
  • Chun Nan, for writing the AppleACPIBatteryManager modifications.
  • The joint El Geek Errante and Venera7 crews, that made this possible thanks to our discussions in our weekly “Chicken Club Sandwich Social Club” geek meeting.
  • To everyone else that I left out of this list. There’s so much work and hacking involved it’s really difficult not to forget someone.
Notas
  1. Yeah, I’m talking about the gorgeous, feature-crippled and extremely expensive MacBook Air []
  2. OSX86 Tools won’t work in a PowerPC based Apple computer; I already tried []
by David on October 23, 2008

Estamos en crisis, o por lo menos eso es lo que no paro de leer en las noticias y de oir en la boca de la gente. Bancos que se vienen abajo, el paro que sube, gobiernos inflando dinero, y todo añadido en nuestro país al hundimiento de las inmobiliarias y los síntomas de reventón de la burbuja que veníamos arrastrando. Es un pánico un poco exagerado para muchos y no tanto para otros… llamémoslo crisis entonces.

La cuestión es: ¿de dónde recortarmos en épocas de crisis? No soy economista, tampoco político, ni tampoco empresario o autónomo. Pero por la parte que me toca hay cosas que no entiendo. Se está empezando a plantear en ciertas comunidades autónomas aplicar los recortes en el sector de la educación, y más concretamente en la educación universitaria con la excusa de la crisis. No puedo evitar simplificar las relaciones: falta de confianza financiera que lleva al hundimiento de los bancos y la economía, afectando al paro, ahorros familiares, hipotecas, créditos… en definitiva, no hay dinero y el estado interviene para que no ocurra el caos.

Sin embargo, en estas épocas de crisis, la educación y el presupuesto universitario siempre lo vi como el último recurso. Soy de los que piensa que la educación es el último saco a vaciar, ya que hablar de educación es hablar de futuro, es hablar de progreso y avance. Y en el caso universitario la Investigación y Desarrollo es esencial en estos períodos de vacas flacas, esencial en el sentido de que si no se recorta, tras la mala época y apriete de cinturón tendremos profesionales y empresas que producirán progreso y desarrollo.

Pero no quiero analizar la crisis ni tampoco ser alarmista en el recorte de presupuesto para educación. Lo que me ha llevado a escribir este post es el verdadero problema del I+D en España, y más concretamente en el mundo universitario. Sólo que en épocas de crisis como la actual es fácil darse cuenta de lo que está pasando.

En las universidades españolas se investiga, se tienen laboratorios, talleres, departamentos, fundaciones colaboradoras con el desarrollo, empresas “inyectoras” de dinero, etc… hay, por lo menos, gente interesada en que se invierta en I+D, ya sea por beneficio propio o simplemente por mejorar el sistema educativo, empresarial y social. ¿Es suficiente? Por supuesto que no. ¿Y con los recursos empleados, se consiguen los resultados esperados? Aquí está la clave: ¡NO!

Y ahora, precisamente con la crisis, es donde se ve perfectamente. Antes de esta etapa presupuestaria recesiva, la Universidad invertía parte de su presupuesto en medios y recursos de investigación, colaboraba con empresas, ampliaba infraestructuras para laboratorios y nuevos espacios de investigación. Igual es en la actualidad, incluso con la amenaza de la falta de dinero en el horizonte. Esto no ha cambiado.

¿Y los problemas? O más bien, ¿y los resultados? Pues más bien los de siempre. Es decir, nuestros investigadores se van o se enquistan en la estructura educativa superior, perdiendo entonces muchos de ellos la motivación inicial y la esperanza de hacer algo importante. ¿Es entonces la falta de dinero de la siempre nos hemos quejado desde la Universidad? Bueno, siempre ha sido un factor a tener en cuenta y no ha ayudado no tener el presupuesto en investigación que poseen otros.

Pero lo curioso es que habiendo épocas de menor presupuesto, menor capacidad de recursos y mayor desmotivación por razones económicas (pensemos en un investigador con una hipoteca en la actualidad, por ejemplo), los resultados son muy parecidos. ¿Por qué? A mí se me ocurre una razón bastante visible y razonable: la pésima forma que tenemos de emplear los recursos que tenemos.

Las grandes empresas de este país que apoyan la investigación en la Universidad tienen una capacidad enorme de generar dinero y negocio, pero luego no se preocupan por cómo se emplea ese dinero invertido en investigación. Lo mismo ocurre, a mi parecer, en la universidad. Parece que tenemos un don para derrochar, lo que nos lleva al pánico cuando no lo tenemos. Sólo hay que pasarse por muchos de los laboratorios de investigación y ver problemas tan típicos como malas conexiones de internet, puestos incómodos, desorganización de material, falta de climatización, etc.. sin embargo, y por otro lado, ves cómo muchos de los equipos empleados son de última generación y con capacidad suficiente para trabajar con ellos.

Un ejemplo que hoy he sufrido en mi piel en el laboratorio en el que empiezo mi proyecto. Dispongo de un ordenador Quad-Core de 3GHz con 4GB de RAM, 500GB de disco duro, monitor 21″ panorámico… un “pedazo de pepino”, como diría alguno, para lo que necesito. Sin embargo, tras instalarme el sistema operativo sobre el que voy a trabajar y que empecé a actualizar, me doy cuenta de que la conexión a internet es extremadamente lenta, teniendo que emplear más de dos días para poder bajarme una actualización de 300MB. !¿Qué demonios?!

Pues increíble pero cierto. Resulta que el edificio de la universidad en el que trabajamos, dedicado exclusivamente a laboratorios de investigación, posee una conexión realmente deficiente, y sin embargo no es por falta de equipos o dinero empleado. Tras alguna conversación que otra llegas a la conclusión de que el problema está en no haber considerado esencial ese problema inicialmente. La verdad es que no me lo podía creer, sobre todo teniendo en cuenta lo indispensable que es hoy una día una conexión decente a internet, y sobre todo si tu trabajo tiene que ver con el Software y las tecnologías Web.

Cosas como esta son las que vas aprendiendo conforme te introduces en el mundillo. En definitiva, una falta de organización y pérdida del foco muy imporante, además de la desmotivación contagiosa que sufre el mundo universitario. Es algo que tiene remedio, pero de lo que es muy importante darse cuenta. Estamos obsesionados con la falta de presupuesto y dinero, que también tiene gran importancia, pero creo que estamos olvidando el gran problema de la investigación y desarrollo de este país.

Por tanto, un mensaje muy importante que debemos tener en cuenta es cómo utilizar nuestros recursos y saber organizarlos. No vale de nada estar continuamente pidiendo dinero cuando aún no sabemos utilizarlo, y mucho menos gastarlo cuando no nos preocupamos de su correcta utilización a la que estaba destinado. Tanto el sector privado como el público, y la Universidad, son responsables de la utilización de recursos de investigación en I+D y es un esfuerzo que debemos hacer, sobre todo en períodos de recesión económica.

by David on October 12, 2008

Ayer sábado tuve la suerte de pasar la tarde con una persona excepcional, tomando unas cervezas y hablando de todo tipo de cosas, entre ellas una que me motivó a volver a publicar un post de éxito (llegó a causar polémica) de la antigua Venera7, la cual perdimos por problemas de backup a la hora de migrar.

No es tan usual que me encuentre con gente que opine sobre el género musical Reggaeton de forma tan contundente y similar a mi manera de pensar. ¡Es magnífico! Por ello, y gracias también a un foro que citó mis palabras del post “Yo también odio el Reggaeton” os adjunto mi pequeña “disertación” de hace tiempo:

Parece que el Reggaeton se ha convertido desde la primavera prácticamente en un movimiento de masas… de “ciertas masas”, más bien, ya que no todos nos incluimos. Pero hay una cosa que la verdad no entiendo muy bien. Resulta que cuando vas a un garito de marcha y te ponen Reggaeton ves que las chicas son las más dadas a ponerse a bailar este tipo de “música”. Y cuando en programas musicales he visto el trasfondo del Reggaeton he visto lo siguiente: uno o varios tíos, rodeados de múltiples tías buenorras, en su mayoría mulatas, y con movimientos sexualmente sugerentes.

¿Y las letras? … cosas como: “Dale don dale…”, “Dame más gasolina, me gusta la gasolina…”, “Dale con el látigo…”, etc… todo esto en el contexto anterior comentado, claro. Entonces yo llego a la siguiente pregunta: ¿Acaso el sexo femenino no se ha dado cuenta del trasfondo sexista que hay en el Reggaeton? Resulta que retiran un anuncio de Fanta en la televisión porque el colectivo de los Boy Scouts se siente ofendido y ninguna asociación feminista se siente ofendida por los vídeos musicales del Reggaeton. No sé, hay cosas que no entiendo. Ni una cosa ni la otra.

Y otra cosa más, ¿os habéis fijado que la base rítmica del Reggaeton es la misma en todas las canciones, y suenan prácticamente igual? ¿Por qué esa gente que tanto critica al “Bakalao” porque siempre suena igual luego les encanta el Reggaeton? ¿Será que se liga más bailando el Reggaeton? Bueno, estas preguntas siempre me las he hecho y tal vez no haya una buena respuesta. Menos mal que por donde yo me muevo no se escucha el Reggaeton, y a fin de cuentas… Yo también odio el Reggaeton

Estas palabras las escribí hace tres años más o menos y, aunque tal vez ahora tuviera más palabras que aportar a este degénero musical, mi esencia de pensamiento hacia él es la misma. Por ello prefiero dejar las palabras originales tal y como salieron en aquel momento.

Los amantes del perreo que intentan desmerecer mis palabras siempre me salen con lo mismo: “seguro que lo has bailado alguna vez”. Sólo puedo contestar de una forma: “todos hacemos cosas estúpidas a lo largo de nuestra vida, y no por ello nos arrepentimos”.

Gracias a los chicos del post que guardaron mis palabras y a la magnífica compañía de mi tarde del sábado, he podido rescatar y reeditar este nuevo post. En definitiva, y no me cansaré de decirlo… ¡Yo también odio el Reggaeton!

by David on September 2, 2008

Llevo unos días que estoy empezando a cansarme un poco de iTunes. Siempre me gustó por su facilidad de manejo, su apariencia y usabilidad, la forma de organizar, visualizar y escuchar música… Siempre he definido a iTunes como uno de los mejores gestores y reproductores de música del mercado.

Pero desde que están utilizando iTunes como centro de sincronización de todos los dispositivos Apple con capacidad de reproducir música y vídeo, me está empezando a disgustar algunas de sus características y sus cuelgues repentinos. O más bien la filosofía de Apple respecto a iTunes. Y si además tenemos en cuenta lo difícil que es tener sincronizadas las bibliotecas de música en varios ordenadores con iTunes no quiero ni pensarlo.

Hablando con Javi (Venera7), me di cuenta de la razón que tiene al decir que iTunes se está convirtiendo en el próximo Internet Explorer de la música. Es decir, me da la sensación de que Apple obliga implícitamente a que organices tu música y vídeos de la única forma que ellos ven correcta y que sólo lo sincronices con los dispositivos que creen necesario. Pero aún así no deja de ser un gran reproductor/gestor.

Pensando en ello me acordé de, por mi parte abandonado, Songbird, un reproductor de música al más puro estilo iTunes desarrollado por la gente de Mozilla y la comunidad Open Source. La verdad es que la última versión que me instalé hace tiempo, la 0.4, siempre me pareció una buena alternativa a iTunes, sobre todo para aquellos que usábamos Linux y echábamos de menos una buena herramienta de música para nuestro iPod (sin desmerecer a Amarok, gran gestor de música para los linuxeros).

Pues la versión más actual de Songbird, 0.7Beta, ha cambiado por completo, con un nuevo Look&Feel y mejoradas y nuevas características. La verdad es que el nuevo Songbird me ha sorprendido satisfactoriamente y estoy empezando a plantearme el sustituir iTunes para reproducir música… será que echo de menos la militancia a la comunidad libre.

Songbird te importa automáticamente la Biblioteca de iTunes y te la mantiene actualizada si se lo indicas. Tiene cantidad de funcionalidades enfocadas a la navegación intrínseca en el propio reproductor y se integra con el navegador de una manera increíble. Está todo bien pensado. Radio por internet incorporada, selección de canciones y temas por internet, posibilidad de comprar música por internet con varios proveedores, multitud de plug-ins para mejorar las búsquedas y añadir características, etc, etc… además de la capacidad de personalización del programa.

En definitiva, es un buen sustituto open source, aunque para poder prescindir al 100% de iTunes aún le echo en falta algunas cosas, como por ejemplo, poder hacer streaming con el Airport Express o poder visualizar todas las carátulas añadidas con iTunes (no todas se visualizan correctamente en mi caso). Son detalles que aportan valor al software y que le convertirían en una seria competencia al producto de Apple.

Desde Venera7 os animo a que probéis este magnífico programa que, aunque aún está en Beta, es una buena alternativa para los amantes de la música.

by David on June 9, 2008

Junio 2008. Época de exámenes, y como la mayoría de los junios desde hace años, me encuentro en una biblioteca preparando las 4 asignaturas que me quedan de mi ingeniería. Empiezo a ver la luz al final del túnel y doy los últimos coletazos de mis estudios universitarios, al mismo tiempo que empiezo mi carrera profesional. ¡Mucho estrés! Suerte que no me vuelven a cambiar el plan de estudios con la llegada de Bolonia… no me va a tocar.

Acabo de leer un artículo en El País digital: Sí a Bolonia, pero no así, en el que el Rector de la Universidad Complutense de Madrid da una visión bastante acertada, en mi opinión, del proceso del Espacio Europeo de Educación Superior en la Universidad española. Pero me gustaría matizar un poco esta visión de Carlos Berzosa, por dos razones que creo que aportan valor:

  1. Porque gran parte de mi trabajo profesional consiste en unir la Universidad con las empresas de las Tecnologías de la Información, y mi situación de agente doble (universitario y profesional) da una visión desde ambos ángulos.
  2. Porque la experiencia me ha hecho ver que desde las “altas esferas” se mete todo en el mismo saco cuando hablamos de carreras universitarias, y la realidad es completamente distinta.

Efectivamente, la militancia al rechazo de Bolonia en España está justificada, por la intención de algunas partes de “mercantilizar la universidad pública”. Es evidente que las empresas van a aprovechar la llegada de Bolonia a las universidades para aumentar su influencia y “captar talento” de forma más eficaz, mejorando su capacidad de ganar dinero. Pero pensemos un momento: ¿Esto es nuevo? ¿Es todo negativo? ¿Puede convivir una influencia empresarial con un entorno de investigación independiente universitario? A la primera pregunta, no; a la segunda, no; y a la tercera, sí.

Pues claro que esto no es nuevo. Las empresas siempre han estado ahí, pendientes de crear un entorno empresarial a las futuras promesas de cada sector y sacando tajada, evidentemente, de la captación de talento de la educación superior. Aquí es donde yo veo una diferencia que no se quiere tener en cuenta por parte de las universidades, y pongo el ejemplo de las becas en prácticas para alumnos universitarios de últimos años de carrera, donde la diferencia es abismal entre unas empresas y otras. Unas explotan los recursos del novato empresarial al máximo, llegando a veces a la precariedad laboral, pero otras todavía actúan consecuentemente y ofrecen un sueldo y condiciones “decentes” (podría estar mejor) a esos becarios que realizan un trabajo importantísimo en la empresa.

Por supuesto que no es todo negativo. Estoy completamente de acuerdo en que la universidad, por delante de todo, debe ser abanderada del conocimiento y del I+D+i (Investigación, Desarrollo e Innovación), pero tampoco debemos olvidar que es una etapa de nuestra vida que también nos prepara para el mundo laboral. Debemos dejar por tanto, que la empresa influya en la universidad pública y tenga presencia, ya que los universitarios tienen que tener visión de la realidad que hay fuera y de cómo se mueve el mundo empresarial, que por suerte o por desgracia, es el motor de nuestra sociedad actual.

A la tercera pregunta… bueno, pues bien hecho siempre pueden convivir. Los dos mundos, el empresarial y el universitario, son interdependientes el uno del otro. Es una realidad que no podemos negar, los dos se necesitan. El gran problema de la universidad y la empresa española es el mismo: no se investiga lo suficiente. Nos echamos la culpa mutuamente, unos diciendo que no preparan profesionalmente a sus alumnos, y otros que no se invierte desde el sector privado a la investigación pública. En fin, típico español, la culpa siempre es del otro. Ya va siendo hora de cambiar la tendencia y convivir y avanzar para el beneficio de ambos.

¿Pero qué supone Bolonia en realidad en esta convivencia necesaria? Yo lo veo con optimismo y siempre miro al ejemplo intentando aprender de él. Fuera de nuestras fronteras existen países que han conseguido crear el entorno necesario para convertir la Universidad en lo que es: el centro pionero del conocimiento y la investigación, pero con una gran relación con la empresa. Los países del Norte de Europa pueden mostrarnos mucho en este logro, y si aprovechamos la calidad de nuestros alumnos y docentes (latente, pero que está ahí), podemos llegar muy lejos y lograr cambiar la tendencia. No olvidemos que Bolonia supone converger con nuestros compañeros europeos, estar codo con codo con sus universidades, aprender de sus logros y de sus fracasos, y ellos de los nuestros. El cambio es necesario y Bolonia puede ayudarnos a tomar el buen camino.

¿Entonces, dónde está el problema de Bolonia? Lo veo claro, cristalino, transparente: nuestro eterno miedo al cambio. Tenemos miedo a cambiar lo que hasta ahora, aunque con deficiencias, nos ha funcionado. Universitariamente hablando somos conservadores, eso es innegable. Sólo hay que pasarse por las escuelas y facultades de nuestras universidades públicas para darse cuenta. La misma frase siempre está presente: “a mi siempre me ha funcionado así”. La burocracia y el enquistamiento de ciertos puestos públicos también ponen su granito de arena, pero no podemos echarle toda la culpa.

Tenemos que ser autocríticos, pero no sólo con los cambios, sino con lo que ya teníamos. Los cambios son para sacar provecho de la nueva situación y solucionar las deficencias. La versión 1.1 corrige los errores de la 1.0, pero la 2.0 mejora estratégicamente la anterior 1.9 con nuevos cambios, además de corregir los errores anteriores.

En definitiva, si tomamos Bolonia como una oportunidad para acercarnos a la empresa, a la vez que mejoramos la capacidad investigadora independiente de la Universidad, podemos cambiar la tendencia de España como un país de ventas a un país de conocimiento y desarrollo. Necesitamos Bolonia, siempre y cuando seamos capaces de quitar nuestro miedo. Debemos demostrar que en igualdad de sistema de estudios con nuestros colegas europeos podemos hacerlo incluso mejor que ellos. Yo creo que Bolonia es bueno, pero tenemos que poner todos de nuestra parte.

Muchas grandes mentes españolas han estudiado en nuestras universidades, pero gran parte de ellas han tenido que moverse fuera para demostrar su capacidad. Tal vez Bolonia ayude a que nuestros grandes talentos sólo crucen las fronteras como herramienta formativa, y no como destino final. ¡Sí a una Bolonia bien adaptada! ¡No a una Bolonia del pelotazo!

by David on May 10, 2008

Hace poco hice el upgrade de mi Ubuntu 7.1 Gutsy Gibbons, a la nueva versión 8.04 LTS Hardy Heron. Y como todos mis Linux los tengo virtualizados en una VMware Fusion en mi MacBook Pro terminé teniendo algunos problemillas con las VMware Tools.

En realidad lo que pasa es que la versión que yo tengo de las VMware Tools no están soportadas para el último kernel y librerías de la nueva versión de Ubuntu, así que hay que bajarse las fuentes de Open Virtual Machine Tools, configurar y compilar algunas cosillas, y sustituir los archivos generados por los originales de las VMware Tools proporcionadas por VMware Fusion. A partir de aquí ya podemos instalar nuestras VMware Tools sin problemas.

Es más sencillo de lo que parece. Podemos seguir, en este link, un paso a paso de la forma más sencilla posible, pero en definitiva:

  • Instalar con apt-get algunos paquetes1 necesarios de Ubuntu
  • Instalar en VMware Fusion las VMware Tools y descomprimir el .tar que nos proporciona
  • Descargar las Open Virtual Machine Tools
  • Descomprimir el tar.gz descargado, configurar y compilar
  • Crear .tar de los módulos generados2
  • Mover esos .tar, sustituyendo los antiguos, al directorio vmware-tools-distrib/lib/module/source de las VMware Tools a instalar
  • Por último, instalar las VMware Tools normalmente con sudo ./vmware-install.pl, dentro del directorio descomprimido de las VWware Fusion Tools

Efectivamente, no es excesivamente complicado para todo aquel familiarizado con el terminal, las VMware Tools y Linux en general, pero es cierto que es un poco “andar a ciegas” para todos aquellos newbies… ¡con lo que me había sorprendido la facilidad de actualización de Hardy Heron!

Notas
  1. build-essential, libgtk2.0-dev, libproc-dev, libdumbnet-dev, xorg-dev []
  2. En el directorio “modules/linux” del descomprimido del open-vm-tools: vmblock.tar, vmhgfs.tar, vmmemctl.tar, vmsync.tar, vmxnet.tar []
by David on May 2, 2008

Dos días hace ya de la actualización de Java for Mac OS X 10.5, Update 1 (sólo para arquitecturas Intel 64-bit), lo que nos permite a todos aquellos que tenemos un Mac Intel Core 2 Duo o superior poder “disfrutar” de la posibilidad de desarrollar, compilar, ejecutar… soportar, en definitiva, aplicaciones Java SE 6.

Pero ya nos avisan en la documentación de Apple que esta actualización no cambia la versión Java de nuestro Mac OS X a la última versión 6, sino que sólo nos proporciona la nueva versión si queremos usarla. Para comprobar la versión por defecto de nuestro Java en el Mac sólo tenemos que abrir un terminal (Aplicaciones > Utilidades > Terminal) y ejecutar el siguiente comando:

$ java -version

Deberíamos ver entonces algo como esto:

java version "1.5.0_13"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237)
Java HotSpot(TM) Client VM (build 1.5.0_13-119, mixed mode, sharing)

Lo que nos muestra que nuestro sistema aún está usando por defecto la versión 5 de la taza de café. ¿Y si queremos usar Java SE 6 en vez de usar la versión 5 (1.5.0_13) que tenemos por defecto?

Pues yo soy partidario de crearme alias para cada versión de Java y “correr” la versión que me venga en gana según mis necesidades, tal y como nos indican en Developer Connection, pero añadiendo, ahora sí, la última versión 6 (en nuestro .bash_profile en el directorio home del usuario, por ejemplo):

alias java16=/System/Library/Frameworks/\  JavaVM.framework/Versions/1.6/Commands/java

Podemos comprobar entonces que podemos “correr” Java con nuestra última versión 6:

$ java16 -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13-120)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_05-b13-52, mixed mode)

Vemos entonces, efectivamente, que el entorno es para 64-bit. También podemos cambiar las preferencias del Runtime de los applets de nuestro navegador para que se ejecuten con nuestra última versión Java SE 6 (siempre y cuando nuestro navegador lo soporte) con las Preferencias Java (Aplicaciones > Utilidades > Java > JavaPreferences), tal y como vemos en esta imagen:

En definitiva, que aún no se ha actualizado completamente a la nueva versión Java SE 6 en Mac OS X Leopard, pero sí es cierto que la nueva actualización, por lo menos, nos permite poder cacharrear a aquellos privilegiados que tenemos Intel a 64-bit. Esperemos que los chicos Java de Apple se lo curren un poquito más y tengamos el “soporte completo” de aquí a poco, tal y como podemos disfrutar en otras plataformas.

by Javier on December 12, 2007

O de cómo instalar el JDK 1.6 en Mac OS X y sacar provecho de él configurando el nuevo y crujientito Netbeans 6 para que lo use por defecto1. (Update: Tal vez queráis echar un vistazo también antes de hacer nada de lo que aquí se dice al post Otro Soylatte más (en taza de loza esta vez))

Últimamente hemos estado hablando algo en Venera7 acerca de JRuby on Rails y su conveniencia para los entornos empresariales. Una de las razones que lo hacen idóneo para ese tipo de despliegues es una cuestión de rendimiento, el cual mejora siempre con la última release del JDK. Así pues, siempre que sea posible, lo mejor será utilizar el JDK 1.6 junto con la última versión estable del compilador JRuby, que debería venir incluida con la última versión de Netbeans 6.

Si nuestra plataforma de desarrollo favorita es Mac OS X, desgraciadamente la versión oficial del JDK de Apple no avanza lo rápido que a los desarrolladores les gustaría, y a estas alturas de Leopard aún andamos con la versión 1.5 pese a que ya lleva un buen rato ahí fuera. Afortunadamente, siempre hay gente como Landon Fuller, que se ha currado un espectacular porting del JDK 1.6 de OpenBDS a Mac OS X y lo ha bautizado como SoyLatte2. ¡Ya podemos disfrutar de las últimas mejoras en el JDK en nuestro Mac!

La instalación del nuevo JDK es muy sencilla. He seguido los siguientes pasos en mi Macbook Pro Intel que deberían funcionar en cualquier ordenador Apple sin problemas:

  1. Primero me descargué la última versión en binario de Soylatte de la página oficial del proyecto. En mi caso no soy tan afortunado de tener un procesador a 64bit, así que pese a tener Leopard tuve que optar por la versión de 32.
  2. Una vez descargado, deescomprimí el archivo tar.gz y lo arrastré a la carpeta /usr/local.
  3. Para que Mac OS X reconozca por defecto el nuevo JDK, lo único que hay que hacer es añadir la ruta correcta a nuestro PATH. Para que el cambio sea permanente hay que hacerlo en el fichero .bash_profile que está en el home del usuario con el que habitualmente nos logamos al sistema. Además, nos aseguramos de que en la sesión actual estamos haciendo uso de él y de que funciona. Utilizando nuestra aplicación de terminal favorita (terminal o iterm son dos buenas opciones), hacemos un poquito de trabajo con la linea de comandos:
    $ echo "export PATH=/usr/local/soylatte16-i386-r3/bin:$PATH" >> ~/.bash_profile
    $ export PATH="/usr/local/soylatte16-i386-r3/bin":$PATH
    $ java -version Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_28_nov_2007_00_17-b00) Java HotSpot(TM) Server VM (build 1.6.0_03-p3-landonf_28_nov_2007_00_17-b00, mixed mode)
    

Bien, si hemos llegado hasta aquí todo está preparado para meterle mano a Netbeans 6.

Elegir un JDK específico en Netbeans es trivial; es una característica básica del IDE el poder seleccionar la versión del JDK con la que estamos trabajando. Sin embargo, para hacer funcionar Netbeans con Soylatte, hay que utilizar Swing bajo X11. No es tan bonito ni tan rápido pero, ¡funciona!

El autor de tamaño logro es Fabrizio Guidici, que en su blog detalla cómo hacer la configuración. Yo simplemente la estoy siguiendo en mi Mac con las últimas versiones disponibles y añadiendo mis propios comentarios.

Los pasos para hacer la configuración son los siguientes:

  1. Obviamente, descargar e instalar la última versión de Netbeans 6. En el momento de escribir este artículo la versión final ya estaba disponible, así que es la que he usado. Lo mejor en ir a la página principal para obtener la más reciente.
  2. Yo hice la instalación de Netbeans por defecto, así que el paquete debería estar en /Applications/NetBeans. Los paquetes de aplicación son navegables, así que me referiré al directorio sobre el que trabajaremos como $NETBEANS. Por comodidad, lo mejor es asignar a la variable el valor del directorio, así que en un terminal hacemos:
    $ export NETBEANS = /Applications/NetBeans/NetBeans 6.0.app/Contents/Resources/NetBeans
    
  3. Editamos el fichero $NETBEANS/bin/netbeans con nuestro editor favorito (por ejemplo, vi) para quitar un par de lineas que dan problemas con Soylatte3. Las lineas a borrar son:
    -J-Xdock:name=NetBeans \
         '"-J-Xdock:icon=$progdir/../nb6.0/netbeans.icns"' \
    
  4. Para terminar, especificamos la ruta a Soylatte en el fichero $NETBEANS/etc/netbeans.conf, editándolo y alterando el valor de la opción netbeans_jdkhome para que diga:
    netbeans_jdkhome=/usr/local/soylatte16-i386-r3
    

    Antes de guardar y salir, necesitamos hacer un cambio más en el mismo fichero para que se utilice el Look & Feel Swing en vez de Acqua, ya que si no Netbeans 6 tampoco conseguirá arrancar:

    netbeans_default_options=".... existing options.... --laf com.sun.java.swing.plaf.gtk.GTKLookAndFeel -J-Dswing.aatext=true"
    

Y eso es todo, ya podemos arrancar nuestro Netbeans 6, que lanzará el servidor X para poder funcionar. La selección de menús no va particularmente rápida, pero por lo demás el IDE es funcional.

Coda

Si bien usar Soylatte es una bocanada de aire fresco para los desarrolladores Java en Mac OS X, aún está el problema de tener a Apple con una estrategia menos que clara en lo que respecta a Java.

Java es una plataforma muy viva y crítica para cualquier desarrollo Enterprise. Son muchos los programadores que, atraidos por las ventajas de Mac OS X, en su momento se hicieron switchers. El problema es que el soporte a Java en Apple es cada vez peor (el caso de la falta de JVM en el iPhone es un flagrante ejemplo de ello). Es como si Apple ya se creyese con la suficiente fuerza como para descartar completamente a toda una plataforma y comunidad de desarrolladores y forzar una revolución en la plataforma de elección de la mayoría. El hecho de esta falta de soporte oficial está dañando la imagen de Mac OS X como alternativa viable, y está empezando a verse una vuelta a Windows de los desarrolladores Java.

Está claro que Java nunca será Cocoa en el entorno Mac OS X, pero no es tampoco el objetivo. El soporte de Mac OS X como plataforma de desarrollo Java tiene que mejorar porque la comunidad está ahí, la demanda existe y además los desarrolladores Java han sido hasta ahora grandes impulsores de la alternativa Mac.

La solución se ha demostrado sencilla. Si una sola persona puede solucionar el problema en su tiempo libre, una compañía debería hacerlo instantáneamente. Y si no, la opción es sencilla: ¡que Apple le haga una oferta a estos chicos!

Notas
  1. El crédito del por qué de este artículo se lo tienen que llevar Nando y Mario de EGE, por mantenerme al tanto de tan estupenda noticia []
  2. De ahí el título en inglés; era mucho más fácil hacer la broma de esa manera. []
  3. Se trata de los parámetros de Mac OS X utiliza para poner el nombre del menú principal y el icono de la aplicación []
by David on December 11, 2007

Algo más de cinco meses de existencia del iPhone y todavía no ha conquistado Europa. ¿Lo hará cuando llegue a España? Hmmm… pero… para entonces ya tendremos Android o algún GPhone en el punto de mira, ¿no? Es ahí donde me planteo la pregunta del millón: ¿iPhone o GPhone? Aunque la respuesta pueda ser difícil para algunos, a mí me resulta muy fácil responder y decantarme por la versión de Google. Planteo mi punto de vista.

Apple ha conseguido lanzar un producto “revolucionario” en muchos aspectos. La integración de varios dispositivos en uno, el magnífico interfaz multitouch, un diseño útil y elegante, y “embeber” un Mac OS X en el teléfono, son grandes ventajas y aciertos en un mundo tan díficil como el sector de la telefonía móvil. Pero ahí se queda este nuevo gadget, digamos que esas son sus ventajas competitivas. ¿Eso es todo?

No, eso no es todo. El iPhone es un dispositivo con un lanzamiento a lo grande, arrasando en el mercado americano gracias a su revolucionario hardware… Sí, lo he dicho bien: Hardware. Hay que reconocer que el Mac OS X que ofrece el nuevo teléfono de Apple está bien, pero ha decepcionado a gran parte de los usuarios del dispositivo, sobre todo a aquellos que hemos manejado el Mac OS X de los Mac durante tiempo. Pero el verdadero problema es una visión de futuro.

¿De verdad nos vamos a creer que nadie más va a ofrecer un teléfono parecido al iPhone?

A mí no me cabe la menor duda de que aparecerán. Y creo que será entonces cuando el iPhone reciba lecciones de software. Creo que el señor Steve Jobs no estudió muy bien la historia de los teléfonos móviles en Europa y su evolución. Aquí, en el Viejo Continente, la revolución llegó de la mano de Nokia. ¿Fue gracias a esos “ladrillos” de la marca finlandesa, tan pesados como el monedero de mi abuela? No, señor Steve, fue el software de esos ladrillos quien revolucionó ese mundo, esos menús tan intuitivos, visuales y bien pensados para el manejo de cualquier usuario, cuando ningún otro fabricante lo ofrecía.

Pero esa facilidad de manejo la encontramos en el iPhone, dirán muchos. ¡Cierto, un gran interfaz!… Pero retrocedamos a la 2ª Revolución de Nokia, cuando nadie apostaba 0,03€ (o lo que es lo mismo, un duro) por el relanzamiento de los dispositivos, al tener todas las marcas un interfaz y operativo relativamente parecido. Lo volvió hacer con software, siendo Nokia en Europa el fabricante que más apostó por la tecnología Java y el desarrollo “open” para sus terminales móviles. Y esta vez el resto de fabricantes no tardó en responder y subirse al tren de Java, actuando con rapidez y no quedándose atrás.

Y precisamente el último conato de 3ª revolución, iniciada por Apple y su iPhone, es totalmente distinta. Aquí el software es muy cerrado, con una ligera intención de ofrecer un SDK de desarrollo a ciertas esquinas del mundo, pero cerrado. En la era de las aplicaciones, la productividad y optimización, Apple decide limitar las capacidades del software de su “revolución”, y no proporcionar la capacidad de aceptar funcionalidades nuevas a su dispositivo. ¡Qué gran error!

Menos mal que alguien se da cuenta de esto y unos chicos en Mountain View, CA, deciden apostar de nuevo por el mundo del software en la tecnología móvil. Estos chicos, precisamente de Google, detectan el gran error de Apple y deciden apostar de nuevo por el software y el desarrollo open para la nueva revolución. Dejemos a los fabricantes que ofrezcan hardware de última tecnología y nosotros les proveemos de una plataforma abierta, flexible y adaptable a sus dispositivos – pensarían en Google – . ¡Tocado, iPhone!

Puedo equivocarme, pero a mí me da que las cosas no pintan bien para el futuro del iPhone si siguen con su actual filosofía. Las espectaculares ventas del iPhone en EEUU están cegando a los encargados del desarrollo del dispositivo y siguen luchando contra la historia, quien nos demostró que las plataformas móviles cerradas y los contratos de exclusividad no ofrecen un buen futuro en Europa. Y peor aún cuando no son capaces todavía de ofrecer últimas tecnologías hardware de conexión móvil, como 3G o la nueva HSDPA.

Ahora todos deseamos un iPhone, pero no sé si esto será así cuando aparezca un GPhone o un Android Based Phone decente. Desde luego no lo creo si no cambian el rumbo del teléfono-iPod. Si todo sigue igual, preferiré Android, y si no, les daré las gracias a las magistrales lecciones de software.

by Javier on November 25, 2007

Uno de los principios básicos de Getting Things Done (GTD1) es seguir el sistema en algo que siempre llevemos con nosotros2 y con el que nos sintamos confortables. Tal y como David Allen dice en su famoso libro homónimo, este algo puede ser una agenda, una PDA, un cuaderno, un taco de fichas de cartulina, etc. El caso es que sea algo que nos guste lo suficiente como para no olvidarse de la revisión que deberíamos hacer periódicamente de nuestros Actions y nuestros Proyectos.

Hasta hace poco, además de para escribir notas, ideas y otras cosas, he estado utilizando para mi GTD una Moleskine de bolsillo3. Pero desde que compré el iPhone, he consolidado PDA, iPod y teléfono en un sólo dispositivo, así que he empezado a usarlo como mi nuevo sistema GTD4. La razón es sencilla: el teléfono lo llevo a todas partes. Sin embargo mi Moleskine, aunque pequeña, a veces era un engorro de llevar, todavía más considerando que también me era necesario llevar un bolígrafo que tenía tendencia a perder.

A continuacion os cuento la manera en que lo estoy implementando, siguiendo dos principios basicos que garantizan la vida de la solucion y que sea realmente usable:

Mantenlo estandar
Hay varias aplicaciones que podria haber usado para ajustar GTD al iPhone, como MobileToDo, pero no son estandar. Lo que quiero decir con esto es que en la situacion actual, en la que el desarrollo de aplicaciones para el iPhone depende un puñado de bravos hackers que sin ningun soporte por parte de Apple, no se puede saber como va a acabar una aplicacion cuando el esperado Software Development Kit de Apple llegue a principios del año que viene.

Teniendo esto en cuenta, la unica opcion que encuentro factible es utilizar la aplicación Notes que ya viene con el iPhone.

Notes permite crear diferentes notas que, debidamente nombradas, pueden servir para imitar categorías. Así pues, la convención de nombres de cada nota y cómo están organizadas será muy importante. Además, dichas notas pueden enviarse por correo, lo que permite que si en un futuro aparece alguna aplicación oficialmente soportada para GTD, la migración de la información de las notas sea relativamente fácil.

Mantenlo sencillo

Un principio que bien podría servir para cualquier cosa, porque creo que es la clave misma de la usabilidad. El número y formato de las notas viene condicionado por las diferentes categorías que dentro de GTD estoy considerando, y por el contexto.

Las categorías son elementos en sí de Getting Things Done y los contextos son, eso, contextos en los que las acciones tienen relevancia para mí. Así pues, las notas siguen este esquema:

  • ACTION: items accionables físicamente.
    • Home
    • Office
    • Connected
    • Computer
    • Phone
  • PROJECTS: items no accionables físicamente. O sea, tareas que se componen de varias acciones.
    • Personal
    • Work
  • SOMEDAY/MAYBE: aquí van cosas como lo que quiero comprar algún día o proyectos de futuro que no voy a abordar a corto o medio plazo.
  • INBOX: Cosas que por prisa no he podido clasificar pasándolas por el flujo GTD.
  • ARTICLES AND POSTS: evidente, ¿no?

Para poder implantar esta jerarquía en Notes, que es plano jerárquicamente hablando, utilizo la siguiente convención de nombrado: mis notas se llaman CATEGORÍA – Contexto, seguido por una linea en blanco. El resultado es que las notas se pueden ver así:

Dentro de cada nota, los items (acciones, proyectos, accionables) son lineas básicas de texto separadas por un retorno de carro y marcadas en su inicio por un círculo negro o un guión. Cuando la tarea o el proyecto está hecho, no hay más que borrarlas. Por ejemplo, la lista de acciones en el contexto “Connected” tiene esta pinta:

Es importante que después del título de la nota haya una linea en blanco separando el título de los items. Si no se deja, el título de la nota no aparece limpio en la lista y afea el aspecto en categorías que estaba persiguiendo.

Para el futuro
Para el futuro, o sea, cuando el maldito y esperado SDK del iPhone haga su aparición, espero contar con una aplicación como Omnifocus para el iPhone, que me permita además establecer enlaces con el procesamiento del correo. Porque, por cierto, el correo también entra dentro de todo esto, ¿verdad?

Cierto, pero cómo aplicar Getting Things Done en el correo (y por extensión, en el correo del iPhone)lo dejaré para otro artículo.

Notas
  1. Getting Things Done se está convirtiendo en una especie de filosofía de la productividad. Aparte de la lectura del libro de David Allen, recomiendo una visita a 43Folders, blog dedicado a la productividad y en particular a GTD y todo el universo que le rodea. []
  2. esta es una de las razones por la que creo que aplicaciones como iGTD o Omnifocus no son suficientemente buenas para implementar GTD. Al ser programas que están instalados en un ordenador, es algo que no se lleva siempre encima, incluso si es un portátil, y eso invalida completamente la inmediatez del flujo de clasificación de GTD. []
  3. Básicamente siguiendo los consejos de organización que aparecen en el blog de Jerry Brito. []
  4. Ni que decir tiene que las ideas, notas, y diagramas siguen yendo a parar a mi Moleskine; nada mejor que el papel para capturar pensamientos incompletos, o para que el simple hecho de materializar una idea escribiendo te ayude a enfocarla. []