Sistemas & Desarrollo
8 meneos
53 clics

Comunicación de procesos en Linux II: tuberías y colas de mensajes [ENG]

Este es el segundo artículo de la serie sobre comunicación entre procesos (IPC) en Linux. El primer artículo se centró en IPC a través del almacenamiento compartido: archivos y memoria compartida. Este artículo se dirige a las tuberías (pipes), canales que conectan procesos para la comunicación con un punto de escritura para escribir bytes y otro punto de lectura para leer estos bytes en orden FIFO (primero en entrar, primero en salir), y colas de mensajes, donde se añaden mensajes a colas FIFO que luego se procesan.
8 meneos
83 clics

Comunicación de procesos en Linux I: archivos y memoria compartida [ENG]

Este es el primer artículo de una serie sobre comunicación entre procesos (IPC) en Linux. La serie utiliza ejemplos de código en C para aclarar los siguientes mecanismos de IPC: archivos compartidos; memoria compartida (con semáforos); pipes (con nombre y sin nombre); colas de mensajes; sockets; y señales. Este artículo revisa algunos conceptos básicos antes de continuar. Los dos primeros de estos mecanismos: archivos compartidos y memoria compartida.
3 meneos
22 clics

Cifrado de repositorios Git

Esto de tener un repositorio en GitHub, o incluso en GitLab, por no decir, en cualquier otro de los servicios que hay disponibles, es algo que ha pasado de ser extraño a estar a la orden del día. No solo se utiliza para el trabajo colaborativo en el desarrollo de software, sino que también se usa para multitud de otras actividades: desde guardar tus archivos de configuración hasta para escribir libros, ya sea solo o de forma colaborativa. Lo cierto es que es posible que guardes información sensible. En este sentido la solución es el cifrado de repositorios Git.
4 meneos
17 clics

Google revela un error de “alta severidad” sin parchear en el núcleo de Apple macOS

Investigadores de Google Project Zero han hecho pública una vulnerabilidad en macOS, después de que Apple no haya liberado un parche en los 90 días previos a la publicación. Descubierta por el investigador Jann Horn y demostrada por Ian Beer, la vulnerabilidad reside en la forma que el kernel de macOS, XNU, permite a un atacante manipular el sistema de ficheros sin informar al sistema operativo.
2 meneos
33 clics

Cuatro herramientas de gestión de secretos cifrados en Git [ENG]

Hay una gran cantidad de excelentes herramientas de código abierto para almacenar secretos en Git. Puede ser difícil determinar cuál es el mejor dependiendo del caso, así que para ayudar a comparar y elegir, vamos a ver y comparar cuatro de las herramientas de código abierto más populares para la gestión de secretos en Git.
4 meneos
32 clics

Convirtiendo números en coma flotante a cadenas de caracteres [ENG]  

La conversión de números de punto flotante (FP) a cadenas de caracteres es una tarea sorprendentemente complicada. Si bien es probable que se pueda escribir un conversor de enteros a cadenas de caracteres decente en cuestión de minutos, un buen algoritmo de formateo de números en coma flotante merece un artículo en una revista científica. Florian Loitsch publicó un algoritmo, o más bien una clase de algoritmos, llamado Grisu, en el documento “Impresión rápida y precisa de números de punto flotante con números enteros” en 2010.
2 meneos
45 clics

Compiladores e intérpretes de ‘bytecode’ [ENG]

Aquí hay una entrada de blog sobre cómo escribir un pequeño compilador e intérprete de ‘bytecode’ en pequeños fragmentos, comenzando con las opciones más simples y aumentando el resto de la pila cuando necesitemos otros componentes.
3 meneos
38 clics

Liran Zvibel (WekaIO) cuenta cómo usar D para crear el sistema de archivos más rápido del mundo [ENG]

WekaIO es una startup con sede en San José, California, que ha creado Matrix, el sistema de archivos más rápido del mundo, y lo ha escrito en D. WekaIO es un ejemplo de objetivo de diseño de D: poder escribir prototipos rápida y fácilmente para luego continuar trabajando en la misma base de código hasta alcanzar calidad de producción en lugar de crear prototipos en lenguajes de alto nivel diferentes. Liran hizo un hueco en su apretada agenda para responder algunas preguntas sobre WekaIO y el uso que hacen de D.
3 meneos
63 clics

Qué hace a BeOS y Haiku únicos [ENG]  

