Information Technology
ESP-01 ambient sensor
The project describes the assembly of a cheap (less than USD$6), low-power (less than 1W), and low-profile (less than 5cm long) environmental sensor based on the ESP-01 WiFi module and the BME280. The unit runs a free and open source firmware (Tasmota) and provides temperature, humidity, and relative pressure measurements to home automation systems via the MQTT messaging protocol.
ESP32-cam
The ESP32 is a low-cost and low-power microcontroller developed by Espressif. This project describes how to flash the Tasmota32 webcam server (beta) firmware onto the ESP32-cam module with onboard Wi-Fi. The Tasmota32 firmware can be used as an alternative to the Espressif CamWebServer Arduino sketch for users looking for more options to monitor and control an ESP32-cam remotely or to integrate into an existing home automation server via HTTP requests or MQTT.
Mesh networking
Mesh networks using free and open-source software (FOSS) and common hardware. The project is based on OpenWrt and uses the layer-2 implementation of the Better Approach to Mobile Adhoc Networking (B.A.T.M.A.N.), called batman-adv, to route packets over multiple mesh topologies.
NanoPi M4 mini-NAS
A cheap, low-power, low-profile NAS solution based on FriendlyArm’s NanoPi M4 SBC. It has a SATA hat that is connected to the board via PCI-e, allowing up to four HDDs to be connected to the NAS via standard SATA III interface.
RPi button box
The project describes how to repurpose external HDD enclosures into button boxes for the Raspberry Pi and similar single board computers. It includes the development of a button box controller, wiring schematics, how-tos, and list of hardware and software components.
A chácara microserver
The microserver is composed of an HP Proliant Microserver Gen8 running Openmediavault and a Dell Optiplex 3060 micro running Proxmox. Both machines are used mostly for security-related things (surveillance cameras, location tracking) and Plex and Plex-related programs (PMS, Tautulli, Sonarr, Radarr, etc.). Other uses have to do with a universal desktop folder (Syncthing) and data analysis (R server).
pfSense white-box
A cheap, customizable pfSense box based on the ASRock J3355b-itx mobo. It features an Intel dual-core processor capable of running IPS/IDS software, multiple VPNs, and more. A passively cooled, low-power, and low-profile firewall that fits the demands of most home users.
Programming
RPi SenseHAT MQTT
A Python application for the Raspberry Pi that allows interfacing with the SenseHAT over MQTT. The script publishes sensor and joystick data to the MQTT broker to be consumed by a home automation server (e.g., Home Assistant). In addition, it also subcribes to an LED topic to display payloads published to the broker. For instance, when an home automation publishes a message to the LED topic, the SenseHAT will consume it and display on the LED matrix.
Programa Bolsas
A CLI program that validates a csv file containing scholarship data from multiple students and allows users to perform a few operations, such as searching, encrypting, ranking, and computing means. This program was part of a selection process and most of its content is in Portuguese. It was written to demonstrate the use of the curses, pandas, and pandera Python packages. It also features unit tests for all of its main operations via pytest.
Pife (pif-paf)
This is a command-line implementation of the card game Pife written in Java. It is a fork of another implementation that changes its main logic to adapt to the new game but preserves overlapping classes, such as deck and player. This program is only for educational purposes and the content is in Portuguese.
Button box controller
Core program for a Raspberry Pi button box controller that uses the gpiozero Python library.
Youtube4tvh
Youtube4tvh is a Python CLI program for TVHeadend servers that uses either the Youtube API or a custom-built web content parser to find live-streams and create (or update) m3u playlists. The m3u file follows IPTV conventions that allow a TVH server to automatically create an IPTV network with them, and each stream is piped into TVH via a Streamlink shell script.
NetMonitor LCD
Python script for a 16x2 LCD that uses ping and netcat to monitor the network status of hosts and services, respectively.
PWM fan controller
A fan controller written in bash for the 12v fan connector of the NanoPi M4 SATA hat. By default, the script uses a bounded logistic model with a moving mid-point (based on the distance between the average temperature over time and a critical temperature threshold) to set the fan speed dynamically.
Audio diagnostic tool
This is a CLI diagnostic tool for audio files written in GNU Bash that extends my previous bash-flac-diag tool to mp3 and other audio formats. In brief, it tests a single or multiple audio files and generates logs with good files (no errors found) and bad ones (at least one error found). Tests are performed by codec-specific tools. There are two post-processing modes for bad files: fix or delete.
Logistic function in Bash
An implementation of the logistic function written in GNU bash and GNU basic calculator (bc).
Multi-trial data count
A VBA macro for MS Excel that counts patterns of correct responses (C) and errors (E) across multiple trials (e.g., CCC, CCE, CEC, …, EEE). It was initially developed as a tool to help with the data analysis of multi-trial memory experiments in which subjects provide boolean-type responses (yes/no, correct/error) for multiple items across multiple tests. In such designs, each item generates a pattern of C-E responses across tests. This VBA macro counts all such patterns across subjects and items.
Academic (latest)
Multinomial modeling
Distribution of educational materials to researchers and students about the use of multinomial modeling in psychological research.
Bivariate recollection
A psychological theory that assumes that memory probes can provoke conscious awareness of either target items (target recollection) or their context (context recollection) or both.