---
title: Software
---
# Software Showcase
This page showcases a *small* subset of my personal projects.
Looking for a full list of things I've worked on?
Check out my GitHub profile.
## Libraries
Raylib FFI
`raylib-ffi` is a very low-level Rust FFI binding to the raylib graphics library.
The goal of this library is to provide something that tracks the latest version of upstream raylib, and gets in the way as little as possible. The core features are:
- Direct FFI bindings to C functions
- Rust-ified enums & structs
- Rust-ified default palette definitions
Thats it! Go use this library directly, or build a higher-level abstraction on top of it if you'd like.
The whole binding, mapping, and documentation process is entirely automated. Targeting a new raylib version just takes a `git pull` and `cargo build`.
Check out the [Source Code](https://github.com/ewpratten/raylib-ffi) and [Documentation](https://docs.rs/raylib-ffi).
Amateur Data Interchange Format library for Rust
`adif-rs` is a Rust implementation of the Amateur Data Interchange Format.
This library is used to read and write ADIF files, allowing Rust programs to exchange logging data with other pieces of amateur radio software.
Check out the [Source Code](https://github.com/ewpratten/adif-rs) and [Documentation](https://docs.rs/adif).
## Programs, Tools, Add-ons, and Scripts
Protomask
Protomask is a user space NAT64 implementation.
The protomask NAT64 daemon currently powers single-stack networking inside AS54041. The project also encompasses some general-purpose Rust libraries for working with inter-protocol networking.
For more information, see the [GitHub page](https://github.com/ewpratten/protomask) for this project.
## Things that were made for fun
Hey, I'm allowed to have fun with software sometimes too right?!
The following projects were mostly made as one-offs for friends in tight time constraints, so don't judge 'em too hard ..ok?. Do keep in mind, that if you want to self-host any of these, you *might* need to tweak some hard-coded UUIDs and endpoints.
UwU Types
UwU and OwO your Rust integer types.
`u8` becomes `uwu8`, `i16` becomes `owo16`, and of course, `usize` is now `uwusize`.
Check out the [Source Code](https://github.com/ewpratten/uwu-types) or [use it in a project](https://crates.io/crates/uwu-types) (please don't).
Other names for Rust's unsafe
keyword
The `foot-gun` Rust library adds some additonal names for the `unsafe` keyword.
```rust
foot_gun!({
// Unsafe code here
});
here_be_dragons!({
// Unsafe code here
});
beware!({
// Unsafe code here
});
// ... etc
```
Check out the [Source Code](https://github.com/ewpratten/foot-gun) or [use it in a project](https://crates.io/crates/foot-gun).
No Bitches? Discord Bot
A discord bot that tries its very best to turn images of people into the "No Bitches?" meme.

[Source Code](https://github.com/ewpratten/no-bitches-bot) available on GitHub.