En este artículo se describen las características propias de Haiku junto a ciertas características heredadas de BeOS que hacen que Haiku sea un sistema operativo único. Por ejemplo, cómo funcionan los paquetes de software, packagefs, simplicidad de la interfaz, formato vectorial de los iconos (HVIF), atributos del sistema de archivos, el comando hey, etc.
2 meneos
57 clics

Creando un script de completado de BASH [ENG]

La funcionalidad de completado de BASH es una característica de esta shell a través de la cual se ayuda a los usuarios a escribir comandos de forma más rápida y sencilla. Esto se logra al presentar opciones posibles cuando los usuarios presionan la tecla de tabulación (una o dos veces) mientras escriben un comando. En esta publicación intentaré familiarizarte con el proceso de creación de un script de completado de BASH.
4 meneos
70 clics

Despedazando ‘printf()’ [ENG]  

Si ‘Hello World’ es el primer programa hacen los estudiantes de C, printf() es probablemente la primera función que usan. He respondido preguntas sobre printf() muchas veces, por lo que finalmente he dedicado tiempo para hacer una reseña. Las preguntas comunes se adaptan generalmente a dos formas: fácil: ¿cómo resuelve mecánicamente el problema del formato?; compleja: ¿cómo muestra printf() el texto en pantalla? Mi respuesta habitual suele ser: abre stdio.h y búscalo. Esta tarea no es sólo una gran experiencia de aprendizaje, sino que también es una prueba interesante para el principiante dedicado. ¿Volverá con la respuesta? Si es así, ¿con qué nivel de detalle?
2 meneos
44 clics

Rincones oscuros de Unicode [ENG]

Supongo que, si estás en Internet y lees algún blog nerd, sabes qué es Unicode. Por lo menos tienes una comprensión muy general de ello, quizás un “es lo que nos da emoji”. En mi experiencia eso es todo lo que extiende la comprensión de la gente, incluso entre los programadores. Y eso es una tragedia, porque Unicode tiene mucha... profundidad. No quiere decir que Unicode sea un desastre terrible, o no más desastre terrible que el lenguaje humano, y cualquier cosa con los nobles objetivos de representarlo no estará libre de arrugas.
2 meneos
44 clics

La asombrosa plantilla que no hace nada [ENG]

Recientemente empecé a usar una nueva plantilla con más frecuencia en el nuevo código D: el uso de la plantilla de identidad. La plantilla de identidad (disponible en std.traits aunque no documentada), se declara así: alias Identity (alias X) = X;. Esta es una forma abreviada de una declaración de plantilla, sinónimo de la forma explícita: template Identity (alias X) { alias Identity = X; }. Se trata de una plantilla epónima, por lo que la instanciación se reemplaza con X (el único parámetro de la plantilla). En consecuencia, Identity!(anything) es asignado a anything. Entonces, ¿de qué sirve una plantilla que no hace nada?
4 meneos
86 clics

¿Qué hace un procesador cuando no tiene nada que hacer? [ENG]

Una CPU está inactiva si no hay tareas a ejecutar. El kernel Linux tiene varias clases de prioridad interna de procesos; una de ellas es la clase especial de procesos inactivos. Si no hay tareas a ejecutar en una CPU determinada en cualquiera de sus clases la CPU se considera inactiva. Si el hardware no soporta “desactivar” las CPU entonces la CPU tiene que ejecutar instrucciones inútiles hasta que sea necesaria para trabajo real. Sin embargo, este es un uso muy ineficiente de la electricidad, por lo que muchas CPU soportan estados de bajo consumo. Pero entrar en esos estados no es gratis.
3 meneos
33 clics

Considerando las implicaciones que tendría en el rendimiento usar una pila explícita en lugar de recursión [ENG]

Supongamos que tenemos un algoritmo de recursión explícita. Por ejemplo, un algoritmo que recorra un árbol en in-orden. Supongamos además que la pila es lo suficientemente grande y el conjunto de datos lo suficientemente pequeño como para que el desbordamiento de la pila no sea un problema. ¿Mejorará el rendimiento si se convierte el algoritmo recursivo en un algoritmo no recursivo con una pila explícita?
3 meneos
48 clics

Matando procesos que no quieren morir [ENG]

