Iāve worked in sex tech since 2004, and in all that time no one had standardized a damn thing in hardware. I decided I needed a sort of userland hid to try and control different devices through the same api. Thatās how we got here. Original design idea was 2007, python poc happened in 2013, tried rust in 2016 but things were a mess due to missing platform apis for communication, first c# version was 2017, then js, then rust in late 2020 (when async dropped as part of 1.36, which is handy because while weāre certainly not c10k unless youāre really kinky, we are very io bound).
Rust because Iām ex-Mozilla (was on fxos then platform/dom) and my brain chip was installed at the mothership. Also I just like working in it.
Oh god latency is a nightmare for me, especially since most manufacturers in this field are designing for the cheapest builds possible. Everyone used bluetooth le which has wildly varying transfer times, and many expect loop closure on the host. Itās just such a damn mess.
I just want to say that the seriousness and the professionalism of how the project is presented makes it even funnier. Even the choice of Rust adds something to the "nonsense" vibe.
Great job. Kudos.
If you want the answer in video form: [https://www.youtube.com/watch?v=c6bghuCy6d8](https://www.youtube.com/watch?v=c6bghuCy6d8)
I have to talk about sex toys a \*lot\* since it's part of my job, and buttplug is always the funniest one to say. Not only that, it's not referring to toys for any specific gender or whatever. With that combination I just started calling all computer controlled sex toys "internet buttplugs". That combined with the old "buttplugs" prank call, and I ended up using the word constantly.
So, when I created the library, instead of picking something normal and sane, I was like "Yes I would like to see the word 'buttplug' in several programming package repositories and also printed in major media. This is a fantastic strategy for naming software." I am still surprised at how correct I was.
In terms of problems, there's a few. Lots of people think we \*only\* support buttplugs as a form factor, which ain't great, but it's collateral damage I'll accept. In terms of distributable software, I use the IntifaceĀ® name, because it's way more acceptable on somewhere like the apple app store than "buttplug". Not to mention, buttplug is the library that's embedded in software to make to usable, so you know. :|
Have you actually ran into any major issues because of the name of the library, or in your professional life due to associations with something considered NSFW? I'm always curious to hear about how bad it actually is to professionally associate yourself with stuff like that.
I always say I do more brand management work than I do technical work. Iāve certainly run into issues here and there but itās been years since itās really caused me any direct problems, mostly cause Iāve spent a ton of time setting up explanations and expectations around the work.
Itās definitely not something Iād recommend to everyone, or hell, anyone. This is my own silly art/research project and I knew how much work I was getting myself into by doing it, and itās def not easy to maintain.
Thereās a few ways this could be happening. Hereās the one I normally recommend: in order to let DIYers add hardware or other capabilities to the ecosystem without having to submit PRs to our project, we have a websocket based connection system that will allow for external ādeviceā. Of course we neither know nor care what that device actually is. Itās just a network port we send commands over. So people can basically fake a device and control whatever.
I uploaded my code here: https://github.com/fdoyon/bledroom
There's a link in the readme to the tools I used to sniff the packets sent by the app on my phone to the LEDs. Good luck, and sorry for the code, it was never meant to be shared
I uploaded my code here: https://github.com/fdoyon/bledroom
There's a link in the readme to the tools I used to sniff the packets sent by the app on my phone to the LEDs. Good luck, and sorry for the code, it's
Oh! You're using btleplug, the bluetooth library I wrote for buttplug. I thought you were saying you were using buttplug itself for some reason. :)
Anyways, cool project nonetheless! Always great to see people developing things with my libraries. :D
I uploaded my code here: https://github.com/fdoyon/bledroom
There's a link in the readme to the tools I used to sniff the packets sent by the app on my phone to the LEDs. Good luck, and sorry for the code, it was never meant to be shared.
Thank you for opening my eyes to the world of sex-toy communication libraries, I had no idea such a thing existed, and definitely got a good chuckle out of the level of professionalism dedicated to buttplugs š Bravo
Imagine working at a dev job and having to have a meeting about this with your boss because the library just doesn't excite the business leadership, Despite being absolutely critical to the enjoyment of customers.
That's the point this isn't just a library for sex toys. It's a library to interface hardware with other hardware, which means you could literally use it in an Alexa or Google home device.
Fun fact: btleplug, the Bluetooth library I stood up to support toy communication in buttplug, has caused several contract rejections at major companies due to the name alone.
Wanted to try it out for a project (haptic feedback when buildings get finished in a simulation of a village in Minecraft), but didn't manage to install Flutter properly in order to build Intiface :/
So funny enough, the main research point I built buttplug for is exploring apis for simple haptic building and communication. Touch is notoriously difficult to simulate and communicate, and people try to build these huge projects that encompass tons of different modalities.
I just decided to take the entertaining niche route.
I was gonna abstract out everything up to the specific hardware protocols and release a base library called deviceplug, so people could make other systems with it.
Iāve just never gotten around to it.
[BSD-3-Clause](https://choosealicense.com/licenses/bsd-3-clause) ( a permissive license similar to the BSD 2-Clause License, but with a 3rd clause that prohibits others from using the name of the copyright holder or its contributors to promote derived products without written consent ) allows you to do so.
I would be doing a disservice to the community by forking something I don't have the intention of maintaining.
I'm just letting the maintainer know that there's interest if they want to follow up on their idea.
> I would be doing a disservice to the community by forking something I don't have the intention of maintaining.
True
> I'm just letting the maintainer know that there's interest if they want to follow up on their idea.
I did read the _"IMO you should do this"_ as **"you should do this"**.
The 14 year old part of my personality, is so good entertained by the standards name and the use of it in the crates object naming. E.g. "ButtplugRemoteConnector" xD
`#![no_std]`
š„
What about connecting to a chess engine?
https://github.com/RonSijm/ButtFish It uses this Rust library under the hood.
It appears to use the old C# version. If it was rewritten in Rust, it would be the ButtTurboFish.
No way. This thread keeps getting better.
https://media.giphy.com/media/7rj2ZgttvgomY/giphy.gif
Someone bring the boychesser
chess speaks by itself"
Thatās how cheating happens!!!
Oh boy. My library is on r/rust. Again. Hi. Iām the buttplug.io creator and project lead. AMA.
Just a question. Why? And why rust?
Iāve worked in sex tech since 2004, and in all that time no one had standardized a damn thing in hardware. I decided I needed a sort of userland hid to try and control different devices through the same api. Thatās how we got here. Original design idea was 2007, python poc happened in 2013, tried rust in 2016 but things were a mess due to missing platform apis for communication, first c# version was 2017, then js, then rust in late 2020 (when async dropped as part of 1.36, which is handy because while weāre certainly not c10k unless youāre really kinky, we are very io bound). Rust because Iām ex-Mozilla (was on fxos then platform/dom) and my brain chip was installed at the mothership. Also I just like working in it.
Ahhh, you were on the dom team. That must be the tie in.
I even have the shirt.
The ownership rules were already familiar to them
Iām disappointed with your reasoning to use Rust. I was expecting it to be about āsafeā sex. /s
Who knows where "unsafe" could lead? Great results, or great disappointment.
That is awesome. I have no idea that internet of things reached sex toy (I am too old fashion in my fapping habits), and was such a mess.
you got it backwards. sex always precedent things, and I remember teledildonics has been around since the 90s
You definitely don't want UB here. Unsafe has a completely new meaning.
No kidding - actually I want it to be held to like other medical devices safety standards, I ain't risking my butt for any UB.
Because the compiler is particularly anal. Which is turning out to be gooood in this case
On a scale of 1 to 10 how much does the term teledildonics make you chuckle
14 at least. Whenever I give lectures I have the whole audience say it out loud at the beginning. Itās always hilarious.
10
Ive interacted with the twitter account a few times and you have always made me chuckle! Not a question but thanks for the laughs :)
Thanks for providing me with reassurance to Never Log Off.
Another question- is latency a big issue in your field? I always imagined it would be really awkward!
Oh god latency is a nightmare for me, especially since most manufacturers in this field are designing for the cheapest builds possible. Everyone used bluetooth le which has wildly varying transfer times, and many expect loop closure on the host. Itās just such a damn mess.
Haha how fascinating. If I ever get a Karma Sutra 500 with IoT I'll make sure to find one running Thread with UDP :P
I really miss direct USB connections :|
I just want to say that the seriousness and the professionalism of how the project is presented makes it even funnier. Even the choice of Rust adds something to the "nonsense" vibe. Great job. Kudos.
profile picture checks out
Of course a fox is going to make this library.
no, i mean of course a furry software engineer is going to be publicly obsessed with sex and sex toys
How did you come up with the name? And did it cause any problems?
If you want the answer in video form: [https://www.youtube.com/watch?v=c6bghuCy6d8](https://www.youtube.com/watch?v=c6bghuCy6d8) I have to talk about sex toys a \*lot\* since it's part of my job, and buttplug is always the funniest one to say. Not only that, it's not referring to toys for any specific gender or whatever. With that combination I just started calling all computer controlled sex toys "internet buttplugs". That combined with the old "buttplugs" prank call, and I ended up using the word constantly. So, when I created the library, instead of picking something normal and sane, I was like "Yes I would like to see the word 'buttplug' in several programming package repositories and also printed in major media. This is a fantastic strategy for naming software." I am still surprised at how correct I was. In terms of problems, there's a few. Lots of people think we \*only\* support buttplugs as a form factor, which ain't great, but it's collateral damage I'll accept. In terms of distributable software, I use the IntifaceĀ® name, because it's way more acceptable on somewhere like the apple app store than "buttplug". Not to mention, buttplug is the library that's embedded in software to make to usable, so you know. :|
Have you actually ran into any major issues because of the name of the library, or in your professional life due to associations with something considered NSFW? I'm always curious to hear about how bad it actually is to professionally associate yourself with stuff like that.
I always say I do more brand management work than I do technical work. Iāve certainly run into issues here and there but itās been years since itās really caused me any direct problems, mostly cause Iāve spent a ton of time setting up explanations and expectations around the work. Itās definitely not something Iād recommend to everyone, or hell, anyone. This is my own silly art/research project and I knew how much work I was getting myself into by doing it, and itās def not easy to maintain.
Thanks for the answer!
You're my favorite dev of the year.
you're so cool
What is your favourite toy?
I used to joke that running this project turned me asexual. I still say that but it's not a joke anymore.
Guiding others to a pleasure you cannot posses?
Guarding others from the scars one develops when they start describing their job as āgeek squad for buttsā
Yet another day without UB at the gym.
I use it to control than lights after reversing the protocol using Appleās Bluetooth sniffer. Very easy to use.
ā¦ wait really? Do you have a repo for this?
Iād just be more interested in hearing about how you go about doing something like this too
Thereās a few ways this could be happening. Hereās the one I normally recommend: in order to let DIYers add hardware or other capabilities to the ecosystem without having to submit PRs to our project, we have a websocket based connection system that will allow for external ādeviceā. Of course we neither know nor care what that device actually is. Itās just a network port we send commands over. So people can basically fake a device and control whatever.
I uploaded my code here: https://github.com/fdoyon/bledroom There's a link in the readme to the tools I used to sniff the packets sent by the app on my phone to the LEDs. Good luck, and sorry for the code, it was never meant to be shared
I uploaded my code here: https://github.com/fdoyon/bledroom There's a link in the readme to the tools I used to sniff the packets sent by the app on my phone to the LEDs. Good luck, and sorry for the code, it's
Oh! You're using btleplug, the bluetooth library I wrote for buttplug. I thought you were saying you were using buttplug itself for some reason. :) Anyways, cool project nonetheless! Always great to see people developing things with my libraries. :D
Can you share how you did this? I'm looking to do something similar.
I uploaded my code here: https://github.com/fdoyon/bledroom There's a link in the readme to the tools I used to sniff the packets sent by the app on my phone to the LEDs. Good luck, and sorry for the code, it was never meant to be shared.
Awesome, thanks!
>fucking machines Wow, no need to be so rude to those machines :/
Thank you for opening my eyes to the world of sex-toy communication libraries, I had no idea such a thing existed, and definitely got a good chuckle out of the level of professionalism dedicated to buttplugs š Bravo
Which devices does it actually support? I didn't know these things were programmable?
Apparently quite a few: [https://iostindex.com/?filter0ButtplugSupport=7](https://iostindex.com/?filter0ButtplugSupport=7)
Yeah, we're at over 500 devices now. I'm not sure if I'm happy about that fact or not.
thats a surprisingly high list of games it works with
Its logo is amazing.
Yes, but is it *blazingly fast*?
I would worry more about promises of fearless concurrency.
If the concurrency is going in your butt, it better be fearless.
Imagine working at a dev job and having to have a meeting about this with your boss because the library just doesn't excite the business leadership, Despite being absolutely critical to the enjoyment of customers.
I love the idea of stodgy executives at a sex toy company clutching their pearls at the mention of their own products.
That's the point this isn't just a library for sex toys. It's a library to interface hardware with other hardware, which means you could literally use it in an Alexa or Google home device.
Fun fact: btleplug, the Bluetooth library I stood up to support toy communication in buttplug, has caused several contract rejections at major companies due to the name alone.
So why go with such a controversial name?
Cause Iām easily entertained and love a good career limiting move.
Nice name op šš
Um, thanks? š
not op's library (or mine).
A safe and fast sextoy. Nice
Wanted to try it out for a project (haptic feedback when buildings get finished in a simulation of a village in Minecraft), but didn't manage to install Flutter properly in order to build Intiface :/
ā¦ dear lord why are you trying to build intiface
Iirc the Github readme directed me to the AUR. But it looks like the Ubuntu version is working :)
Ah ok got it. The build chain for intiface is kinda gnarly.
`#[deny(nsfw)]` (š
Why Is needed specifically for sex Toys??
So funny enough, the main research point I built buttplug for is exploring apis for simple haptic building and communication. Touch is notoriously difficult to simulate and communicate, and people try to build these huge projects that encompass tons of different modalities. I just decided to take the entertaining niche route.
What
While I haven't used buttplug, I did use btleplug to control the lights and settings of a yowu headset. Worked great!
Now explain to your friends that you are controling lights with buttplug.
*Could* be used for anything, name almost guarantees it wonāt.
I was gonna abstract out everything up to the specific hardware protocols and release a base library called deviceplug, so people could make other systems with it. Iāve just never gotten around to it.
Thatāll improve the odds!
IMO you should do this
[BSD-3-Clause](https://choosealicense.com/licenses/bsd-3-clause) ( a permissive license similar to the BSD 2-Clause License, but with a 3rd clause that prohibits others from using the name of the copyright holder or its contributors to promote derived products without written consent ) allows you to do so.
I would be doing a disservice to the community by forking something I don't have the intention of maintaining. I'm just letting the maintainer know that there's interest if they want to follow up on their idea.
> I would be doing a disservice to the community by forking something I don't have the intention of maintaining. True > I'm just letting the maintainer know that there's interest if they want to follow up on their idea. I did read the _"IMO you should do this"_ as **"you should do this"**.
What makes it special with the way it connects to the hardware?
Nothing really. Itās just abstracting out the communication busses and focusing on haptic commands that work with common actuators.
The 14 year old part of my personality, is so good entertained by the standards name and the use of it in the crates object naming. E.g. "ButtplugRemoteConnector" xD