# Recent Projects

> Open source I maintain: erm, a CLI that strips filler words from speech; linuxcnc-grpc, a gRPC interface to LinuxCNC; and m0601-rs, a Rust driver for the DFRobot M0601 hub motor.

- URL: https://doug.sh/projects/
- Author: Doug
- Date: 2026-08-23


## erm

A local CLI that removes disfluencies from recordings of English speech. It handles
the usual suspects: um, uh, er, erm, ah, hmm, mhm, mm, uh-huh, along with the
elongations that do not transcribe cleanly as any of those.

Everything runs on your machine. It uses faster-whisper to find candidate fillers,
a set of detectors that look at the audio directly rather than trusting the
transcript, and ffmpeg to cut and crossfade the result. Nothing is uploaded
anywhere.

[Documentation](/docs/erm/) · [Source](https://github.com/dougcalobrisi/erm) · [How it works](/posts/erm-a-local-cli-that-strips-ums-uhs-and-erms-from-speech/)

## linuxcnc-grpc

A gRPC server for LinuxCNC, plus generated client libraries for Python, Go, Node,
and Rust. LinuxCNC exposes its state and controls through a Python interface that
assumes it is running on the machine. This wraps that in a protocol you can call
across a network, from whichever language the rest of your tooling already uses.

The protobuf definitions are the single source of truth, so all four clients stay
in step with the server.

[Documentation](/docs/linuxcnc-grpc/) · [Source](https://github.com/dougcalobrisi/linuxcnc-grpc)

## m0601-rs

A Rust driver and CLI for the DFRobot M0601 hub motor, sold elsewhere as the Direct
Drive Tech M0601C-111. It speaks the motor's RS485 protocol, covers the parts of
that protocol the datasheet documents unevenly, and can be used either as a library
or from the command line.

[Documentation](/docs/m0601-rs/) · [Source](https://github.com/dougcalobrisi/m0601-rs) · [docs.rs](https://docs.rs/m0601)

