Federico Martiniau

Software Engineer based in San Carlos de Bariloche, Argentina.
Specializing in embedded systems, satellite EGSE, and scientific software development.

Federico Martiniau

About me

Based in San Carlos de Bariloche, Argentina. Born November 1981.

I've been working in computing since university, moving from IT support and quality testing into analysis, design, and software development. I like challenges and try to improve day by day. I'm patient and find real satisfaction in explaining things clearly — I've taught everyone from 4-year-olds to adults in their 60s.

On the personal side, I've been in a relationship since 2013. Our daughter Zoe joined the family in 2019.

Skills

Python
Git
HTML
CSS
JavaScript
GitLab
Docker
Conda
Grafana
LabVIEW
Influx
MySQL
C++
SQL
PHP

Jobs

INVAP S.A.U.

Software Engineer Mar 2013 – present
  • Python, LabVIEW, and C++ application development and maintenance (QT / Eclipse)
  • Grafana dashboard UI design
  • PHP scripts for large-volume data processing
  • Performance optimization in high-volume data management and storage systems

Instituto Superior Capacitas

Teacher Mar 2017 – Mar 2019
  • Professor: Networks and Computers, Databases, Software Engineering

Maker

Customer Support / Technical Reference Oct 2010 – Mar 2013
  • After Sales: technical reference, resolution of complex and critical incidents
  • Analysis, design, and development of internal tooling to improve department efficiency
  • Test planning, execution, and auditing for hardware and software products
  • Coordination of DAC Maps development cycle and client infrastructure deployments
  • Internal and external product training nationwide

Colegio San Esteban

Computer Laboratory Manager 2005 – 2007
  • Computer repair and lab maintenance
  • Teaching support for preschool through 7th grade
  • Training and advice to administrative and teaching staff

Universidad FASTA

Computer Laboratory Manager 2003 – 2005
  • Student instruction and training in lab use
  • Computer repair, assembly, and network configuration

Education

University

Computer Engineer
Universidad FASTA
IT Analyst
Universidad FASTA

Secondary

Bachelor
Escuela No. 1 OF 3 Bernardino Rivadavia

Courses & Conferences

  • LabVIEW Core 1 & 2 NI
  • Python for Engineering and Physics 45h · Balseiro Institute · 2017
  • Executive UX Clinic 20h · Univ. de Palermo · 2016
  • Software Quality Course 90h · FASTA · 2010
  • Real Time Systems Course 90h · FASTA · 2010
  • 38th Argentine Computer Science Conference Mar del Plata · 2009
  • SEPG Latin America SEI · Buenos Aires · 2008
  • Knowledge Management FASTA · 2008
  • Systems of Systems, SOA and Software as a Service FASTA · 2008

My Work

In this section I describe some software product development projects in which I was part of the development team or was responsible for that development.
Throughout my career I participated in multiple projects, mostly related to the development of EGSEs used in the construction of satellites. And on some other occasions I participated in other projects for the development of software products used in the nuclear area or in the radar area of INVAP S.E.
In this section I leave a variety of different types of products in which I participated.

Power Board Handler

graph LR SCT["System Control Testing"] ---|"JsonRPC / ZMQ"| PMDU["PMDU — Python"] PMDU ---|"VISA"| EL["Electronic Load"] PMDU ---|"VISA"| ES["Electronic Source"] PMDU ---|"VISA"| MF["Mainframe SAS"] PMDU ---|"ZMQ"| BH["Board Handler — LabVIEW"] BH ---|"PXI"| D["NI PXI-6528"] BH ---|"PXI"| AO["NI PXI-4322"] BH ---|"PXI"| AI["NI PXI-4300"] BH ---|"PXI"| RL["Pickering 40-151-002"] EL --- HW["Spacecraft components under test"] ES --- HW MF --- HW D --- HW AO --- HW AI --- HW RL --- HW

Description

This software is used to test satellite components and boards during the construction phase. The software is divided into two components.
A component (Board Handler) developed in LabVIEW is responsible for the command and control of boards connected to a PXI bus (digital I/O, analog inputs, analog outputs, relays).
The other component (PMDU) developed in Python is the master, responsible for providing a command server and publishing telemetry of all SW and systems involved. It also commands and controls: Electronic Loads, Electronic Sources, Mainframe SAS, and the LabVIEW module.

