Topic: A "stroke to the beat" slideshow viewer with too much feature-creep.

Posted under e621 Tools and Applications

JOI.how

https://joi.how

This is a small application I've been working on for a bit. Just a web app E621 slideshow that has a jack-off-instruction-style stroke-to-the-beat UI! If you find that sort of thing interesting, check it out here!

I'm also taking feature requests! If there's anything you'd like to see added, feel free to sound off in this thread.

Now compatible with the new E621 api!

Features

  • E621 post loader, based on tags.
  • Stroke speed and control settings.
  • Events that adjust speed, or ask you to do something.
  • Duration control.
  • Orgasm control.
  • Initial support for some basic hypnosis stuff.
  • Codes you can use to share your configs!
  • Integration with Lovense's Hush plug to milk you automatically!

Change Log (Also shown on app)

1.0.0 - Fri, 13 Dec 2019 02:36:11 -0500
Added new logo
Added a post number selector
Fixed some weird styles
Renamed to JOI.how!!! 🍆

1.0.1 - Fri, 13 Dec 2019 02:38:35 -0500
Just a small release for syncing up tags

1.0.2 - Fri, 13 Dec 2019 02:56:33 -0500
Now you can see change logs on the client!

1.1.0 - Wed, 18 Dec 2019 02:33:04 -0500
Added new steepness option for pace
New hypno mode for good boys
Added ability to export/import settings from others using a shareable code
Fixed some mobile styling bugs
Much better intensity mapping (thanks Fauxil)

1.1.1 - Wed, 25 Dec 2019 14:01:38 -0500
Better accessibility and keyboard navigation
Cleaner looking release notes component
New lick up pre task
Saving last session to LocalStorage for easy pick-up
bugs bugs bugs

1.2.0 - Fri, 14 Feb 2020 01:10:55 -0500
Added new cum tweaks, for ejaculation and ruining probabilities
Tweaked some of the event probabilities

1.2.1 - Fri, 21 Feb 2020 22:46:22 -0500
Better description on cum event, suggested by CrocoGator on e621
Added a femdom list, requested by /u/L4texP3t on reddit

1.2.2 - Sun, 01 Mar 2020 17:45:53 -0500
Added a new "pause" event
Added an option to use high res images off of E621, suggested by Zermelane on e621
Gifs are only animated when previewing them, rather than on the thumbnail. (Still works in-game of course!)

1.2.3 - Thu, 05 Mar 2020 20:22:28 -0500
Added support for the new E621 API

1.3.0 - Sun, 24 May 2020 18:59:59 -0400
Added support for Hush butt plugs (Thanks @Fauxil)
Many small bug fixes

1.3.1 - Sun, 31 May 2020 15:01:12 -0400
Fixes to analytics
Copy changes

1.3.2 - Sun, 31 May 2020 15:17:02 -0400
Copy changes

1.4.0 - Sun, 31 May 2020 20:17:25 -0400
Cookie consent notice, with opt-in

1.4.1 - Tue, 03 Nov 2020 20:41:39 -0500
Lowered volume on guide sounds
New buttplug integration! We now connect via WebBluetooth to the device directly. This is much more stable than the old version, and compatible with the Lovesense Edge, amoung others. (Thanks for bringing this up NotUncommon on e621!)
Bugs

Try it online

https://joi.how

Updated

owo
This is awesome! It's fapinstructor.com, but for e621 instead of Reddit (thus making it superior). Thanks!

Suggestions:

  • an option (or how it is by default) to make the pulsing circle smaller and move it by the hand indicator. The way it is now is sorta stylish, but it's also sorta like a distracting_watermark.
  • For the randomly flashing messages, the ones longer than one word are hard to read. Maybe messages should last for 1.5 times as long? Though I suck at reading fast, so this could just be me.

Bug:

  • The event option "Cum" says it "allows you to finish at the end of the game", but what it actually does is allow the game to end. Disabling it ensures the game goes on indefinitely.