Supongamos que hay un programa ejecutándose en su sistema en el que no confía del todo. Tal vez es un programa presentado por un alumno a un sistema de calificación automatizado. O tal vez es un modelo de dispositivo QEMU que se ejecuta en un dominio de control Xen ('dominio 0' o 'dom0') y quiere asegurarse de que incluso si un atacante de una máquina virtual deshonesta se las arregla para hacerse cargo del proceso QEMU no puedan hacer más daño. Hay muchas cosas que quiere hacer en cuanto a restringir su capacidad de hacer travesuras, pero hay algo que probablemente quieras hacer: matar el proceso de manera confiable cuando se crea necesario.
4 meneos
32 clics

¿Cuál es la diferencia entre un entero y un puntero? [ENG]

En lenguaje ensamblador normalmente no tenemos que preocuparnos demasiado por la distinción entre punteros y números enteros. Algunas instrucciones generan direcciones mientras que otras se comportan aritméticamente, pero debajo hay un único tipo de datos: bitvectors. En cambio, los lenguajes de alto nivel no ofrecen oportunidades para confundir punteros y enteros ya que las abstracciones separan por completo el uno del otro. Además, un lenguaje de alto nivel puede elegir no exponer nada relacionado con punteros.
2 meneos
33 clics

Diseccionando QNX [ENG|PDF|492 KiB]

Este trabajo es una disección de QNX, el sistema operativo propietario en tiempo real dirigido al mercado integrado. QNX se usa en muchos dispositivos sensibles y críticos en diferentes industrias y, aunque alguna investigación previa de seguridad ha descrito QNX como un subproducto de investigación móvil de BlackBerry, no hay trabajo previo sobre mitigación de exploits en QNX y generadores de números aleatorios seguros. En este trabajo se presenta la primera ingeniería inversa y análisis de las mitigaciones de exploits, generadores de […].
2 meneos
20 clics

HHVM 3.30 será la última versión que soporte PHP [ENG]

HHVM v3.30 será la última serie de lanzamientos donde HHVM pretende soportar PHP. En última instancia, recomendamos que los proyectos migren por completo al lenguaje Hack, o completamente a PHP7 y al entorno de ejecución de PHP.
2 meneos
70 clics

Cómo funciona HTTPS [ENG][Comic]  

Serie de cómics que explica diferentes conceptos de HTTPS.
2 meneos
60 clics

Ocho ejemplos de cómo se usa el comando ‘ldd’ [ENG]

‘ldd’ es una utilidad de línea de comandos de Linux que se utiliza para conocer las dependencias de bibliotecas compartidas de un archivo ejecutable o incluso de las propias bibliotecas compartidas. Una biblioteca es una colección de recursos tales como subrutinas/funciones, clases, valores o definiciones de tipos de datos. Hay dos tipos de bibliotecas: estáticas, donde los recursos que contiene se incluyen en el ejecutable final, y dinámicas, donde los programas que las usas sólo llevan una referencia a las mismas. Es mediante el comando ‘ldd’ con lo que se muestran estas librerías dinámicas compartidas usadas por cada aplicación.
3 meneos
49 clics

Implementación de una hoja XSL para la salida de nmap usando Bootstrap

Una manera rápida y eficaz de revisar la información obtenida de un escaneo de nmap cuando tenemos muchos resultados es hacerlo mediante un informe en HTML. Sin embargo, nmap no tiene la opción de guardar directamente los resultados del escaneo en HTML, por lo que para conseguir este informe se puede indicar que la salida sea en XML e indicarle la ruta a una hoja XSL que describe cómo debe transformarse. El alemán Andreas Hontzia ha publicado una hoja XSL para nmap con la que se obtienen unos resultados bastante buenos.
3 meneos
28 clics

Evil FOCA, LiLaS y el arte del engaño  

FOCA comenzó como un proyecto llamado Metaextractor que ampliaba las funcionalidades de una PoC que preparamos para un congreso en la Open Source World Conference llamado OOMetaExtractor. Luego le fuimos añadiendo cosas y se convirtió en la FOCA, y lo derivamos a una versión de protección en forma de MetaShield Protector, ganando incluso premios a la innovación.
3 meneos
5 clics

Planes R1/beta 1 de Haiku OS [ENG]