My participation

Full autonomy — requirements analysis and definition, design, development, and user support. This product was originally required for one satellite project, but its design allowed it to be adapted and used in 2 more satellite projects.

Skills required

  • Requirements identification and capture
  • Software design and time estimation
  • Analysis of third-party products
  • Risk management and client negotiation
  • Software development and documentation
  • User support and training

Technologies

  • Python
  • LabVIEW

Environment

  • Docker
  • Conda
  • Windows 7
  • Jenkins (CI)
  • Git

Battery Simulator

graph LR SCT["System Control Testing"] ---|"JsonRPC / ZMQ"| BS["BATSim — Python"] BS ---|"VISA"| EL["Electronic Load"] BS ---|"VISA"| ES["Electronic Source"] BS ---|"Serial RS422"| BPB["BPB"] EL --- HW["Spacecraft components under test"] ES --- HW BPB --- HW

Description

An EGSE used for tests and operations related to satellite batteries — mainly controlling energy charging and discharge processes from the satellite.
The most critical deployment was during the satellite launch, where the software ran under the launch pad, operated remotely, controlling that energy reached the satellite and kept the batteries charged. Any failure would have caused delays in the rocket launch.
I had full ownership of the requirements survey, design, development, documentation and user support.

Technologies

  • Python
  • VISA
  • CSPI
  • GPIB
  • Serial communication
  • ZMQ
  • JSONRPC

Environment

  • CentOS
  • Conda
  • Git

Command and Telemetry Bridge

graph LR SCT["System Control Testing"] ---|"JsonRPC"| CTU["CTU — Python"] CTU ---|"ZMQ"| SVF["Software Validation Facility"] CTU ---|"TC/TM-Frames - TCP/IP"| CRT["Cortex CRT"] CRT --- SC["Spacecraft"] CRT --- SS["Spacecraft Simulator"]

Description

The CTU (Command and Telemetry Unit) is responsible for sending telecommand frames (TC-Frames) and receiving telemetry frames (TM-Frames). It serves as the interface between the command and control system and the hardware responsible for issuing and receiving communications via Cortex CRT.
TM-Frames arriving from the satellite through Cortex CRT are received by the CTU, which unpacks and processes them so the user can view the telemetry.
The CTU is a critical product used throughout the entire satellite lifecycle — from construction through the full mission flight.
Full ownership of requirements gathering, design and development.

Technologies

  • Python
  • Cortex CRT
  • ZMQ
  • JSONRPC
  • Socket

Environment

  • Docker
  • Conda
  • Ubuntu
  • GitLab CI
  • Git

Solar Array Simulator

graph LR SCT["System Control Testing"] ---|"JsonRPC / ZMQ"| SAS["SAS — Python"] SAS ---|"VISA"| SASS["Solar Array Simulator System"] SAS ---|"VISA"| SIM["Solar Array Simulators"] SASS ---|"VISA"| SIM SIM --- SPU["Spacecraft Power Unit"]

Description (v1)

Developed in a two-person team — I built the frontend, my partner built the backend. The product commands and controls a Solar Matrix Simulator system and Modular Solar Array Simulators.
Different scenarios can be simulated with varying quantities of solar panels and their configurations, including spacecraft movement with changes in the angle of incidence of the sun.

Technologies (v1)

  • C++
  • QT5
  • Ajax
  • CSS
  • HTML
  • Javascript
  • jQuery

Environment (v1)

  • Windows 7
  • SVN
  • Jenkins (CI)
graph LR WB["Web Browser"] ---|"Ajax"| SAS2["SAS"] SAS2 ---|"VISA"| SASS2["Solar Array Simulator System"] SASS2 ---|"VISA"| SIM2["Solar Array Simulators"] SIM2 --- SPU2["Spacecraft Power Unit"]

Description (v2 — in development)

A 6-person team project. I'm involved in requirements gathering, product design and development.
Controls a Solar Array Simulator System. Using scripts, different energy generation scenarios can be simulated based on the spacecraft's solar panel angle.