Updated by anonymous

Thanks for the feedback!

I'm actually currently working on some stuff to adjust the UI! Currently just hiding that status panel at the top, but I'll be sure to add options for the circle!

I've heard the messages can be heard to read! Will try increasing the time on screen (have only increased font size and reduced text length)

And in regards to the cum option, good point! Should probably have some set of mutually exclusive event options for ending the game.

Keep an eye out, shouldn't take long to get this stuff in there.

Updated by anonymous

Ooh, nice! :D

Tags seems to offer the same set of pics every time, not sure if this is intentional but a bit more variety would be great! Also a tag blacklist would be useful, I know you can already do this through import but it'd be much more convenient and cleaner if I can keep it in a list and not have to type it out every time.

Keep up the good work! <3

Edit: Being able to make your own hypno spinner text would be awesome too! :3

Updated by anonymous

Custom hypno text is something I'm actually currently working on!

As for random posts, I may be able to add some UI to adjust some more under-the-hood tags, like order:score!

And blacklist is a good idea! I've added it to the list of priority stuff! Should be pretty easy since I already have the post's tags from the API response.

Updated by anonymous

Mindbomb said:
Ooh, nice! :D

Tags seems to offer the same set of pics every time, not sure if this is intentional but a bit more variety would be great!

You can mix them up (better than ailurus's site easily could) by just tossing order:random to your tag string.

For my part: This thing looks fine enough on my tiny laptop, but on my gigantic high-resolution desktop screen, the sample-resolution pictures are a bit on the fuzzy side. An option to load full-resolution pictures would be nice. For making sure that you can actually swap those big full-resolution pictures in without a visible delay where you're not showing anything, I've found that HTMLImageElement.decode gets the job done quite well.

Updated by anonymous

I've updated the app to be compatible with the new E621 API. It broke the porn selector for a bit. If it doesn't work for you, try refreshing!

Woo! Version 1.3.0 is online! Refresh if you don't see it.

This new version adds support for Hush Buttplugs! Yeah! Internet of things! Your plug will buzz at the current pace you have in the game.

BIG THANKS TO FAUXIL FOX! He's the one that figured out the internals of the Hush API!

You'll need a session URL, this can be created by getting the share URL from the app for a current session, pasting it into any browser and copying the URL for control panel that you get redirected to. (I'm working on making this easier!)

Have fun! :)

This is a fun little app! Nice looks and flavortext.

Suggestions: maybe allow for offline play? And optional upload of images to use?

And a bug: sometimes an event that has a clickable action (like lick up pre) will be overwritten by a different event, such as rising pace, and prevents the first event from being clicked on for the rest of the game.

Anyways, thanks for making this and sharing!

@

eventhorizon said:
This is a fun little app! Nice looks and flavortext.

Suggestions: maybe allow for offline play? And optional upload of images to use?

And a bug: sometimes an event that has a clickable action (like lick up pre) will be overwritten by a different event, such as rising pace, and prevents the first event from being clicked on for the rest of the game.

Anyways, thanks for making this and sharing!

Thanks!! I've heard offline play from a few folks, I may be able to bundle this as a desktop app in Electron so you could use it locally, next project I think

Upload photos is on the roadmap!

And thanks for the bug report, I'll get on that

Thanks again for using it!!

There's a cool similar slideshow program called flipflip that I like. It's not as entertaining but it lets you use your own libraries or even just a collection of urls that link to images. I think implementing a similar "custom image url pool" thing would be really neat.

jumping in on this thread a little late--

The support for lovense devices caught me off guard as a cool and novel thing for an app like this to play around with. I'd actually been doing some digging for fun and discovered that there's a library called 'buttplug' that offers some generalized control over vibrators and the like, which might be useful for something like this.

It operates the device locally, so the latency and responsiveness is a bit better, and more importantly (to me, anyway) it works without connecting it to the proprietary app from the manufacturer.