Por fin, R1/beta1 está por llegar. Como ya expliqué en la lista de correo, solo dos problemas que no son "tareas" permanecen en el hito de la versión beta 1, y tengo prototipos de soluciones para ambos. El buildbot y otros servicios importantes han sido rehabilitados y solo necesitarán ajustes menores para manejar la nueva sucursal, y mmlr ha estado dando masajes al constructor HaikuPorter para que también pueda manejar la nueva rama, aunque ese trabajo aún no está terminado.
4 meneos
43 clics

TinyWM: un pequeño gestor de ventanas [ENG]

TinyWM es un pequeño gestor de ventanas que he creado como ejercicio de minimalismo. También puede ser útil para aprender conceptos básicos sobre cómo crear un administrador de ventanas. Sólo tiene alrededor de 50 líneas de código en C (también hay una versión de Python que usa python-xlib). Este gestor permite hacer cuatro cosas básicas: mover ventanas; cambiar el tamaño de las ventanas; elevar ventanas; y poner el foco en una ventana con el ratón.
3 meneos
51 clics

microctfs: pequeños retos en contenedores docker para practicar

¿Estas de vacaciones y/o tienes tiempo libre y quieres practicar tu pericia con pequeños CTFs (Capture The Flag)? El americano Gabe Marshall tiene un repositorio en Github con una serie de interesantes microrretos en forma de contenedores Docker que pueden levantarse de inmediato para empezar a jugar. Te animo a probarlos y a compartir tu feedback e incluso writeups con nosotros.
2 meneos
30 clics

Sistema Operativo "Étoilé" (Eng)

Étoilé pretende ser un entorno de usuario basado en GNUstep innovador construido a partir de componentes altamente modulares y ligeros con la orientación de proyecto y documento en mente, para permitir a los usuarios crear su propio flujo de trabajo mediante la remodelación o recombinación de los Servicios provistos (también conocidos como Aplicaciones), Componentes, etc. La flexibilidad y la modularidad, tanto en la interfaz de usuario como en el nivel del código, nos deberían permitir escalar desde el PDA al entorno de la computadora.
2 meneos
49 clics

Movimiento y salto 2d en Godot Engine

Si eres nuevo en Godot Engine es probable que quieras aprender a mover cosas dentro de una escena. En esta entrada te mostrare como cumplir ese objetivo y, además, a aplicar gravedad. El proyecto que he realizado y que pueden usar para hacer las pruebas se encuentra aquí: mysGE Voy a tratar de explicar detalladamente lo que hace cada código
3 meneos
48 clics

Fuchsia el sistema operativo creado por Google va soportar aplicaciones de Linux (Inglés)

El sistema operativo de Google que no esta basado en Linux ha agregado un emulador para ejecutar aplicaciones de Debian...
3 meneos
16 clics

Se busca betatesters para los drivers de wifi y ethernet en Haiku OS

Haiku ha actualizado la capa de compatibilidad con freebsd del 9.2 al 11.1 de los drivers de red y agradece testeo para asegurar el correcto funcionamiento de la actualización.
4 meneos
67 clics

Análisis del coste/beneficio de comparar antes de asignar una variable [ENG]

Teniendo los dos siguientes fragmentos de código: 1) x = newValue;, y 2) if (x != newValue) x = newValue;, la pregunta es ¿cuál es más rápido? La respuesta es: depende. El segundo fragmento introduce más trabajo, ya que tiene que comparar y luego asignar, pero evita escribir en memoria innecesariamente. También hay que tener en cuenta que influyen cosas como si existen barreras de memoria (memory barriers), si se usa copy-on-write, cómo funcionan las cachés de los procesadores, etc.
2 meneos
29 clics

Ejecución de scripts en PowerShell evadiendo AMSI, logging y firmas

El uso de scripts y lenguajes interpretados se ha convertido en un medio muy usado para saltarse la detección de malware o actividades maliciosas por parte de las soluciones antimalware tradicionales. Para evitarlo, Microsoft introdujo en Windows 10 otra protección denominada AMSI (Antimalware Scan Interface), sobre todo para inspeccionar los scripts que son invocados en tiempo de ejecución, abarcando no sólo PowerShell, si no también VBScript, Ruby y otros muchos lenguajes. Pero la batalla nunca termina y pronto empezaron a surgir […].
2 meneos
24 clics

Cómo funciona el sistema de archivos de Windows 95 [ENG]