Technologies (v2)

  • Python
  • VISA
  • CSPI
  • JSONRPC
  • ZMQ

Environment (v2)

  • Docker
  • Conda
  • Ubuntu
  • GitLab CI
  • Git

Panel Simulator

graph LR SPA["SPA"] ---|"VISA"| EL["Electronic Load"] SPA ---|"VISA"| ES["Electronic Source"] EL --- HW["Spacecraft components under test"] ES --- HW

Description

Simulates the consumption of half a radar panel of the SAOCOM satellite antenna through commands and control of electronic sources and loads. Full ownership of requirements survey, design, documentation and development.

Technologies

  • Visual Basic 6.0
  • VISA

Environment

  • Windows XP
  • SVN

PIC Writer

graph LR EM["EIMI MALEN"] -->|"firmware"| PW["PIC Writer"] PW -->|"ICSP"| PIC["PIC Microcontroller"]

Description

C++ application used to load parameters and configurations to be sent to a PIC Microcontroller recording board used in the manufacture of radar components.

Technologies

  • C++

Environment

  • Windows XP
  • SVN

Intelligent Gas Effluent Monitor

graph LR AEMI["AEMI"] ---|"EPP"| GD["GAS Detector"] AEMI ---|"EPP"| EV["Electro Valves"] GD --- NR["Nuclear reactor gas pipes circuit"] EV --- NR

Description

Developed in a two-person team — I built the frontend, my partner built the backend.
Used in a specific ventilation piping circuit in a nuclear power plant. Its objective is to record radiation readings within the plumbing circuit, activate solenoid valves to change routes within the piping circuits, and make measurements of different types of radioactive elements to maintain records that must be presented to international control organizations.
Readings are stored in a database.

Technologies

  • C++
  • MySQL

Environment

  • QT5
  • Windows 7
  • MySQL Workbench
  • SVN

Remote Server Status

graph LR WB["Web Browser"] ---|"HTTP"| SCA["SCA"] SDC["Server Data Collector"] -->|"TCP/IP"| SCA

Description

Designed and developed for a company whose clients ran their system on servers at their own facilities. I designed and developed a C++ daemon that ran on each client computer and collected: start date and time, hard drive space, hardware component temperatures, RAM memory usage, and database status information.
Each daemon connected daily to a central MS-SQL server at headquarters. I also designed and developed a PHP website for viewing statistics and alerts based on the status of remote equipment.

Technologies

  • C++
  • PHP
  • JavaScript
  • CSS
  • MS-SQL Server 2008

Environment

  • Windows XP

Radar Rotary Joint Test Bench

graph LR ARD["Arduino"] -->|"Step / Dir"| DRV["Stepper Driver"] DRV -->|"Phase current"| MOT["NEMA Stepper Motor"] MOT -->|"Mechanical drive"| RJ["Rotary Joint"]

Description

A hardware test bench designed to validate the mechanical behavior of rotary joints used in meteorological radar antennas. The rotary joint is mounted on the shaft of a NEMA stepper motor, which drives it at a nominal speed of 6 RPM to replicate real operating conditions.
An Arduino microcontroller manages all motor control logic: it generates step and direction signals to a stepper driver, enabling operators to adjust rotation speed, reverse direction, and issue start/stop commands. Speed adjustment and command input are handled directly from the Arduino.

My participation

Full design and development: embedded software, hardware assembly, and integration with the rotary joint under test.

Technologies

  • C++ (Arduino)
  • NEMA stepper motor
  • Stepper driver

Environment

  • Arduino IDE

Radar Antenna Module Diagnostic System

graph LR WB["Web Browser"] ---|"HTTP / REST"| FLASK["Flask App — Arty Z7"] FLASK ---|"UART"| SYNTH["SynthNV PRO (RF)"] FLASK -->|"UART"| DISP["4×20 Display"] KBD["4×4 Keyboard"] -->|"UART"| FLASK FLASK ---|"REST"| DMN["System Daemons"]

Description

A Python/Flask web application for configuring and diagnosing the emission/reception modules of a radar antenna. The system runs on an Arty Z7 board (Zynq-7000 SoC), which acts as the central controller and hosts all peripheral connections.
A Windfreak SynthNV PRO board handles RF signal generation and reception, controlled via UART commands. A 4-line × 20-character display and a 4×4 keyboard provide on-device interaction, both connected via UART.
Configuration and diagnostic actions triggered from the web interface are dispatched as REST calls to the Flask backend, which coordinates with other system daemons running on the platform.

