# Pieter's Pages

Welcome, this is where I keep some notes on topics I'm interested in, as well as links to the GitHub repositories of code I'm working on.

## Pages

A collection of guides, articles and notes on various topics, like mathematics, optimization, digital signal processing, linear algebra, Raspberry Pi, Arduino, C++, Python, Linux ...

## Scientific software

### alpaqa

Software package for nonlinear numerical optimization, using an augmented Lagrangian method and the
first-order PANOC solver.

Written in C++, with an easy-to-use Python interface.

### QPALM

Numerical quadratic programming solver.

Written in C, with interfaces for C++, Python, Julia, Matlab and Fortran.

### py-build-cmake

Modern, PEP 517 compliant build backend for building Python packages with extensions built using CMake.

### Linear Algebra

Educational linear algebra library with readable implementations of common matrix algorithms.

Written in C++, also available as an Arduino library.

## Raspberry Pi

### Raspberry Pi cross-compilation toolchains

Ready-to-use, modern GCC cross-compilation toolchains for C, C++ and Fortran.

### Raspberry Pi C++ cross-development

Extensive tutorials for setting up Raspberry Pi development environments for cross-compilation and remote development.

### Raspberry Pi cross-compilation project

Scripts for building popular tools and libraries such as Python and OpenCV, including a C++ example project.

### Raspberry Pi NEON Compositor

C and C++ routines for compositing and overlaying images with transparency.

Makes use of ARM NEON SIMD intrinsics for high performance.

## Arduino

### Control Surface

Arduino library for all things MIDI-related. Provides a uniform interface for MIDI over USB, MIDI over BLE, MIDI over Serial, etc. It includes ready-to-use classes for building MIDI controllers with all kinds of inputs and outputs (potentiometers, push buttons, rotary encoders, LEDs, OLED displays ...).

### Control Surface Motor Fader

PID controller for motorized faders, integrates nicely with the Control Surface library for tracking MIDI automation.

### Arduino Filters

A fast and easy to use digital filter library for Arduino-compatible boards.

It supports
real-time
filtering using discrete-time finite and infinite impulse response filters, and has functions to
design
Butterworth and notch filters. It also has general smoothing utilities such as (exponential) moving
average filters, median filters, hysteresis ...
Different filter implementations are available, and high-order filters can be factorized into second
order sections for improved numerical stability. All filters use generic types, so they can be used
with either floating point types or fixed point integers.

### Arduino AVR CMake

Building Arduino projects using CMake.

### A Beginner's Guide to the ESP8266

This is an (older) article where I cover the basics of using the ESP8266 as a Wi-Fi enabled microcontroller, using the Arduino IDE.