[HN Gopher] Buttplug (Sex Toy Control Library) Hits v1 Milestone
       ___________________________________________________________________
        
       Buttplug (Sex Toy Control Library) Hits v1 Milestone
        
       Author : qdot76367
       Score  : 177 points
       Date   : 2020-12-28 18:01 UTC (4 hours ago)
        
 (HTM) web link (nonpolynomial.com)
 (TXT) w3m dump (nonpolynomial.com)
        
       | ww520 wrote:
       | Is manual fallback the only option in the case of a unrecoverable
       | exception?
        
         | qdot76367 wrote:
         | Turns out that rust's "panic" has a completely different
         | context when applied to this context. :|
        
       | ExcavateGrandMa wrote:
       | terrible hacking :D
        
       | miohtama wrote:
       | We never got desktop Linux, but 2021 will be the year of open
       | source kinkware.
        
       | qdot76367 wrote:
       | Buttplug Project lead here! AMA.
        
         | joelbluminator wrote:
         | What motivated you to do this? Is there some financial gain to
         | be had? How is adoption?
        
         | [deleted]
        
         | lordnacho wrote:
         | What's the security model? Are there multiuser devices?
        
           | qdot76367 wrote:
           | This is a really difficult to answer question because of the
           | place in the stack this library inhabits. Buttplug _only_
           | cares about accessing hardware, so while it may sound like a
           | cop-out, our security model is  "whatever the hardware gives
           | us". Multi-user control systems would be built on top of the
           | library, and that's where a good bit of the security work
           | would happen.
           | 
           | That said, there are some security/privacy features built
           | into the architecture to reduce metadata dissemination, I'll
           | be outlining those in the developer guide at some point.
        
         | codefined wrote:
         | Do you feel the progress of the project is hindered /
         | benefitted / not effected by any stigmatism in western society?
         | Do you ever find it hard to talk to friends / family /
         | colleagues / strangers about this project?
        
           | qdot76367 wrote:
           | Oh, definitely hindered, but it's kind of a network effect
           | deal. Sex education isn't a high priority, so most people
           | barely know sex, much less sex + tech, which is very much its
           | own thing. That makes building technology like this extra
           | fraught, because of the amount of thinking I have to do up
           | front in order to try and guide things in as safe-ish a
           | direction as possible.
           | 
           | As for talking to people about the project, I've been a
           | public face for the field of sex tech since like 2005, so by
           | this point I'm pretty used to it. It's on my resume, I have
           | academic publications and book chapters on the subject, I've
           | spoken about it at all sorts of conferences around the world,
           | so I've kinda settled into being "The Buttplug Guy".
           | 
           | It took a ton of hard work and image building to get here
           | though, so it's a cliff I don't really recommend anyone else
           | try to climb without realizing how much work it is.
        
             | giantrobot wrote:
             | There's _way_ worse stuff than being  "The Buttplug Guy"!
             | [0]
             | 
             | [0] https://m.youtube.com/watch?v=A85ipUgy5B4
        
             | zamalek wrote:
             | What you are doing is important work, not because of butt
             | plugs, but because it is helping normalize talking about
             | sex, and "niche sex," in the tech community (also YouPorn
             | engineering!). Having engineers in the west be open about
             | sex is far better than having nobody open about it.
             | 
             | Openness about sex really is one way to improve the health
             | of the societal zeitgeist.
        
               | qdot76367 wrote:
               | Thanks! This is why I say the project is as much social
               | as it is technical. The technical topics are definitely
               | important, but the project as a whole invites scrutiny
               | not just from developers, security engineers, etc, but
               | also from those interested in or critical of how consent
               | and control work in technical means, what it means to be
               | intimate over remote mediums, etc...
               | 
               | As an example, one of the things I was working on right
               | before COVID-19 hit was a book chapter on digital
               | proxemics, i.e. how we map and relate personal space in
               | digital realms. This project and how it's been utilized
               | to augment online intimacy was a big part of that, and I
               | turned in the book chapter to the publisher the week
               | COVID-19 lockdowns started to hit in the US (still no pub
               | date tho :( ), so it's been a lot of seeing how those
               | ideas play out in large scale since.
        
         | errantspark wrote:
         | I very much appreciate STPIHKAL helping me get started
         | exploring this stuff. I'll admit that the library itself was a
         | bit intimidating. I ended up not using it and just wrapping the
         | protocol for the particular toys that were of interest to me in
         | about 40 lines of JS in order to implement chrome's
         | experimental `writeValueWithoutResponse`. I'm pleased to report
         | has a dramatic effect on latency. I wish I could contribute
         | back but the code is just over-my-head complicated.
        
           | qdot76367 wrote:
           | This is something I'm trying to figure out how to better
           | communicate about the project, and there will be another blog
           | post on this soon. Buttplug is both a floor cleaner AND a
           | dessert topping, and that can really be detrimental to the
           | initial developer experience.
           | 
           | There's a dichotomy in this project that's difficult to
           | resolve:
           | 
           | - Community wants sex toy access because there isn't much
           | else out there that does this.
           | 
           | - I wanna learn new stuff and also have a weird "LET'S PUT
           | DOOM ON IT" mentality of having the library support
           | everywhere.
           | 
           | So we end up with support for lots of toys, but it's on top
           | of a complicated, violently async rust library that is in
           | some cases compiled to WASM, which is a whole stack of
           | technologies not a lot of people are familiar with.
           | 
           | To torture another metaphor, I've ended up building the
           | hulking game engine for sex toys, when a lot of people would
           | be fine with some Atari 2600 games that vibrate. Lots of
           | people are going to have 1 toy they want to control with 1
           | simple interface, where my interest lies in "how does someone
           | release a game on Steam that seamlessly supports whatever the
           | user shows up with".
           | 
           | The updated developer guide (https://buttplug-developer-
           | guide.docs.buttplug.io) is my first crack at trying to cater
           | to all audiences, but it's got a long way to go, and the only
           | way to test documentation is to hopefully wait for feedback
           | from people who read it.
           | 
           | But that's why try to I keep both the protocol and reverse
           | engineering documentation up to date. I don't _want_ people
           | to have to go and reimplement things, but if it has to
           | happen, I want to make it as easy on them as possible.
        
         | mkr-hn wrote:
         | Any plans to do a panel on sex toy development at post-covid
         | furry cons?
        
           | qdot76367 wrote:
           | God, it's been a while, hasn't it?
           | 
           | We'll see if I get any invites. Seems like a very BLFC kinda
           | panel.
        
         | j1elo wrote:
         | Would you say that collecting all protocol specs from each
         | individual device is where most of the work lays behind this
         | library?
         | 
         | Otherwise, could you tell us about where is/was the 80% effort
         | to build what the library does, and what would be the next 20%
         | / last mile to consider it "done"?
        
           | qdot76367 wrote:
           | Protocol specs are actually pretty easy. The protocols aren't
           | that complicated, and there's some pretty simple ways to
           | figure them out. It's usually an hour or two per new device,
           | at most.
           | 
           | Everything that v1 rust does right now, our C#/JS versions
           | did before, so the technical work there was mostly fitting it
           | from gc'd runtime'd languages into Rust. I'm much better at
           | Rust now though!
           | 
           | The majority of the work technically AND design-wise (for me
           | at least) is the haptics abstraction. Our protocol is built
           | on a system of "verbs" at the moment, i.e. "vibrate",
           | "rotate", "stroke" (though we call it linear because it only
           | goes one direction at a time), etc... I'm writing a larger
           | blog post on this, but to summarize, it's REALLY hard to
           | build a language around this that's general. For instance,
           | the Lovense Max (a onahole style toy) has an air bladder that
           | inflates/deflates. It's about the only thing that has that.
           | So do I just make a new verb called "inflate"? Do I try to
           | match it to other toys with constriction like systems and
           | call it "constrict"? Does it even matter?
           | 
           | But, that's an ongoing problem. In terms of "done", I think
           | the next _big_ milestone will be mobile app support. We work
           | on mobile web browsers in a couple of different ways, but
           | Buttplug still needs app support, both native and for things
           | like cordova /react native/etc... The biggest issue there at
           | the moment lies in our bluetooth library (btleplug,
           | https://github.com/deviceplug/btleplug), because getting the
           | FFI via JNI to android is going to suck (even though I can
           | crib off Servo's WebBluetooth impl, which worked on Android).
        
         | raldi wrote:
         | What are some of your dream ideas for how this one day might be
         | used?
        
           | qdot76367 wrote:
           | Seeing the uptake in VRChat has been pretty awesome. For the
           | record, I grew up on MU*s, built the first Second Life sex
           | toy interface in 2005, which ended up with me working at
           | Linden, so I have a special place in my heart for virtual
           | worlds.
           | 
           | Otherwise, I am always really interested in ways people build
           | for themselves that they're willing to share with others. So
           | the answer to this question tends to be "my dream ideas are
           | the stuff I can't possibly dream of" :)
        
       | caeril wrote:
       | Glad to see HN really interested in the technologies that will
       | truly advance humanity to the stars, rather than those that
       | encourage distraction by our limbic systems.
       | 
       | I'm sure that climate change and other existential risks will
       | wait until after we're done with our sex toys to wipe us out.
       | 
       | edit: Brilliant response, "Hacker News". Maybe if you cum enough,
       | we'll be able to grow enough cereal crops to feed 8 billion
       | people in 102 degree weather, after potash is a thing of the
       | past.
        
         | codefined wrote:
         | You might want to read up on 'Fallacy of Relative Privation' to
         | see why this point of view is likely to not be helpful. A good
         | starting point is this[0].
         | 
         | [0] https://academy4sc.org/topic/fallacy-of-relative-
         | privation-a...
        
           | davidkuhta wrote:
           | You think 'The Fallacy of Relative Privation' is bad? What
           | about the 'tu quoque' fallacy. Wouldn't you consider that a
           | bigger problem?
        
           | caeril wrote:
           | Thanks for the rare thoughtful reply, but the fallacy is,
           | itself, a fallacy. IQ/g-factor/ability to reason about
           | systems is unevenly distributed - and, critically, a zero-sum
           | game. For every +2 SD IQ engineer devoted to making humans
           | orgasm, there is one fewer +2 SD IQ engineer devoted to other
           | pursuits, N% of which would have been positive for humanity's
           | progress.
           | 
           | Unfortunately, you can't really get around this without
           | heroic efforts to shift the bell curve to the right.
           | 
           | edit: Looks like I'm wrong again! Looking forward to HN
           | pointing me to the magic fairy dust that miraculously
           | conjures up raw intellectual talent from the ether.
        
             | michaelt wrote:
             | Aw man, you are going to be so mad when you find out the %
             | of software developer effort that goes into adtech and
             | entertainment.
             | 
             | Because I guarantee you, for every developer working on a
             | sex toy there a thousand working on selling lootboxes to 12
             | year olds, and ten thousand working on showing adverts to
             | people who'd rather not see them.
        
             | aprescott wrote:
             | I have no real opinion on the project in question but
             | devotion is not a fungible, generically applicable resource
             | you decide to apply to one issue or another. Run a test for
             | whatever "IQ/g-factor/ability" handwave you're referencing
             | on someone that loves their work and someone that doesn't.
        
               | caeril wrote:
               | I think the research is pretty clear on the matter that
               | "passion" is largely derivative of competence and the
               | values of the environment. A society that chooses to
               | elevate meaningful accomplishment and value training
               | people to pursue it is likely to be markedly different
               | than the instant gratification culture we are currently
               | swimming in.
               | 
               | edit: Whoops, factually wrong again, apparently! Perhaps
               | this den of rationality that purports to follow the
               | science and research will cite literature contrary to the
               | overwhelming evidence that human interest derives from
               | competence and acquired values. Maybe it's actually from
               | unicorn farts and kitten snuggles?
        
               | not_knuth wrote:
               | I can not help but detect a condescending tone in your
               | comments (if such is not the case, my apologies - Poe's
               | Law and all) and find it interesting that you have not
               | provided sources to the "research" which your claims are
               | based on.
               | 
               | I think it would benefit everybody if you could share a
               | couple of links to some "research".
        
             | scpedicini wrote:
             | No thanks, I'd rather make out with my Monroe bot.
        
               | qdot76367 wrote:
               | We'll hopefully have Monroe bot hardware support in an
               | upcoming version of the library.
        
             | henearkr wrote:
             | Happy humans are less likely to wage war.
             | 
             | So, lowering frustration and helping raising levels of
             | serotonin and endorphins, even by using tech, is
             | intrinsically good for the world.
             | 
             | Also, it seems that an active sex life (be it with tech or
             | not) is not dangerous for health.
             | 
             | The only reserve could be the tech pollution of badly
             | discarded toys etc, but that has solutions.
             | 
             | PS: Also -- bodily happiness can improve creativity, thus
             | actually indirectly helping advances in other scientific
             | domains.
        
               | morlockabove wrote:
               | Are sex toys alone actually fulfilling to most people?
               | Given the number of people on thw internet complaining
               | about misery from sexual loneliness, it clearly isn't
               | enough.
               | 
               | Sex toys, porn, and enculturing cowardice stave off the
               | war, I guess. You just get Elliot Roger instead.
        
               | henearkr wrote:
               | The connectedness of the new generation of toys, combined
               | with worlds such as VRChat, are contributing to make the
               | loneliness of "not skin-to-skin sex" a thing of the past.
               | 
               | Also you start to see (unmanned) virtual characters
               | sophisticated enough to trigger emotions of love, and in
               | some case commitment. It is clearly still extreme and a
               | bit too early, but in the near future I can see people
               | becoming really in fond of their virtual AI character
               | partner.
               | 
               | We agree that not only immediate endorphins levels, but
               | also mid and long term serotonin levels, are important
               | for happiness, and I think that this connected tech is
               | helping in the right way.
        
               | morlockabove wrote:
               | Sounds like hell. Nothing personal, but I really hope
               | your enterprise fails miserably.
        
               | henearkr wrote:
               | It's what some people need.
               | 
               | People who don't need it just won't use it.
               | 
               | It's not a "smoker / passive smoker" effect, they will
               | not disturb other people.
        
               | morlockabove wrote:
               | Some people need heroin. I'm against the war on drugs,
               | but I still despise dealers.
        
               | henearkr wrote:
               | But in the case of heroin there are huge side-effects on
               | health of the user and on the security of the surrounding
               | people.
        
               | qdot76367 wrote:
               | VRChat via a few different plugins (that I should really
               | link from my awesome-buttplug repo) makes up a BIG chunk
               | of my users.
               | 
               | Which kinda makes me sad because VRC is an absolute
               | nightmare to work with. Can we please all move to NeosVR?
               | :3
        
             | asxd wrote:
             | I think the reason you're getting downvoted is pretty much
             | that you're trying to impose your ideals on others. Some
             | people likely benefit from this library. Some people
             | benefit from the latest video game. If we were all working
             | on curing cancer, the sad truth is that there wouldn't be
             | very many fun things in life.
        
               | dazzawazza wrote:
               | Having a life worth living is something a lot of people
               | forget to do.
        
               | morlockabove wrote:
               | If we all worked on things as important as curing cancer,
               | we could build god and live happily forever. Whichever
               | generation manages this will 'win'. (Or they build a
               | paperclipper and ruin the lightcone.)
        
         | qdot76367 wrote:
         | But I don't want to cure cancer.
         | 
         | I want to turn people into dinosaurs.
         | 
         | (https://imgur.com/YKaqaTH)
        
           | zxcvbn4038 wrote:
           | Hashtag #Scalies?
        
       | StavrosK wrote:
       | > When working on Buttplug applications, something that should be
       | at the forefront of your design thinking is:
       | 
       | > Someone is going to fuck this.
       | 
       | I love this project.
        
       | djsumdog wrote:
       | I was curious and tried working with this an a device about a
       | year ago and the whole thing felt like a mess. There are browser
       | components, electron cancer, web-to-bluetooth pieces. I think I
       | could get my device to register/pair but couldn't get anything
       | past that.
       | 
       | I was looking through the docs and the only useful thing seemed
       | to be the low-level code if I wanted o make my own applications
       | on top of it.
       | 
       | The reverse engineering work is important, but the tooling/UI
       | needed work. I actually want to contribute to this to help, but
       | it's a bit far down on the backlog of life.
        
         | devwastaken wrote:
         | What's wrong with web to bluetooth or web browser components?
         | Electron is pretty standard for user facing cross platform UI.
         | This is a sort of application that has the right to use more
         | resources - because if you're 'vibin' I don't imagine you're
         | really needing that other 150MB to run minecraft modpacks.
         | Perhaps if you're in VR and only have 8GB of ram.
         | 
         | You have to hone your expectations for free projects. Native or
         | native-like UI toolkits are expensive on time. Time is the
         | biggest problem with making free software for people. Now if
         | this were a commercial product - yes I agree with the
         | criticism. There's no reason at that point that they couldn't
         | do GTK3, QT, flutter, etc.
        
           | thatguymike wrote:
           | Depends on the minecraft modpack ( deg [?]? deg)
        
         | qdot76367 wrote:
         | Yup, the way I'm trying to do things definitely may not be
         | right for everyone, and that's fine! That's why the reverse
         | engineering work is documented
         | (https://stpihkal.docs.buttplug.io, but also check the github
         | repo because I am years behind on updates based on issues now),
         | so if people want to pick up protocols and try their own thing,
         | they absolutely can. I want to learn from other people
         | approaches to this too.
         | 
         | In fact, that's exactly what xtoys has done:
         | 
         | https://xtoys.app
         | 
         | They're just using the reversed protocols my project
         | documented, while building outside of my admittedly complicated
         | library interface. It's been a great project to watch grow,
         | because while I'm kinda hyperfocused on platform and hardware
         | support, they're going breadth-first with user focused features
         | on a WebRTC platform.
        
       | skocznymroczny wrote:
       | How's the security of this? Do you do penetration tests?
        
         | 1vuio0pswjnm7 wrote:
         | It's only a toy library.
        
         | __MatrixMan__ wrote:
         | Related: https://internetofdon.gs/
         | 
         | (It's as sfw as a sex toy hacking site can be)
        
         | snuxoll wrote:
         | Groan, take an upvote.
         | 
         | In all seriousness, many of the devices in this space are
         | woefully insecure - this is just a library to control them
         | using whatever native protocols they expose.
        
           | dhsysusbsjsi wrote:
           | This is something I could get behind
        
             | IgorPartola wrote:
             | Always a good idea to check it out for any back door access
             | issues.at least we haven't gotten to hot code loading being
             | a problem yet.
             | 
             | I suspect that engineering of any kind has more perverse or
             | pervertible terms than any sex toy industry.
        
               | qdot76367 wrote:
               | Not saying that I take constant advantage of that on
               | twitter, but...
               | 
               | https://twitter.com/buttplugio/status/1341958265475723264
        
             | paul7986 wrote:
             | yet not something you can get on top of or ?
        
             | loceng wrote:
             | This is what she/he said.
             | 
             | Edit to add: a thread of sequential puns and then..
        
         | keyle wrote:
         | Off topic, I love that the good jokes still get upvoted on HN
         | and it's not a bro-aehaeh-land like Reddit is.
         | 
         | I wonder what the difference is, maybe just a more mature
         | audience? Nerdier jokes?
        
       | wut42 wrote:
       | I played a bit last year building my own sex toy controller,
       | using a lightweight RPi Zero, an Erlang server, and a
       | nanoKONTROL2 controller. It was quite fun and I hope to find some
       | time soon to resume working on it :-) Bluetooth isn't a fun
       | protocol to deal with, tho.
        
         | qdot76367 wrote:
         | Oh that's awesome! Sounds like a real cool setup. :D
         | 
         | We _do_ have our CLI server compiling for RPi0W if you 're
         | interested, though I need to update that soon. This is well
         | into the "no so documented" part of the project tho, so it's
         | not super easy to use yet.
         | 
         | https://github.com/intiface/intiface-cli-rs
        
           | wut42 wrote:
           | I decided to go custom because I love writing code, but
           | thanks a lot for buttplug and its documentation: it's how I
           | managed to get my code to work with Lovense's products. I'll
           | surely try to give a shot at using Buttplug one of theses
           | days :).
           | 
           | To elaborate on the setup, it could manage four or five toys
           | at the same time; all controlled by the nanoKontrol. I could
           | even record custom loops and patterns for each "track" to
           | have more fun.
        
       | asfarley wrote:
       | This reminds me of a story an industrial designer told me: he
       | worked on a dildo with a scripting system, so the ladies could
       | set the number of milliseconds for each waveform profile on the
       | haptic motor. The product was not a success.
        
         | qdot76367 wrote:
         | Yup! Interfaces have been a problem in the industry going back
         | decades. See me getting excited about a similar product that
         | catastrophically failed back in 2006 (when I was a young, far
         | less experienced engineer :D ):
         | 
         | https://www.metafetish.com/2006/02/17/je-joue-part-2-my-god-...
         | 
         | Presenting something like this library directly to the user
         | will end up in product death. What I'm building is a tool for
         | developers to refine that end product interface specifically so
         | the user (who is usually horny and does not care about
         | technological details) can have something they can work while
         | in that state.
         | 
         | But it's gonna take a while to get there.
        
         | xellisx wrote:
         | I looked into doing something like in the early 2000s, bit
         | found that my idea would take more power I was comfortable to
         | be able to provide in such spaces.
        
       | [deleted]
        
       | amelius wrote:
       | Will there be support for iOS?
        
         | qdot76367 wrote:
         | Working on it!
         | 
         | Technically I _think_ btleplug might already work for iOS (I
         | haven 't tested this but I've heard the corebluetooth calls
         | stay the same?), and I've gotten the library to compile for
         | iPhone, but I still need to build Swift FFI bindings.
         | 
         | The web version currently "works" via the WebBLE browser that's
         | a available in the app store, which is just the webview
         | polyfilled for WebBluetooth:
         | https://apps.apple.com/us/app/webble/id1193531073
         | 
         | But I wouldn't call that a great experience.
         | 
         | The hope is to support both android and iOS for apps soon
         | though!
        
       | cromwellian wrote:
       | Brings a whole new meaning to the term "plug-and-play". Sorry,
       | couldn't resist.
        
       | thunderbong wrote:
       | A sixteen year quest! Amazing!
        
       | noman-land wrote:
       | Speaking of sex toy security, this reminds me of one of my
       | favorite recent posts here:
       | 
       | Blowjob Injection Attack -
       | https://news.ycombinator.com/item?id=24702282
        
         | stevespang wrote:
         | Hahahahahah.
        
         | qdot76367 wrote:
         | Sarah Jamie Lewis's work on privacy has been massively
         | influential on the work I'm trying to do. I also highly
         | recommend checking out her Oniondildonics post about metadata
         | obfuscation in anonymous teledildonics interactions:
         | 
         | https://mascherari.press/oniondildonics/
         | 
         | She's now running the Open Privacy project, which is doing
         | great work on general anonymized communication:
         | 
         | https://openprivacy.ca
        
       | zxcvbn4038 wrote:
       | Reminds me of an episode of MST3K where they played a '50s beer
       | documentary that went in depth into all the science and
       | engineering behind keeping the beer cold between the brewery and
       | the store. Then one of the robots pops up and says - "Meanwhile,
       | the Soviets were developing Sputnik."
        
         | DoofusOfDeath wrote:
         | Are you thinking of "As You Like It"? If so it's also available
         | from rifftrax.com.
        
       | dj_mc_merlin wrote:
       | > 2013 - First Python implementation, known as "Fuck Everything".
       | 
       | Amazing. Nice to see people dedicated to the fine arts of
       | buttplug manipulation.
       | 
       | Just FYI:
       | 
       | > August 2017 - Kyle incorperates Nonpolynomial
        
         | qdot76367 wrote:
         | Someday I will learn to spell incorporates.
         | 
         | But yes I do run a startup on this software! Mostly for
         | consulting for larger product manufacturers, though there may
         | be some services work happening in the future. I've been poking
         | at some ideas around containerizing teledildonics services, but
         | there's a whole host of social and legal issues around the idea
         | that will take a while to iron out.
        
           | dj_mc_merlin wrote:
           | If you have the time, mind detailing some of the legal
           | issues?
        
             | qdot76367 wrote:
             | The biggest one for me is information storage and
             | transmission. People want repeatable interfaces, which
             | means it'd be nice if they have an account, but how much
             | information should I hold about that user in relation to
             | their usage of a teledildonics service? My work exists in a
             | very odd gray area that's not quite porn, so under
             | SESTA/FOSTA and the upcoming SISEA, I'd have to figure out
             | what I am/am not liable for.
             | 
             | Being a single developer project that's open source but
             | also a company and yet I already have multiple lawyers, I
             | really can't afford to be a test case for that.
        
       | dang wrote:
       | If curious see also
       | 
       | https://news.ycombinator.com/item?id=23094477
        
         | [deleted]
        
       ___________________________________________________________________
       (page generated 2020-12-28 23:00 UTC)