Software
Apache NetBeans
Apache NetBeans es tanto un entorno de desarrollo integrado como una plataforma para construir aplicaciones de escritorio en Java. Soy "commiter" de Apache NetBeans y miembro del "Project Management Committee".
La verdad es que tengo poco tiempo para echar una mano en NetBeans. Ahora mismo estoy enfocado en devolver la vida al soporte
de C/C++ (muy bloqueado por cpplite
) y en añadir soporte para el lenguaje de programación Rust.
toml-java
La librería tomlj es muy popular para leer ficheros en formato TOML en Java. Pero no se mantiene ya (a mí me fastidia especialmente este bug), por lo que he hecho otra y está disponible en https://github.com/vieiro/toml-java.
Tiene un API sencillo de usar, y una batería de tests unitarios bastante exigente. Las coordenadas de Maven Central son:
<dependency>
<groupId>net.vieiro</groupId>
<artifactId>toml-java</artifactId>
<version>1.1.1</version>
</dependency>
dsm - Design Structure Matrix
DSM (github) es un pequeño programa que permite generar una matriz de estructura de dependencias (o matriz de estructura de diseño) a partir de un fichero de texto, generando la matriz en una hoja Excel.
El programita permite analizar con facilidad relaciones de dependencia relativamente complejas. Lo usé para analizar las dependencias de módulos dentro del clúster C/C++ de NetBeans.
Se usa el algoritmo de Eades (hay dos, realmente) para obtener una aproximación rápida al problema Feedback Arc Set.
Por ejemplo, este archivo de dependencias (grafo dirigido acíclico) produce la siguiente matriz DSM (con todos los elementos sobre la diagonal):
xmark - Páginas web con markdown y Tufte-CSS
xmark (github) utiliza commonmark para traducir Markdown en XML, luego usa una hoja de estilo XSLT para transformar el XML a HTML que, combinado con con tufte-css produce unas páginas web elegantes, como ésta.
Edward Tufte es profesor emérito de Yale y es reconocido internacionalmente por su libro The Visual Display of Quantitative Information, una referencia para la visualización de información cuantitativa.
covidrobots.org
Durante la pandemia participé en el proyecto Covid Robots, que instaló robots para la automatización de realización de pruebas PCR en 17 hospitales de España.
La documentación está todavía disponible en https://covidrobots.org
COVID19Spain - Cálculo de propagación de virus de Covid
Durante la pandemia hice un pequeño programa Python que calcula
una aproximación burda a la tasa de propagación R0
del virus de COVID-19.
NetBeans standalone editor
La versión 5.5 de NetBeans permitía incluir el editor de código fuente en aplicaciones Java Swing.
cbmap - Mapas crit-bit en C
cbmap es una estructura de datos de tipo mapa en C, basada en los crit-bit trees de D. J. Bernstein.
Luego llegó Rust y este tipo de "hacks" con punteros en C no se pueden hacer ya.
Mandelbrot Explorer - Ley de Amdahl
El explorador del fractal de Mandelbrot es una pequeña aplicación que utilicé (mientras trabajaba en el Sun Java Center, sobre el 2005) para investigar la ejecución multihilo en aplicaciones de escritorio, con Java Swing. Permite generar imágenes del fractal, y navegar por él.
Dibuja el fractal de Mandelbrot utilizando un conjunto de hilos ajustable, e informa del tiempo total necesario para dibujarlo, lo que permite comprobar experimentalmente la Ley de Amdahl.
Este software se utiliza en la Universidade Federal de Minas Gerais de Brasil en la asignatura "Automação em Tempo Real", para estudiar diferentes aspectos de paralelización y concurrencia.
Algunas características de este software son:
-
Los fractales de Mandelbrot molan.
-
Se utilizó para probar la librería 'SwingWorker' antes de su incorporación en el API de Java.
-
Sirve de ejemplo de cómo bloquear la interacción de usuario utilizando un 'GlassPane'.
-
Buena separación de modelo, vista y controlador.
-
Sirve de ejemplo de cómo almacenar imágenes en disco (pantallazos) utilizando los API de imágenes de Java.
-
Sirve de ejemplo de cómo utilizar un mapa de colores indexado para dibujar gradientes de colores del negro al rojo oscuro.
-
Sirve de ejemplo de cómo utilizar tipografías personalizadas en Java.
El código fuente (ojo, es del 2005) está disponible en github.