Este libro, publicado en 1997, muestra el funcionamiento interno del sistema de archivos de Windows 95, incluyendo VFAT (el sistema de archivos FAT virtual), VREDIR (cliente de Microsoft Networks) y NWREDIR (cliente de Microsoft Netware). Además se anticipan algunos de los cambios que aparecerían en el sucesor de Windows 95 (con nombre en clave Memphis), como FAT32, volúmenes de hasta 2 terabytes y WDM. [ Enlace directo al libro: Inside the Windows 95 File System PDF 16,8 MB ]
3 meneos
34 clics

Arduino con Haiku OS  

Hoy les mostraré algunas screenshots que obtuve del grupo de Telegram para Haiku donde Gerasim Troeglazov nos muestra cómo trabaja Arduino con Haiku y Fritzing.
3 meneos
89 clics

Colección de ‘trucos’ para sistemas de archivos NTFS en Windows [ENG]

Colección de ‘trucos’ en sistemas de archivos NTFS en Windows, entre los que se incluyen el poder crear un directorio en otro directorio cuyos permisos no lo permitan, o crear archivos cuyos nombres sean sólo puntos.
5 meneos
55 clics

C no es un lenguaje de bajo nivel [ENG]

A raíz de las recientes vulnerabilidades de Meltdown y Spectre, vale la pena pasar algún tiempo mirando su causa principal. Ambas vulnerabilidades involucraban a los procesadores ejecutando instrucciones especulativamente sin ningún tipo de control de acceso permitiendo al atacante observar los resultados a través de un canal lateral. Las características que llevaron a estas vulnerabilidades se añadieron para permitir que los programadores de C continúen creyendo que están programando en un lenguaje de bajo nivel.
3 meneos
48 clics

Validando cadenas UTF-8 usando tan poco como 0,7 ciclos por byte [ENG]

La mayoría de las cadenas que se encuentran en Internet están codificadas usando un formato unicode particular llamado UTF-8. Sin embargo, no todas las cadenas de bytes son UTF-8 válidas. Las reglas sobre lo que constituye una cadena UTF-8 válida son un tanto arcanas. Sin embargo, parece importante validar rápidamente estas cadenas antes de consumirlas.
2 meneos
30 clics

menesteroso ruso invento el whatsapp y regreso a donde le daban de comer gratis a hacer un donativo

Un ruso llega USA a vivir de la asistencia publica y hoy se retira de la presidecia del invento que lo saco de la pobreza Whatsapp
3 meneos
44 clics

Todo lo genial que tiene D se puede ver en ‘std.variant’ [ENG]

Hace poco leí un excelente artículo de Matt Kline sobre todo lo malo de std::visit de C++. Mis habilidades en C++ están oxidadas (hace tiempo que me fui para los pastos más verdes de D), pero tenía curiosidad sobre cómo habían cambiado las cosas en mi ausencia y cómo se podría implementar lo mismo en D. Aunque mi intuición me decía que el artículo exageraba, al final esta estaba completa y absolutamente equivocada.
3 meneos
66 clics

Una nueva era en la arquitectura de gráficos de bajo nivel en Linux (parte 1) [ENG]

Las últimas mejoras en el subsistema DRM han hecho que el la línea principal de desarrollo de Linux sea mucho más atractiva haciendo que los controladores sean más fáciles de escribir, las aplicaciones sean portables, y una comunidad mucho más amigable y colaborativa que nunca.
3 meneos
71 clics

Cómo (y por qué) hemos migrado el solitario Shenzhen a MS-DOS [ENG]  

¿Pueden dos programadores que están acostumbrados a hacer juegos para ordenadores modernos con gigabytes de RAM y pantallas de alta definición migrar uno de sus juegos a MS-DOS? Ninguno de nosotros tenía experiencia en el desarrollo en hardware tan antiguo, pero como trabajar en sistemas con limitaciones artificiales es algo así como una especialidad en el diseño de juegos dentro de Zachtronics, nos sentimos obligados a probar.
3 meneos
32 clics

El gestor de contraseñas bitwarden ya tiene aplicación de escritorio  

Hace algo más de un año que os presentamos el gestor de contraseñas bitwarden, una alternativa de código abierto a servicios como LastPass que no ha dejado de madurar desde entonces. Su última gran novedad es el lanzamiento de una aplicación de escritorio multiplataforma, disponible para Linux, Windows y macOS. Resumiendo: Bitwarden es básicamente un clon de LastPass, un servicio en la nube para gestionar contraseñas con extensiones para los principales navegadores, Android e iOS e, imprescindible, cifrado en el lado del cliente, cuya virtud más destacada es que todos sus componentes son software libre. // Relacionada: Cómo gestionar contraseñas con Bitwarden.
3 meneos
41 clics

