¿Se puede programar con Angular en una Raspberry Pi?
Sobre configuraciones y otros consejos
Gran cuestión. La respuesta rápida es "sí, pero". La respuesta larga tiene matices. ¿se puede programar con Angular usando una placa microcontrolador Raspberry Pi? Me propongo a compartir mis experiencias en este post, a lo mejor convencen o espantan a más de uno. Por su bajo costo (mucho menor que el de cualquier teléfono móvil) y sus posibilidades de funcionar como dispositivo de escritorio es muy tentador utilizarla para programar. No hablaré sobre edición de imagen y/o audio, pero si destacaré que hace años utilizo Gimp y Audacity en una Raspi y -salvo algunos errores de compatibilidad entre archivos de Gimp- suele tener un rendimiento más que aceptable. Mi profesión es la de desarrollador y hace más de un año que opté por programar parte del día en la oficina con una RasPi (por su bajo costo y su condición portátil). Muchos sabrán que hace años programo en Angular, entonces, ¿qué tanto se puede programar en Angular con una RasPi?.
Lo primero que hay que comprender es el desarrollo que ha tenido Raspberry Pi a lo largo de estos años. No es lo mismo la Raspberry Pi A que la Raspberry Pi 3 A+, y ni hablar de la reciente Raspberry Pi 4, como comentamos en su momento. Esto es fundamental ya que, entre otras cosas, han actualizado la Ram de estos dispositivos, y esa es una de las claves.
¿Cómo? ¿Se puede instalar Angular en Raspberry Pi?
Realmente nada lo impide, en mi caso lo he hecho varias veces en distintas placas y en todas se consigue instalar mediante NPM, completamente funcional, no supone ningún problema ni se instala de manera especial.
Angular en Raspberry Pi 3
En una RasPi 3, que llega a 1 Gb de Ram, el rendimiento de Angular es mediocre, mas no imposible. Está claro que el LiveReloading es una feature que no ayuda mucho al rendimiento, pero sacando el hecho de que demore muchos minutos en hacer el primer compilado, el problema no es tanto Angular sino el Navegador. Le costó a RasPi hacer funcionar un navegador como el Chromium (un par de versiones atrasado a la versión estable, se trata de algo así como un ESR), y lo lograron. El problema es que cada pestaña de un navegador consume unos cuantos Mb, sumado a los más de 100 Mb que necesita el navegador consumir de forma constante más un aproximado de 200 Mb que se estará llevando el sistema operativo (y sin contar programas ejecutados en segundo plano, según cada configuración). Lo que le queda a Angular para trabajar con LiveReloading es muy poco. Tenemos que tener cuidado, además, con el editor de código. Es posible instalar la versión de bajos recursos del VSCode en una RasPi y va a funcionar de manera aceptable, pero entre todo el framework y el browser es muy probable que esté llegando al limite de Ram y, más importante, usando todo el CPU. Dando como resultado que la RasPi se frene por completo.
Angular en Raspberry Pi 4
Aquí la cosa cambia bastante, no solo porque la placa tiene un procesador más potente que su predecesora, sino porque hay tres versiones dependiendo la Ram. El costo de la placa está determinado por dicha elección. ¿Qué pasa si utilizamos la versión de 1 Gb? Posiblemente funcione mejor que la RasPi 3 de igual cantidad de Ram, debido a que el procesador administra mejor ambientes como el de Angular. No obstante, la apuesta fuerte es emplear una Raspberry Pi 4 de 4Gb de Ram. Vengo utilizando una de esas placas hace unos meses para programar en Angular media parte del día y los resultado son satisfactorios, como muestra esta captura en nuestro Instagram:
El primer tiempo de renderizado es sustancialmente más lento que con cualquier ordenador de gama media moderno. No obstante el LiveReloading (si bien no es tiempo real como ocurre en una buena laptop) no está nada mal para programar. Y en este caso utilizar el VSCode para Raspi, en el Chromium, con Angular ejecutándose, el pre-render de Typescript y emplear algunas pestañas más del navegador como consulta (doc y demás) no hacen a la RasPi 4 sentirse para nada lenta. He llegado a forzar situaciones donde necesité ejecutar scripts mediante SSH e incluso conexión VPN a otra computadora y la RasPi 4 pudo ejecutar Angular sin problemas. Sin dudas es una gran recomendación si se necesita algo barato para empezar a aprender Angular y Linux.
Consejos para programar en Angular con Raspberry Pi
Serán consejos más que nada para Raspberry Pi 3 y las versiones de 1 Gb de Raspberry Pi 4 (claro que el mejor consejo es tratar de conseguir la de 4Gb, pero no siempre se puede). Si hay algo que aprendí de programar con Angular en la RasPi 3 -y que sería el mejor consejo- es no pedirle peras al olmo. La placa hace lo que puede, si se desea usarla para algo que excede su nivel mejor cambiar algunos hábitos. Por ejemplo, tratar de no abrir más pestañas que la necesaria para visualizar la App de Angular, y no tener programas en segundo plano consumiento Ram y CPU. Para esto siempre es bueno utilizar el Administrador de Tareas de Raspbian y monitorear un poco.
Fuera de eso, una gran alternativa es hacer Overclocking digital, el conocido como ZRam. En mi RasPi 3 personal fue de gran ayuda, le permitió manejarse con mayor soltura en la navegación web. Eso si, tener en cuenta que ahí será imprescindible utilizar disipadores y un cooler, que de paso es otro gran consejo para potenciar la vida útil de la RasPi en general. Incluso es necesaria para el procesador de la RasPi 4, en mi caso pude conseguir un "gabinete difusor" y un doble cooler, realmente no se trata de un presupuesto elevado y todo lo relacionado a bajar la temperatura de estas placas siempre es una gran inversión. Y terminando con el hardware, un detalle importante, utilizar una fuente de alimentación de 3 A. Esto habilita la aceleración por Hardware haciendo que ganemos un poco más de rendimiento. Siempre recordar utilizar una tarjeta SD nueva, o al menos de nueva generación, clase 10.
Respecto al Software empleado, también hay muchas cosas por hacer. Lo más importante es el navegador, ya que no tenemos porque quedarnos con Chromium. En mi larga búsqueda, luego de muchos callejones sin salida, pude hacer uso de dos más. Por un lado Vivaldi para RasPi es una gran alternativa, ya que usa el motor de Chromium pero está ligeramente más optimizado. Además, cuenta con varias herramientas para deshabilitar animaciones innecesarias y la posibilidad de desactivar el consumo de Ram en pestañas que están en segundo plano. También está la opción de Firefox ESR, el cual consume un poco menos que Chromium y tiene muchas herramientas de desarrollo. Por desgracia va muchas versiones atrasado de la versión estable oficial, por lo tanto no está muy actualizado con los últimos estándares (no deja de ser una gran alternativa de todas maneras). La diferencia entre los tres no es que sea mucha, pero en una RasPi 3 puede ser la diferencia en determinadas Apps de Angular. Sea cual sea la elección, aconsejo deshabilitar el "smooth scrolling" que viene activado siempre por defecto, aunque suene increíble afecta al rendimiento. En lo personal utilizo Vivaldi y Firefox ESR para RasPi 3; y Chromium para RasPi 4, pero solo por un tema de sincronización de cuentas, cualquiera de los tres cumple.
Siguiendo la línea del software, quedaría por ver el tema del editor. En RasPi 4 se puede tener el VSCode abierto y hacer cualquier cosa sin problemas; pero en RasPi 3 será difícil usarlo de manera corriente. Está la posibilidad del editor Geany, suele venir instalado por defecto, es ligero, tiene resaltado de sintaxis en JavaScript y poco más. No tiene pre-renderizado de TypeScript y dudo que de lograr tenerlo funcione bien en la RasPi 3. Es la mejor opción si no se quiere utilizar el Nano, Vim o EMacs, los cuales en esta placa no son para nada malas opciones, al menos permiten dedicar la Ram y el CPU casi en su totalidad al LiveReloading de Angular.
Acerca de:
Ignacio Buioli
Degree on Multimedia Arts. He has developed numerous Multimedia projects as well as written articles and translated texts of the mentioned subject. In Moldeo Interactive, He is a Partner and Programmer; also taking care of a large part of the online networks and courses.