The Wayback Machine - https://web.archive.org/web/20230428155217/https://github.com/TheButlah
Skip to content
Avatar
🦀
Oxidize everything
🦀
Oxidize everything

Sponsoring

@cart
@probe-rs
@imsnif

Organizations

@SleightOfMindDev @CornellDataScience
Block or Report

Block or report TheButlah

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
TheButlah/README.md

Hi, I'm Ryan 👋

I'm a Rust developer, passionate about building realtime systems. I do a lot of open source VR development, especially for full-body motion tracking in games like VRChat.

I also like to dance and go bouldering.

Hire Me 🔥

I'm actively seeking job opportunities - I will build you something awesome, in exchange for money. It's a win win :) You can contact me at rjbutler.main@gmail.com.

If you would like to support my open source projects, you can fund me at ko-fi.

Current Projects

Click to expand

SlimeVR

SlimeVR is an open source organization for full-body motion capture in VR. It uses IMUs and a forward kinematics model to allow social VR users to have legs in games like VRChat. I am a core contributor in the org, and the primary author of several components of the ecosystem.

The four main things I work on under this umbrella, are located in the SlimeVR-Rust monorepo or in SolarXR.

Firmware

I develop bare metal embedded rust on the ESP32C3 and NRF52840 microcontrollers, which takes IMU sensor data, does sensor fusion, and sends that data over WiFi or BLE. I use async/await and embassy for concurrency without the need for an RTOS1.

This firmware has been really fun to work on and is what I spend most of my time on right now.

If that sounds exciting to you, open a PR or support my work so I can buy more hardware :)

Overlay

I also am the primary author of an OpenVR overlay for SlimeVR, which renders a simple 3D view in VR of the pose of the user. This has been critical in debugging SlimeVR, and allows power users to tweak their settings in real time.

I also created ovr_overlay, which allows rust code to access the C++ based OpenVR API. Prior to this work, only fairly out of date and unmaintained bindings to the C API existed. I used autocxx to easily write FFI for the C++ code.

Skeletal Model

I created an experimental skeletal model that can solve the user's pose. The goal is to be more general purpose than the current (trigger warning) Java based model that the official server uses, with several new features like arbitrary positional constraints, adjusting mounting calibration without a full reset, and supporting languages other than Java, via FFI.

Unfortuantely, a lot of the skeletal model is still feature incomplete. If you are interested in helping me build this, reach out to me on the SlimeVR discord.

SolarXR Protocol

I maintain and co-authored the SolarXR protocol, which is a Websocket and Flatbuffer based networking protocol that allows applications (like the GUI and overlay) to work with the SlimeVR server.

After we adopted the protocol, it allowed the team to break the gui code into its own app and adopt technologies like tauri, typescript, and react, with clearer separation of concerns, less code, and prettier UI/UX.

Tech I think is cool

Rust Neovim Bazel Buck2
WebAssembly Bevy WebGPU

Footnotes

  1. Real time operating system

Pinned

  1. 🦀 + SlimeVR = 💖

    Rust 35 20

  2. A native implementation of ØMQ in Rust

    Rust 896 78

  3. WaveRNN Vocoder + TTS

    Python 2k 666

  4. slimevr_pcb Public

    A collection of PCBs designed for SlimeVR full-body trackers

    Roff 11 5

  5. (WIP) Interoperability Protocol for VR Devices And Apps

    Rust 11 11

  6. Spatio-temporal data model and logic system for 3D applications with real-time networked synchronization across devices.

    Rust 7 2

1,347 contributions in the last year