Technologies

  • Python
  • Flask
  • UART
  • REST
  • SynthNV PRO
  • Arty Z7 (Zynq-7000)

Environment

  • Linux (Zynq PS)
  • Git

Knowledge & R&D

Personal projects and R&D work — things built to solve real problems, explore new technologies, or learn by doing. Not full products, but experiments and tools that turned out useful.

ESP-NOW Sensor Network

flowchart LR subgraph nodes["Sensor Nodes"] N1["ESP32\nMicroPython"] N2["ESP32\nC++"] ARD["Arduino"] ---|"Serial"| N3["ESP32\nC++"] end subgraph srv["Server"] HUB["ESP32\nESP-NOW Hub"] ---|"Serial"| WEB["ESP32\nWeb Server"] end N1 -.->|"ESP-NOW"| HUB N2 -.->|"ESP-NOW"| HUB N3 -.->|"ESP-NOW"| HUB WEB ---|"HTTP"| BR["Web Browser"]

Description

Distributed sensor network where multiple ESP32 nodes report their readings wirelessly to a central server using ESP-NOW — Espressif's low-latency peer-to-peer wireless protocol that works without a WiFi router.

One of the sensor nodes bridges an Arduino via serial, aggregating readings from sensors connected to the Arduino alongside its own. The server side consists of two ESP32 boards: one acts as the ESP-NOW hub, receiving all incoming data from the sensor nodes; the other runs the web server and presents the sensor data as a web interface. The two server boards communicate with each other over serial.

Sensors and actuators distributed across nodes included: temperature sensors, distance sensors, flow meters, relays, electrovalves, LEDs, and buzzers. The nodes were developed in a mix of MicroPython (using Thonny) and C++ (using Arduino IDE), depending on the hardware and requirements of each node.

Technologies

  • ESP32 (multiple nodes)
  • ESP-NOW
  • MicroPython / Thonny
  • C++ / Arduino IDE
  • Arduino
  • Serial communication
  • HTTP web server
  • Temperature sensors, distance sensors, flow meters
  • Relays, electrovalves, LEDs, buzzers

Water Level Control System

flowchart LR PROC["Processing UI"] ---|"Serial"| ARD["Arduino Mega"] ARD ---|"Analog"| DS1["Distance Sensor\nTank 1"] ARD ---|"Analog"| DS2["Distance Sensor\nTank 2"] ARD ---|"Pulse"| FM1["Flow Meter\nInlet"] ARD ---|"Pulse"| FM2["Flow Meter\nOutlet"] ARD ---|"Digital"| EV1["Electrovalve\nInlet"] ARD ---|"Digital"| EV2["Electrovalve\nOutlet"]

Description

Autonomous water level monitoring and control system for two tanks. Distance sensors mounted on each tank measure the water level in real time. Flow meters on both inlet and outlet lines track how much water enters and exits. Electrovalves allow the system to open or close each line independently.

The system includes autonomous leak detection: if the outlet flow remains constant over a configurable period with no deliberate discharge command, it assumes a leak and closes the outlet valve automatically. All sensor readings and valve states are visualized in a Processing interface.

Technologies

  • C++ (Arduino Mega)
  • Ultrasonic distance sensors
  • Flow meters
  • Electrovalves
  • Processing (visualization UI)
  • Serial communication

ESP32 Thermostat

flowchart LR ESP["ESP32\nMicroPython"] ---|"GPIO"| TEMP["Temperature\nSensor"] ESP ---|"GPIO"| RLY["Relay"] ESP ---|"WiFi / HTTPS"| TG["Telegram Bot"] RLY --- DEV["Controlled\nDevice"]

Description

Thermostat built with an ESP32 running MicroPython. Reads temperature continuously and activates or deactivates a relay based on a configurable threshold. Includes a configurable on-time limit to prevent the controlled device from running longer than intended.

A Telegram bot handles remote interaction without needing an app or web interface: status queries return the current temperature and relay state; commands allow remote activation and deactivation from any device.

