macOS en la nube

A la hora de desarrollar aplicaciones para iOS, no todos tenemos accesible un Mac en el que trabajar. Para resolver este problema, he encontrado un servicio llamado macincloud que permite acceder remotamente a un equipo en el que podemos trabajar a un precio razonable.

El plan más barato es de 20 dólares al mes (unos 17 euros) y permite usar un Mac mini con 8GB de RAM durante un máximo de tres horas diarias.

Puntos a tener en cuenta:

  • Hay que recordar cerrar la sesión cada vez que vayamos a estar inactivos usando la opción del menú, no basta con cerrar la ventana.
  • Xcode y todo el software que necesitamos ya está instalado. Si falta algo, se puede pedir a través del formulario del panel de control.
  • El soporte es rápido, tuve problemas con CocoaPods, que no arrancaba, pero en unas horas lo habían reinstalado y estaba resuelto.

Unas capturas de ejemplo:

Programando un rover NXT con Java

Al hilo de un ejercicio que hemos hecho en la asignatura de programación, y los problemas para comprender por qué creamos los programas de este modo, se me ha ocurrido crear físicamente un pequeño rover basado en este robot en 5 minutos.

Resulta que al ladrillo de LEGO Mindstorms NXT que tengo se le puede reemplazar el firmware por otro llamado leJOS NXJ, que permite programar el sistema usando código escrito en Java.

Instalación del software necesario

Trabajo sobre macOS y antes de empezar he tenido que hacer algunos cambios:

  • Instalar Java 6 para macOS. Algunos de los componentes necesitan una máquina virtual Java de 32 bits, así que no queda otra que instalar la versión antigua.
  • Descargar NXJ y descomprimirlo.
  • Crear algunas entradas en el fichero ~/.profile o ~/.bash_profile:
export NXJ_HOME="<RUTA A LA CARPETA DESCOMPRIMIDA DE NXJ>"
export LEJOS_NXT_JAVA_HOME=$(/usr/libexec/java_home -v1.6)
export PATH="$NXJ_HOME/bin:$PATH"

Actualización del firmware

Advertencia: este proceso sobreescribe el firmware original de LEGO y, si algo va mal, os podéis quedar con un NXT inutilizado. Seguid las instrucciones del tutorial al pie de la letra, NO me hago responsable de lo que ocurra.

Dicho esto, el siguiente paso es instalar el firmware de LeJOS mediante el comando nxjflash.

Construyendo el rover

Siguiendo las instrucciones y con algunos extras propios, ha quedado así:

rover_nxt

Básicamente disponemos de dos motores, conectados en A y B, y un sensor de ultrasonidos, conectado en S1.

¡Hola mundo!

Primera prueba, siguiendo el tutorial:

import lejos.nxt.Button;

public class HolaMundo {
    public static void main (String[] args) {
        System.out.println("Hola mundo");
        Button.waitForAnyPress();
    }
}

Compilar y ejecutar el programa

Para compilar los programas, usamos nxjc y para enlazarlos y ejecutarlos en el ladrillo conectado por USB, nxj:

$ nxjc HolaMundo.java
$ nxj -r -o HolaMundo.nxj HolaMundo

En la documentación hay más detalles y opciones.

Moviendo el rover

En este repositorio de GitHub están el resto de los ejemplos, junto con un script para compilarlos cómodamente.

¿Y ahora?

Todo lo necesario para hacer programas más complejos está explicado en el tutorial de NXJ.