Is there source available for this? Would enjoy taking a crack at integrating it in my spare time.

ailurus said:
@

Thanks!! I've heard offline play from a few folks, I may be able to bundle this as a desktop app in Electron so you could use it locally, next project I think

Upload photos is on the roadmap!

And thanks for the bug report, I'll get on that

Thanks again for using it!!

It would be kinda nice to have a local or self hostable version of it, along with that ability to use locally stored images, and maybe a customizable word list for the subliminal messages.

I'm having some difficulty connecting my Lovense Edge to JOI.how. I assume it must not be compatible and only the Hush is supported, but do you think you could add compatibility for it as well? Other than that, I greatly enjoy your site!

Version 1.4.1 now has MUCH better vibrator support. It works locally over WebBluetooth and thus requires Chrome! (Just this one feature, everything else continues to work in all modern browsers.)

This means support for the Lovense edge (among many many others supported by buttplug.io) is working!

ailurus said:
Version 1.4.1 now has MUCH better vibrator support. It works locally over WebBluetooth and thus requires Chrome! (Just this one feature, everything else continues to work in all modern browsers.)

This means support for the Lovense edge (among many many others supported by buttplug.io) is working!

Any work on an electron app for offline use yet?

supracat said:
Any work on an electron app for offline use yet?

I’m working on it now actually! I’m trying to ship this with the ability to also use your own images, which requires a rewrite of a number of components. If you’d like a desktop build that doesn’t have that enabled yet, feel free to message me on e621!!

rookthebun said:
Is this a thing still? I really like it and would even like to add to it if I can(as a programmer myself)

last web update was score filtering just before christmas.

ailurus said:
I’m working on it now actually! I’m trying to ship this with the ability to also use your own images, which requires a rewrite of a number of components. If you’d like a desktop build that doesn’t have that enabled yet, feel free to message me on e621!!

Any new updates on this push?

Feature Suggestion:
Allow the user to input their API key so they can use searches like votedup:anything.

rookthebun said:
Is this a thing still? I really like it and would even like to add to it if I can(as a programmer myself)

Yep! It's still a thing! Message me if you'd like to be involved! :)

supracat said:
Any new updates on this push?

I have a version packaged in electron though I still need to add the ability to supply local images

notuncommon said:
Feature Suggestion:
Allow the user to input their API key so they can use searches like votedup:anything.

Logged! I'll try to fit this in soon. For now, you can also use fav:yourusername to access your faves with the public api.

ailurus said:
I have a version packaged in electron though I still need to add the ability to supply local images

Could provide magnet or torrent files with a seedbox VPS, have a temporary telegram channel, or maybe upload them to LBRY/Odysee (with the +mature tag, given the nature of the software.)

I think this kind of thing is super fun. One thing that would be really cool is a way around the default blacklist.

quenir said:
I think this kind of thing is super fun. One thing that would be really cool is a way around the default blacklist.

This is what I'm hoping for. Some of my favorites don't show up because they're on the global blacklist. Would be nice to have a way around that.

lonely_moon said:
This is what I'm hoping for. Some of my favorites don't show up because they're on the global blacklist. Would be nice to have a way around that.

This, and the ability to factor in your own blacklist rather than having to manually enter a bunch of extra tags. Feature creep ain't always a bad thing!

Are you guys still working on this or will continue at some point in the future? I apologize if this comes across as nagging, but the radio silence has me wondering if it's been abandoned or if irl has gotten in the way.

eventhorizon said:
Are you guys still working on this or will continue at some point in the future? I apologize if this comes across as nagging, but the radio silence has me wondering if it's been abandoned or if irl has gotten in the way.