Cómo gestionar tus contraseñas con Bitwarden, una alternativa a LastPass [ENG]  

¿No has sentido alguna vez que tienes más contraseñas de las que puedes gestionar? Es probable que sea algo más que un sentimiento y, al igual que muchos, probablemente gastes bastante tiempo recordando contraseñas independientemente de lo difíciles que sean. Es por esto que mucha gente usa servicios como LastPass o 1Password que, aunque son servicios sólidos, no dejan de ser propietarios y con código fuente cerrado. ¿Existe alternativa código abierto? Bitwarden es una alternativa de código abierto para gestionar contraseñas en la web.
3 meneos
34 clics

Google lanza la biblioteca ‘cpu_features’ para identificar las características de la CPU [ENG]

Imagina que estás desarrollando una aplicación donde la velocidad es esencial y donde ciertas instrucciones del procesador la incrementan exponencialmente. Y aparece el problema: no es posible conocer a priori qué instrucciones soporta el procesador (identificar el fabricante no es suficiente). Se pueden crear mapas estáticas con modelos y características, pero es tedioso de mantener. Aquí es donde entra cpu_features, una librería pequeña, rápida y de código abierto para obtener las características de la CPU en tiempo de ejecución.
3 meneos
7 clics

Puedes resucitar cualquier cuenta borrada de GitHub; y ello crea un problema de confianza para la plataforma

La repentina partida de un desarrollador de GitHub, junto con los paquetes que mantuvo, supuso un problema para los desarrolladores que utilizaban su código en sus proyectos. Uno de ellos resucitó la cuenta y repobló los paquetes perdidos; hecho que ha puesto en evidencia un posible problema de seguridad y de confianza en la plataforma… [via] maslinux.es/problema-de-confianza-con-github
3 meneos
22 clics

Manage Remote MySQL Servers with Local phpMyAdmin throug a SSH Tunnel [eng]

Have you ever needed to manage your remote MySQL databases, and ended up settling on the less-than-ideal setup of having an instance of phpMyAdmin on the same server as the MySQL server? Well, I am about to make your day. I am going to show you how to manage any number of remote MySQL databases from your local instance of phpMyAdmin; without compromising on security.
3 meneos
41 clics

Hershell, una shell reversa escrita en Go

Hershell, de Ronan Kervella, es una sencilla shell reversa TCP escrita en Go que utiliza TLS para proteger las comunicaciones y certificate pinning para evitar la interceptación de tráfico. Se presenta como una interesante alternativa a los payloads de meterpreter que muchas veces son detectados por los AV y, al estar escrito en Go, puede compilarse para la arquitectura deseada. Soporta Windows, Linux, Mac OS, FreeBSD y derivados.
2 meneos
21 clics

Terraformando tu infraestructura en el Cloud

Terraform nos permite describir, evaluar y aplicar cambios en nuestra infraestructura mantenida como código (infrastructure as code). Creado por Hashicorp y liberado como open source, Terraform se une a productazos de esta misma compañía como Vagrant, Vault, Nomad o Consul, los cuales destacan historicamente por su calidad y flexibilidad...
3 meneos
7 clics

Swift Package Manager – Paquetes y Dependencias

En esta ocasión aprenderemos sobre Swift Package Manager, el gestor de paquetes de Swift, una herramienta con la cual podremos crear paquetes / proyectos ya sean librerías o ejecutables, gestionar las dependencias de estos y en general administrar de una manera más fácil y consensuada la distribución de nuestro código Swift...
5 meneos
78 clics

VisUAL: un emulador de la arquitectura ARM altamente visual [ENG]  

VisUAL es una herramienta multiplataforma para facilitar el aprendizaje del lenguaje ensamblador de la arquitectura ARM. Además de emular un subconjunto del conjunto de instrucciones ARM UAL, proporciona visualizaciones de conceptos clave exclusivos de la programación del lenguaje ensamblador y, por lo tanto, ayuda a que la programación del ensamblaje ARM sea más accesible. Ha sido diseñado específicamente para usarse como una herramienta de enseñanza para el curso de Introducción a la Arquitectura Computacional en el Imperial College London.

menéame