18 contributions on Sunday, April 24, 2022 11 contributions on Monday, April 25, 2022 7 contributions on Tuesday, April 26, 2022 5 contributions on Wednesday, April 27, 2022 2 contributions on Thursday, April 28, 2022 2 contributions on Friday, April 29, 2022 5 contributions on Saturday, April 30, 2022 No contributions on Sunday, May 1, 2022 10 contributions on Monday, May 2, 2022 11 contributions on Tuesday, May 3, 2022 3 contributions on Wednesday, May 4, 2022 1 contribution on Thursday, May 5, 2022 4 contributions on Friday, May 6, 2022 No contributions on Saturday, May 7, 2022 No contributions on Sunday, May 8, 2022 2 contributions on Monday, May 9, 2022 5 contributions on Tuesday, May 10, 2022 2 contributions on Wednesday, May 11, 2022 1 contribution on Thursday, May 12, 2022 No contributions on Friday, May 13, 2022 No contributions on Saturday, May 14, 2022 No contributions on Sunday, May 15, 2022 No contributions on Monday, May 16, 2022 No contributions on Tuesday, May 17, 2022 7 contributions on Wednesday, May 18, 2022 1 contribution on Thursday, May 19, 2022 4 contributions on Friday, May 20, 2022 No contributions on Saturday, May 21, 2022 No contributions on Sunday, May 22, 2022 6 contributions on Monday, May 23, 2022 5 contributions on Tuesday, May 24, 2022 5 contributions on Wednesday, May 25, 2022 3 contributions on Thursday, May 26, 2022 No contributions on Friday, May 27, 2022 1 contribution on Saturday, May 28, 2022 1 contribution on Sunday, May 29, 2022 2 contributions on Monday, May 30, 2022 3 contributions on Tuesday, May 31, 2022 4 contributions on Wednesday, June 1, 2022 1 contribution on Thursday, June 2, 2022 2 contributions on Friday, June 3, 2022 4 contributions on Saturday, June 4, 2022 1 contribution on Sunday, June 5, 2022 3 contributions on Monday, June 6, 2022 No contributions on Tuesday, June 7, 2022 2 contributions on Wednesday, June 8, 2022 No contributions on Thursday, June 9, 2022 6 contributions on Friday, June 10, 2022 8 contributions on Saturday, June 11, 2022 3 contributions on Sunday, June 12, 2022 4 contributions on Monday, June 13, 2022 2 contributions on Tuesday, June 14, 2022 2 contributions on Wednesday, June 15, 2022 3 contributions on Thursday, June 16, 2022 9 contributions on Friday, June 17, 2022 No contributions on Saturday, June 18, 2022 3 contributions on Sunday, June 19, 2022 No contributions on Monday, June 20, 2022 8 contributions on Tuesday, June 21, 2022 16 contributions on Wednesday, June 22, 2022 No contributions on Thursday, June 23, 2022 4 contributions on Friday, June 24, 2022 3 contributions on Saturday, June 25, 2022 4 contributions on Sunday, June 26, 2022 5 contributions on Monday, June 27, 2022 15 contributions on Tuesday, June 28, 2022 3 contributions on Wednesday, June 29, 2022 3 contributions on Thursday, June 30, 2022 4 contributions on Friday, July 1, 2022 1 contribution on Saturday, July 2, 2022 3 contributions on Sunday, July 3, 2022 No contributions on Monday, July 4, 2022 2 contributions on Tuesday, July 5, 2022 8 contributions on Wednesday, July 6, 2022 5 contributions on Thursday, July 7, 2022 3 contributions on Friday, July 8, 2022 No contributions on Saturday, July 9, 2022 No contributions on Sunday, July 10, 2022 No contributions on Monday, July 11, 2022 4 contributions on Tuesday, July 12, 2022 2 contributions on Wednesday, July 13, 2022 4 contributions on Thursday, July 14, 2022 3 contributions on Friday, July 15, 2022 No contributions on Saturday, July 16, 2022 2 contributions on Sunday, July 17, 2022 1 contribution on Monday, July 18, 2022 3 contributions on Tuesday, July 19, 2022 14 contributions on Wednesday, July 20, 2022 4 contributions on Thursday, July 21, 2022 3 contributions on Friday, July 22, 2022 2 contributions on Saturday, July 23, 2022 No contributions on Sunday, July 24, 2022 2 contributions on Monday, July 25, 2022 9 contributions on Tuesday, July 26, 2022 7 contributions on Wednesday, July 27, 2022 2 contributions on Thursday, July 28, 2022 5 contributions on Friday, July 29, 2022 4 contributions on Saturday, July 30, 2022 No contributions on Sunday, July 31, 2022 7 contributions on Monday, August 1, 2022 No contributions on Tuesday, August 2, 2022 No contributions on Wednesday, August 3, 2022 6 contributions on Thursday, August 4, 2022 1 contribution on Friday, August 5, 2022 1 contribution on Saturday, August 6, 2022 4 contributions on Sunday, August 7, 2022 2 contributions on Monday, August 8, 2022 2 contributions on Tuesday, August 9, 2022 15 contributions on Wednesday, August 10, 2022 6 contributions on Thursday, August 11, 2022 5 contributions on Friday, August 12, 2022 1 contribution on Saturday, August 13, 2022 1 contribution on Sunday, August 14, 2022 No contributions on Monday, August 15, 2022 No contributions on Tuesday, August 16, 2022 3 contributions on Wednesday, August 17, 2022 4 contributions on Thursday, August 18, 2022 4 contributions on Friday, August 19, 2022 2 contributions on Saturday, August 20, 2022 No contributions on Sunday, August 21, 2022 4 contributions on Monday, August 22, 2022 3 contributions on Tuesday, August 23, 2022 2 contributions on Wednesday, August 24, 2022 1 contribution on Thursday, August 25, 2022 2 contributions on Friday, August 26, 2022 No contributions on Saturday, August 27, 2022 No contributions on Sunday, August 28, 2022 No contributions on Monday, August 29, 2022 2 contributions on Tuesday, August 30, 2022 1 contribution on Wednesday, August 31, 2022 2 contributions on Thursday, September 1, 2022 No contributions on Friday, September 2, 2022 1 contribution on Saturday, September 3, 2022 2 contributions on Sunday, September 4, 2022 3 contributions on Monday, September 5, 2022 8 contributions on Tuesday, September 6, 2022 5 contributions on Wednesday, September 7, 2022 13 contributions on Thursday, September 8, 2022 9 contributions on Friday, September 9, 2022 No contributions on Saturday, September 10, 2022 1 contribution on Sunday, September 11, 2022 1 contribution on Monday, September 12, 2022 4 contributions on Tuesday, September 13, 2022 4 contributions on Wednesday, September 14, 2022 6 contributions on Thursday, September 15, 2022 3 contributions on Friday, September 16, 2022 No contributions on Saturday, September 17, 2022 No contributions on Sunday, September 18, 2022 8 contributions on Monday, September 19, 2022 2 contributions on Tuesday, September 20, 2022 No contributions on Wednesday, September 21, 2022 3 contributions on Thursday, September 22, 2022 3 contributions on Friday, September 23, 2022 2 contributions on Saturday, September 24, 2022 1 contribution on Sunday, September 25, 2022 No contributions on Monday, September 26, 2022 1 contribution on Tuesday, September 27, 2022 2 contributions on Wednesday, September 28, 2022 No contributions on Thursday, September 29, 2022 1 contribution on Friday, September 30, 2022 1 contribution on Saturday, October 1, 2022 3 contributions on Sunday, October 2, 2022 2 contributions on Monday, October 3, 2022 3 contributions on Tuesday, October 4, 2022 4 contributions on Wednesday, October 5, 2022 19 contributions on Thursday, October 6, 2022 19 contributions on Friday, October 7, 2022 1 contribution on Saturday, October 8, 2022 No contributions on Sunday, October 9, 2022 2 contributions on Monday, October 10, 2022 5 contributions on Tuesday, October 11, 2022 5 contributions on Wednesday, October 12, 2022 5 contributions on Thursday, October 13, 2022 No contributions on Friday, October 14, 2022 1 contribution on Saturday, October 15, 2022 No contributions on Sunday, October 16, 2022 5 contributions on Monday, October 17, 2022 1 contribution on Tuesday, October 18, 2022 8 contributions on Wednesday, October 19, 2022 1 contribution on Thursday, October 20, 2022 No contributions on Friday, October 21, 2022 1 contribution on Saturday, October 22, 2022 1 contribution on Sunday, October 23, 2022 4 contributions on Monday, October 24, 2022 2 contributions on Tuesday, October 25, 2022 2 contributions on Wednesday, October 26, 2022 1 contribution on Thursday, October 27, 2022 3 contributions on Friday, October 28, 2022 No contributions on Saturday, October 29, 2022 No contributions on Sunday, October 30, 2022 No contributions on Monday, October 31, 2022 4 contributions on Tuesday, November 1, 2022 3 contributions on Wednesday, November 2, 2022 1 contribution on Thursday, November 3, 2022 1 contribution on Friday, November 4, 2022 1 contribution on Saturday, November 5, 2022 4 contributions on Sunday, November 6, 2022 4 contributions on Monday, November 7, 2022 3 contributions on Tuesday, November 8, 2022 No contributions on Wednesday, November 9, 2022 1 contribution on Thursday, November 10, 2022 No contributions on Friday, November 11, 2022 11 contributions on Saturday, November 12, 2022 12 contributions on Sunday, November 13, 2022 2 contributions on Monday, November 14, 2022 No contributions on Tuesday, November 15, 2022 No contributions on Wednesday, November 16, 2022 6 contributions on Thursday, November 17, 2022 18 contributions on Friday, November 18, 2022 11 contributions on Saturday, November 19, 2022 10 contributions on Sunday, November 20, 2022 11 contributions on Monday, November 21, 2022 24 contributions on Tuesday, November 22, 2022 4 contributions on Wednesday, November 23, 2022 4 contributions on Thursday, November 24, 2022 10 contributions on Friday, November 25, 2022 5 contributions on Saturday, November 26, 2022 8 contributions on Sunday, November 27, 2022 11 contributions on Monday, November 28, 2022 6 contributions on Tuesday, November 29, 2022 6 contributions on Wednesday, November 30, 2022 7 contributions on Thursday, December 1, 2022 5 contributions on Friday, December 2, 2022 11 contributions on Saturday, December 3, 2022 6 contributions on Sunday, December 4, 2022 11 contributions on Monday, December 5, 2022 3 contributions on Tuesday, December 6, 2022 2 contributions on Wednesday, December 7, 2022 2 contributions on Thursday, December 8, 2022 6 contributions on Friday, December 9, 2022 1 contribution on Saturday, December 10, 2022 No contributions on Sunday, December 11, 2022 3 contributions on Monday, December 12, 2022 4 contributions on Tuesday, December 13, 2022 5 contributions on Wednesday, December 14, 2022 2 contributions on Thursday, December 15, 2022 10 contributions on Friday, December 16, 2022 3 contributions on Saturday, December 17, 2022 14 contributions on Sunday, December 18, 2022 5 contributions on Monday, December 19, 2022 1 contribution on Tuesday, December 20, 2022 1 contribution on Wednesday, December 21, 2022 No contributions on Thursday, December 22, 2022 1 contribution on Friday, December 23, 2022 9 contributions on Saturday, December 24, 2022 1 contribution on Sunday, December 25, 2022 19 contributions on Monday, December 26, 2022 3 contributions on Tuesday, December 27, 2022 8 contributions on Wednesday, December 28, 2022 1 contribution on Thursday, December 29, 2022 4 contributions on Friday, December 30, 2022 5 contributions on Saturday, December 31, 2022 2 contributions on Sunday, January 1, 2023 3 contributions on Monday, January 2, 2023 4 contributions on Tuesday, January 3, 2023 1 contribution on Wednesday, January 4, 2023 3 contributions on Thursday, January 5, 2023 19 contributions on Friday, January 6, 2023 10 contributions on Saturday, January 7, 2023 5 contributions on Sunday, January 8, 2023 2 contributions on Monday, January 9, 2023 4 contributions on Tuesday, January 10, 2023 5 contributions on Wednesday, January 11, 2023 4 contributions on Thursday, January 12, 2023 7 contributions on Friday, January 13, 2023 8 contributions on Saturday, January 14, 2023 4 contributions on Sunday, January 15, 2023 2 contributions on Monday, January 16, 2023 2 contributions on Tuesday, January 17, 2023 8 contributions on Wednesday, January 18, 2023 4 contributions on Thursday, January 19, 2023 2 contributions on Friday, January 20, 2023 4 contributions on Saturday, January 21, 2023 No contributions on Sunday, January 22, 2023 4 contributions on Monday, January 23, 2023 8 contributions on Tuesday, January 24, 2023 4 contributions on Wednesday, January 25, 2023 7 contributions on Thursday, January 26, 2023 9 contributions on Friday, January 27, 2023 6 contributions on Saturday, January 28, 2023 4 contributions on Sunday, January 29, 2023 14 contributions on Monday, January 30, 2023 4 contributions on Tuesday, January 31, 2023 7 contributions on Wednesday, February 1, 2023 5 contributions on Thursday, February 2, 2023 3 contributions on Friday, February 3, 2023 No contributions on Saturday, February 4, 2023 5 contributions on Sunday, February 5, 2023 10 contributions on Monday, February 6, 2023 4 contributions on Tuesday, February 7, 2023 5 contributions on Wednesday, February 8, 2023 3 contributions on Thursday, February 9, 2023 3 contributions on Friday, February 10, 2023 14 contributions on Saturday, February 11, 2023 5 contributions on Sunday, February 12, 2023 12 contributions on Monday, February 13, 2023 1 contribution on Tuesday, February 14, 2023 1 contribution on Wednesday, February 15, 2023 2 contributions on Thursday, February 16, 2023 1 contribution on Friday, February 17, 2023 No contributions on Saturday, February 18, 2023 5 contributions on Sunday, February 19, 2023 3 contributions on Monday, February 20, 2023 3 contributions on Tuesday, February 21, 2023 4 contributions on Wednesday, February 22, 2023 8 contributions on Thursday, February 23, 2023 4 contributions on Friday, February 24, 2023 3 contributions on Saturday, February 25, 2023 5 contributions on Sunday, February 26, 2023 No contributions on Monday, February 27, 2023 1 contribution on Tuesday, February 28, 2023 5 contributions on Wednesday, March 1, 2023 1 contribution on Thursday, March 2, 2023 5 contributions on Friday, March 3, 2023 No contributions on Saturday, March 4, 2023 No contributions on Sunday, March 5, 2023 1 contribution on Monday, March 6, 2023 1 contribution on Tuesday, March 7, 2023 No contributions on Wednesday, March 8, 2023 No contributions on Thursday, March 9, 2023 No contributions on Friday, March 10, 2023 3 contributions on Saturday, March 11, 2023 No contributions on Sunday, March 12, 2023 35 contributions on Monday, March 13, 2023 1 contribution on Tuesday, March 14, 2023 No contributions on Wednesday, March 15, 2023 2 contributions on Thursday, March 16, 2023 2 contributions on Friday, March 17, 2023 No contributions on Saturday, March 18, 2023 1 contribution on Sunday, March 19, 2023 2 contributions on Monday, March 20, 2023 No contributions on Tuesday, March 21, 2023 1 contribution on Wednesday, March 22, 2023 No contributions on Thursday, March 23, 2023 1 contribution on Friday, March 24, 2023 1 contribution on Saturday, March 25, 2023 2 contributions on Sunday, March 26, 2023 1 contribution on Monday, March 27, 2023 No contributions on Tuesday, March 28, 2023 1 contribution on Wednesday, March 29, 2023 No contributions on Thursday, March 30, 2023 1 contribution on Friday, March 31, 2023 No contributions on Saturday, April 1, 2023 No contributions on Sunday, April 2, 2023 No contributions on Monday, April 3, 2023 4 contributions on Tuesday, April 4, 2023 1 contribution on Wednesday, April 5, 2023 1 contribution on Thursday, April 6, 2023 No contributions on Friday, April 7, 2023 2 contributions on Saturday, April 8, 2023 No contributions on Sunday, April 9, 2023 No contributions on Monday, April 10, 2023 1 contribution on Tuesday, April 11, 2023 No contributions on Wednesday, April 12, 2023 No contributions on Thursday, April 13, 2023 No contributions on Friday, April 14, 2023 13 contributions on Saturday, April 15, 2023 15 contributions on Sunday, April 16, 2023 5 contributions on Monday, April 17, 2023 3 contributions on Tuesday, April 18, 2023 No contributions on Wednesday, April 19, 2023 No contributions on Thursday, April 20, 2023 1 contribution on Friday, April 21, 2023 2 contributions on Saturday, April 22, 2023 3 contributions on Sunday, April 23, 2023 5 contributions on Monday, April 24, 2023 5 contributions on Tuesday, April 25, 2023 No contributions on Wednesday, April 26, 2023 No contributions on Thursday, April 27, 2023 No contributions on Friday, April 28, 2023 May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr Mon Wed Fri

Contribution activity

April 2023

Created 3 repositories

Created a pull request in TheDevMinerTV/fucking-framework that received 1 comment

Update README.md

+1 −1 1 comment
Opened 4 other pull requests in 3 repositories
SlimeVR/SlimeVR-Rust 1 open 1 merged
sctanf/SlimeNRF-Tracker 1 merged
SlimeVR/SlimeVR-Server 1 merged
Reviewed 4 pull requests in 2 repositories
SlimeVR/SlimeVR-Server 3 pull requests
SlimeVR/SolarXR-Protocol 1 pull request

Created an issue in platformio/platformio-registry that received 1 comment

Opened 2 other issues in 2 repositories
sctanf/slimenrfpcb 1 open
bjoernQ/bleps 1 closed
36 contributions in private repositories Apr 15 – Apr 18