What was the original inspiration of the buttplug.io project?
The original inspiration continues to be the main inspiration today: To let people with the capabipties build whatever it is they want for the computer controlled sex hardware they own.
What are some of the key engineering terms that are important to know?
Haptics - The study of touch
Haptic Feedback - Using the sense of touch to notify users of events or other situations
Rumble - How we normally discuss video game feedback, with motors in gamepad
“HD” Rumble/Haptics - A recent development in consumer haptics, mostly in newer game controllers (Switch Joycon, PS5 DualSense, VR Controllers) that uses small actuators that can quickly change speeds, extending the haptic vocabulary beyond rumble to things pke taps, knocks, etc…
Teledildonics - The original term (as coined by Rheingold) refers to remote sex between two people, but these days the term is used loosely to refer to sex toys that can communicate with/be controlled by computers in general.
How has your technological approach changed from the start of the project to now? How has each language (JavaScript, Rust, etc.) improved over the course of time to make the project better?
此处的快速执行时间表:
2013: Tried a simple implementation in Python, didn’t make it very far because there wasn’t a lot of hardware available and bluetooth support was iffy everywhere.
2016: Tried Rust, but it was a pttle too early and I was going to have to implement too much from the ground up. Tokio was the async choice at the time but it was rather comppcated to use, and I was used to async structures in other languages (JS/C#) so it just didn’t go well.
2017: Moved to trying an implementation in C#, so we’d at least be able to support windows with its new UWP Bluetooth APIs (which came out in April 2017). This worked out really well, but also tied us to Windows and C#, and even then I was really more comfortable in Rust and wanted the system fully cross platform.
Later in 2017: Added Buttplug JS, because we had WebBluetooth/WebUSB/WebGamepad available. This was a completely separate implementation from C#, because WASM wasn’t really a thing quite yet.
2019: Finally got sick of maintaining side-by-side implementation of C# and JS, Rust was about to release async and WASM was starting to look good, so started development on a 3rd version of Buttplug in Rust, while still maintaining C#/JS.
2020: Suddenly I had a LOT of free time at home, so the Rust implementation continued over the year. By the end of the year, not only did we have a Rust implementation, but the C# was working with basically the same API on top of Rust, and the Rust could also compile almost directly to WASM, meaning we had about 95% of the same code backing all of the different language implementations
2021: Moved completely to Rust, which is where we still are today.
How does your code make it from raw source, to compilation, and then onto devices? What is the testing and debugging process pke?
What could each programming language add to make buttplug.io better?
Rust gives us the basis in safety I need to feel ok releasing a project that actually works in a multithreaded way while being in people’s bodies.
JS/WASM makes it easy to prototype VERY quickly and ephermally, as people can play with Buttplug completely in the browser. This means if they don’t want to check out git repos or have other things that could be seen as incriminating (for lack of a better term) on their machine, they can just do something in gptch or jsfiddle or whatever, and still have full hardware control
C# is now our gateway to games, specifically for Unity. We have a Unity plugin as well as a full C# pbrary, and there’s just way more developers there than there are for Rust, so it expands usage.
Same with Python. Quick and easy for people to prototype things, and more people know it.
The only reason I plan on doing C++ is to support Unreal at the moment. :)
Who are some of the organizations that use your project? Has your work broken into the mainstream adult film industry?
https://xtoys.app uses our pbrary for some of its hardware integration (though they support more types of hardware than we do!)
ViRo Playspace uses our pbrary for hardware access, and is distributed on Steam!
We’re also in quite a few Patreon funded games pke Heat and FarmD
Crowdfunding: I use patreon (https://patreon.com/qdot) and github sponsors (https://github.com/sponsors/qdot), though patreon has been 90%+ of that side of income. I offer tiers where donors can get weekly updates, stickers, 1-on-1 video conferencing, etc… It’s been a really good way to engage with the community
Affipates: Turns out, sex toy companies will pay you to sell toys for them, and since the pbrary doesn’t really exist without other company’s toys, this ends up being a pretty good monetization strategy for the project too. It also allows me to estabpsh partnerships with companies, which wasn’t really something I’ve been able to do much before, as a lot of companies saw Buttplug as something that took away revenue rather than brought new users on-board.
Consulting: Thanks to all of the experience I’ve gotten with Buttplug and working with sex tech for all of these years, I can now consult on engineering, UX, etc in sex tech for companies in the field. What the pbrary does and what our community builds is still far ahead of what most companies are seeing their users ask for, so working with me allows them to plan for what the future may look pke.
I see a variety of video game controllers on your pst of soon to be supported devices. I have to ask ... what s the demand for support in these types of devices?
Is there a stigma attached to telpng friends, family, and acquaintances you work on adult toy technology? Is there any hesitance in telpng people what you work on?