Projects

Selected work in modern C++, developer tooling, and embedded systems. Each page includes implementation details and source from the repository.

Open Source C++ Embedded Systems
Selected work

Selected projects

01 / C++ library

Simple CLI

A C++23 command-line parser for type-safe flags, options, commands, aliases, positional arguments, and explicit result-based errors.

  • C++23
  • CMake
  • Library design
Project details
example/argumentParser.cppC++
if (auto result = parser.addOption(
    {"-o", "--output"}, output
); !result) {
    std::cout << result.error().message();
    return 1;
}
02 / Embedded systems

Combat Robot

MSP430 firmware for a competition robot and handheld controller, including infrared commands, motor control, joystick input, and servo actuation.

  • MSP430
  • C++20
  • Infrared
  • CMake
Project details

InputDual joysticks
Flipper controls

LinkEncoded
IR command

RobotDrive motors
Servo flipper

03 / Developer tooling

Docme

An in-progress C++23 documentation generator with configurable source discovery, language handlers, renderers, and a documented C/C++ comment-tag standard.

  • C++23
  • C++ modules
  • JSON
  • Parsing
Project details
docme.jsonConfiguration
{
  "source": ["path/to/src"],
  "output": "path/to/docs",
  "language_handler": ["cdoc"],
  "renderer": ["markdown", "json"]
}
04 / Systems library

Better Dynamic Libraries

An experimental C++23 wrapper around Windows and POSIX dynamic-library APIs with typed symbol lookup and explicit error results.

  • C++23
  • Win32
  • POSIX
  • std::expected
Project details
dynamicLibraries.hppPublic API
// Load a library from a filesystem path
[[nodiscard]] static DynamicLibrary
load(const std::filesystem::path& file);

template<typename TFunction>
std::expected<std::function<TFunction>, std::string>
getFunction(const std::string& name) const;
05 / C++ library

Pure Log

A customizable C++23 logging library with chainable messages, built-in and custom levels, formatting, ANSI color, and pluggable output streams.

  • C++23
  • CMake
  • CRTP
  • Logging
Project details
example/example.cppC++
debugger.log(
  "Invalid value passed to parser: {}", 3
).time();

debugger.warn(
  "This is a warning message."
).location();

debugger.info(
  "Informational message."
);