I am still alive, been a bit busy with losing and then getting a new job so haven't looked since I left some PR's for OP to merge at their discretion(though I don't think they ever did), I will probably start looking at it again myself here soonish now that my time is starting to free up and my mental health is doing better.

Sorry to necro here, just wondering if there were any updates with regards to having a way around the global blacklist. I see updates on the page itself, so it still seems to be in development, but haven't heard anything about this feature, if it's even possible (I still don't know). Is there a github page for it or something?

lonely_moon said:
Sorry to necro here, just wondering if there were any updates with regards to having a way around the global blacklist. I see updates on the page itself, so it still seems to be in development, but haven't heard anything about this feature, if it's even possible (I still don't know). Is there a github page for it or something?

Yes, they just haven't linked to the repo. https://github.com/PawCorp/joi.how

It's the one way to self-host the app and customize the hypno text.

Updated

I was testing the site on Firefox stable 13.0.01 and noticed a bug. The text on the top right of the slideshow when switching hands reads "Grip changed to left $hand!" I'm not sure if this application still gets updates, but I figured I'd mention that here if it does.

songbird said:
I was testing the site on Firefox stable 13.0.01 and noticed a bug. The text on the top right of the slideshow when switching hands reads "Grip changed to left $hand!" I'm not sure if this application still gets updates, but I figured I'd mention that here if it does.

Firefox's javascript engine is sanitizing the strings in randomGrip.ts, within the stringify function on line 6.

https://github.com/PawCorp/joi.how/blob/f16c9e89fcd4b2766ecf5e73f37f4212f045dc9b/src/features/gameboard/events/event-definitions/tasks/randomGrip.ts

How are you supposed to connect a vibrator? Nothing happens when I click on connect.

I'm on chrome and I have webbluetooth enabled and other sites like xtoys.app can connect just fine.

Is there a list of what devices are compatible somewhere?

shark_leek said:
How are you supposed to connect a vibrator? Nothing happens when I click on connect.

I'm on chrome and I have webbluetooth enabled and other sites like xtoys.app can connect just fine.

Is there a list of what devices are compatible somewhere?

Was running into the same issue too, but it looks like if you pull the GitHub repo and run it locally on your computer it works just fine. Not sure how tech-savvy you might be, but it's a quick fix if you want it. Would love to see the WebBluetooth working in the deployed version again!

zayrethefox said:
Was running into the same issue too, but it looks like if you pull the GitHub repo and run it locally on your computer it works just fine. Not sure how tech-savvy you might be, but it's a quick fix if you want it. Would love to see the WebBluetooth working in the deployed version again!

I studied some programming like 15 years ago and haven't done it since. It has not been a quick fix. :(
I figured out I need node.js so I got that, then installed the create react app (I'm not even sure this is required?).
I just keep getting error after error when I try to run joi.how and trying to edit files and troubleshoot based on what I can find on stackoverflow, but tbh I have no idea what I'm doing.
I don't think this is supposed to be this complicated and I fucked up somewhere or missing something obvious. If you don't mind, please tell me how you got it to work.

shark_leek said:
I studied some programming like 15 years ago and haven't done it since. It has not been a quick fix. :(
I figured out I need node.js so I got that, then installed the create react app (I'm not even sure this is required?).
I just keep getting error after error when I try to run joi.how and trying to edit files and troubleshoot based on what I can find on stackoverflow, but tbh I have no idea what I'm doing.
I don't think this is supposed to be this complicated and I fucked up somewhere or missing something obvious. If you don't mind, please tell me how you got it to work.

Hey, so what I did was open the folder in VS Code and in the terminal, run
npm install
npm start

That got things up and running and should deploy on your PC's default port. I do believe you need to have React installed as well as joi uses it, though I'm not sure about node.js. I'm not super great with web stuff myself so if I've got something mixed up, anyone please feel free to chime in

zayrethefox said:
Hey, so what I did was open the folder in VS Code and in the terminal, run
npm install
npm start

That got things up and running and should deploy on your PC's default port. I do believe you need to have React installed as well as joi uses it, though I'm not sure about node.js. I'm not super great with web stuff myself so if I've got something mixed up, anyone please feel free to chime in

Thanks for responding. I tried it through VS code, but it just led me to the same problem.

When I try to run it I get this error in the console:
'PORT' is not recognized as an internal or external command,
operable program or batch file.

According to a stackoverflow thread, I can fix this by modifying a line in the package.json ("start": "PORT=3006 react-scripts start" replaced with "start": "react-scripts start -p 3006").
Afterwards it opens in the browser, but gives several errors like this:
./src/App.js
Line 6:5: 'React' must be in scope when using JSX react/react-in-jsx-scope

Which can be fixed by adding a line to the top of app.js: import React from 'react';
But now I get this:
Module not found: Can't resolve 'react-dom/client'

And it goes on and on like this. That's why I'm pretty sure I fucked up installing or setting up something, but I just have no idea what.

Since you have a functioning install, could you please share your folder on MEGA or something? Maybe that would run, or at least help me figure out what I'm doing wrong.

Hi everyone,

because I also like JOI.how alot, I decided to write some updates for it.
Hopefully they will soon be merged and deployed to the joi.how website.
You can track progress on that here: merge request

In the meantime, I have deployed a test version of this on joi.clynamic.net.

Noteable changes are support for logins, meaning your own blacklist + favorites (thanks to TachisAlopex), and fixed vibrator integration.
This should also run locally again because it includes alot of updates for packages etc.

The source code for this can be found in the merge request above.

Best regards.

Updated

binaryfloof said:
Hi everyone,

because I also like JOI.how alot, I decided to write some updates for it.
Hopefully they will soon be merged and deployed to the joi.how website.
You can track progress on that here: merge request

In the meantime, I have deployed a test version of this on joi.clynamic.net.

Noteable changes are support for logins, meaning your own blacklist + favorites (thanks to TachisAlopex), and fixed vibrator integration.
This should also run locally again because it includes alot of updates for packages etc.

The source code for this can be found in the merge request above.

Best regards.

q
I just randomly decided to pop into this thread and see if there were any updates. What good timing! Thank you!

binaryfloof said:
Hi everyone,

because I also like JOI.how alot, I decided to write some updates for it.
Hopefully they will soon be merged and deployed to the joi.how website.
You can track progress on that here: merge request

In the meantime, I have deployed a test version of this on joi.clynamic.net.

Noteable changes are support for logins, meaning your own blacklist + favorites (thanks to TachisAlopex), and fixed vibrator integration.
This should also run locally again because it includes alot of updates for packages etc.

The source code for this can be found in the merge request above.

Best regards.

Dude that's awesome! I tried the test version and it works, though I noticed that at speeds of 3/s and higher the vibration is constant instead of being on beat. Thanks a lot for making updates!

Really great and enjoyable. If I get some time maybe I'll work on some PRs but I'd love to see:
A way to offset the images so they're not directly center screen
"Shuffle" mode where you see every image at least once before it repeats.

binaryfloof said:
Hi everyone,

because I also like JOI.how alot, I decided to write some updates for it.
Hopefully they will soon be merged and deployed to the joi.how website.
You can track progress on that here: merge request

In the meantime, I have deployed a test version of this on joi.clynamic.net.

Noteable changes are support for logins, meaning your own blacklist + favorites (thanks to TachisAlopex), and fixed vibrator integration.
This should also run locally again because it includes alot of updates for packages etc.

The source code for this can be found in the merge request above.

Best regards.

Oh my god, I've been waiting for so long for fixed toy integration, thank you!

Had a lot of fun with my Gush, and I've noticed some things when using Thump option:

1. Sometimes the Pause event does not stop the vibrations, I think that Double Pace overlays it
2. Vibrations stop completely at the Cum event

Other than that I cannot thank you enough for this, keep up the good work! And I'd also love to see a "Shuffle" Mode as the person above me has mentioned ;)

Updated

Is it just me, or do the sessions never end? I set the duration to 10 and set up an external timer and the session kept going even after the timer finished :/

  • 1