Technologies

  • ESP32
  • MicroPython
  • Temperature sensor
  • Relay module
  • Telegram Bot API
  • WiFi

ESP32 Window Presence Sensor

flowchart LR MMW["mmWave\nPresence Sensor"] ---|"UART"| ESP["ESP32\nMicroPython"] ESP ---|"WiFi / HTTPS"| TG["Telegram Bot"]

Description

Presence detection system installed on a window frame. Uses a millimeter-wave radar sensor to detect whether someone is in the monitored area. When presence is detected, the ESP32 sends a Telegram notification in real time.

Millimeter-wave sensors are more reliable than PIR for this use case: they detect stationary presence, not just movement, and are unaffected by temperature or ambient light.

Technologies

  • ESP32
  • MicroPython
  • mmWave presence sensor
  • Telegram Bot API
  • WiFi

PlantUML Editor

flowchart LR ED["PyQt5 Editor"] -->|"PlantUML text"| JAR["PlantUML JAR"] JAR -->|"rendered image"| ED ED -->|"export"| IMG["PNG / SVG"]

Description

Desktop tool for writing and previewing PlantUML diagrams. The editor sends the diagram text to a local PlantUML JAR and renders the result inline. Supports exporting the output as PNG or SVG. Built to speed up diagram work without relying on online tools or browser plugins.

Technologies

  • Python
  • PyQt5
  • PlantUML (JAR)
  • Java (PlantUML runtime)

Time Tracker

flowchart LR UI["PyQt5 UI"] --- DB["SQLite"] UI --- POM["Pomodoro\nTimer"] POM -->|"desktop notification"| USR["User"] DB --> RPT["Reports\ntask / project"]

Description

Personal task time tracker for logging what I work on and how long I spend on each item. Tasks are organized by project; entries are stored in a local SQLite database and the tool generates time summaries per task and per project.

Includes a configurable Pomodoro timer: after a set interval a desktop notification prompts whether to take a break. The interval is adjustable per session.

Technologies

  • Python
  • PyQt5
  • SQLite

Python Library Ecosystem

flowchart TB subgraph eco["Internal Libraries"] LOG["log\nStandardized logging"] CSV["csv\nFile generation"] VISA["visa\nVISA communication"] SER["serial\nSerial communication"] CFG["config\nJSON · INI · XML · .env\nMD5 file validation"] end P1["Project A"] --> eco P2["Project B"] --> eco P3["Project N"] --> eco

Description

A set of reusable Python libraries built to standardize how projects handle common cross-cutting concerns — logging, file output, instrument communication, and configuration. Each library provides a single, consistent interface so that any project using them behaves the same way in those areas, regardless of the underlying details.

The most significant library is the configuration reader. It supports JSON, INI, XML, and .env file formats through a unified API — the calling project always retrieves configuration the same way, without caring about the format. It also performs MD5 validation of config files on load, detecting accidental or unauthorized modifications before they reach the application.

The VISA and serial communication libraries wrap the underlying protocols behind consistent interfaces, removing boilerplate and protocol-specific handling from application code. The log and CSV libraries standardize output formats so that logs and generated files look the same across all projects.

Benefits

  • No code duplication between projects for the same concern
  • Consistent output formats and behavior across the entire codebase
  • Bugs fixed in a library are fixed everywhere at once
  • Faster development: common infrastructure is already solved
  • Easier onboarding: one way to do logging, config, comms — always

Libraries

  • log — standardized logging output
  • csv — structured CSV file generation
  • visa — VISA instrument communication
  • serial — serial port communication
  • config — multi-format config reader (JSON, INI, XML, .env) with MD5 validation

Technologies

  • Python
  • PyVISA
  • pyserial
  • hashlib (MD5)
  • configparser, json, xml.etree, python-dotenv

Hobbies

What I do outside of work.

Photography

I enjoy capturing landscapes, wildlife, and everyday moments — mostly around Patagonia.

See full photostream on Flickr →

Video

Miscellaneous videos on my YouTube channel.

View full channel on YouTube →

Contact me

fedemartiniau at gmail dot com

LinkedIn linkedin.com/in/fedemartiniau