GithubHelp home page GithubHelp logo

ronsijm / buttfish Goto Github PK

View Code? Open in Web Editor NEW
1.4K 1.4K 29.0 25.21 MB

Effortlessly transmitting Morse Code of chess moves to your butthole 💝

C# 100.00%
buttfish buttplug chess csharp meme morse-code

buttfish's Introduction

Ron Sijm

Software Architect && Team Lead++; // Appical

YOU CAN ALSO FIND ME AT THESE PLACES

  • Linkedin - Public linkedin profile
  • Stack Overflow - Not very active anymore
  • Lemmy - My profile on Lemmy, the open source decentralized activitypub based reddit alternative

DONATE

buttfish's People

Contributors

ronsijm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

buttfish's Issues

fallback device mechanism

Do we need fallback mechanism in case the main device e.g. the plug is malfunction on the tournament?

Only evil can write such program to get more popularity ... - no ethic

I do not know if Niemann cheat or not so I will not do sin of blaming other. For me it is clear that there is not evidence.

Whatever what some players is doing is wrong ... whatever coding such program to get fame and propagate such evil ideas is much worse - it is like Hitler - he do not kill anybody but his people order to kill millions - he enabled killing of people.

Same wrong is with your program you enable wrong things without reason - no ethic

Other Game Engines

Given some other things going on in high stakes game play worlds, do we need to extend ButtFish to other types of game engines?

Suboptimal Name

Chocolate starfish would be more apt, or starfish if you wanted to stick to two syllables.

List compatible devices

Would be good to have a list of approved / compatible devices and perhaps a user testimonial section for those that have tried them.

One way communication might not be enough!

The dilemma

Some people mostly play chess in bars and pubs. In these scenarios they wouldn't always have the complete setup with cameras for image recognition or a helper that can provide ButtFish(TM) with the inputs of their opponent. Therefore this project urgently needs a way for them to communicate with the Raspberry PI with a battery-pack in a inconspicuous backpack what moves are being made.

My proposal

A cockring-twitch-detector that encodes my ..erm.. someone's messages back to ButtFish©. Of course to not discriminate this also would include a …cave-contraction-apparatus.

Extra features

Sometimes one can get disheartened in the quest for dominance in a particular hard game of chess. One easy fix to prevent this from happening would be that in the downtime while your opponent are thinking ButtFish® should mimic the Rocky Theme Song.

Simplify pulses

Instead of using morse code which can require a lot of different pulses to transmit a position, there can be a way more simple pulse to move conversion. (Using row and column terminology for a broad audience)

My suggestion is that there be one pulse to represent adding one row or column to the position and a long vibration for 4 rows/columns.

For example, moving a piece from E5 to F4 shown in the readme can be accomplished by this sequence:
— . (e) (4) — . . (f) — . (5)

This is because — . represents the E column because it's a value of 5, and E is the 5th column.
represents a 4, meaning row 4 in that column.
— . . is a 6, which then matches to the F column, and so on.

Using — — for H and 8 respectively, the maximum number of pulses required to represent a move would be g6g7 or similar, which is represented by this: — . . . (g) — . . (6) — . . . (g) — . . . (7)

This effectively reduces the pulses required from 15 as it is now for e5f4 to only 8, while in the worst case 15 pulses. There is potential to simplify further, but this proposed system is easy for anyone to interpret on the fly without knowing morse code.

Hikaru Optimization: Option to only receive end position and not start position

Hikaru made an implied feature request:

https://youtu.be/ifJnWVSoyAY?t=431

"um although actually you know if it's if it's if it's if it's a serious chess player you'd only have to do the one vibration for the square itself because like a strong player would know that like if if you can only put a knight on A4, or Pawn on A4 they would they would obviously be able to intuitively know which which um piece belongs there." ~ Hikaru Nakamura Chess meme king himself...

(Not making fun, just literally 100% just copied the YouTube transcribed text, though found it very amusing)
image

So Hikaru says that to optimize this, I don't have to transmit the entire Stockfish response - only the end position. Should be easy enough to implement...

Improper use of Venn diagram makes it unclear whether author is "the chosen one"

In the Venn diagram in readme.md, it appears that "ME" is a symbol representing the entire "People who can program" category (in the same way the Knight and butt icons are representative of people who can play chess, and people who are into buttstuff respectively). The overlap of this category with the other two categories implies that the author is also into butstuff and can play chess, thereby making them the chosen one.

Venn Diagram

However this is contradictory with the text that follows, saying that the chosen one is as yet to found.

A Venn diagram has circles representing groups within a population and describes how individuals in the population can be in multiple groups. "ME" is an individual, whereas "people who can program" is a group of people.

If the author intended to suggest that they can program, but are not into buttstuff, nor can they play chess, then "ME" needs to be moved from being a title of the category, to a data point within the category. eg:

image

How to make vibrations without needing chess moves?

I set up this project, and I've really been enjoying personally testing it. I was thinking it could be much better if the vibrations weren't linked to chess moves at all, but rather give an option to allow it to furiously vibrate nonstop.

The translation from chinese to english in readme image may get better

Hi,

It's this one, there might be some joke that only native speakers could get.
img

The word "炼肛大师" obviously comes from the "钢之炼金术师", i.e. "Fullmetal Alchemist" in english
So I guess it might be funnier to translate to "FullAnal Alchemist" instead of "Anal Master"

XD

Add support for more modes and information encoding.

Beginner support
I'm not very good at chess, so I would like the letter code for the chess piece that should be moved in addition to the start and end position.
QD1 => RD5 (Queen on D1 takes Rook on D5)

More modes
I play a lot of blitz chess which requires transmitting the information with shorter delays between signals.
a: . - => a: .-
Note: This mode also saves battery life which is good for the environment.

Different encoding
A lot of users don't understand morse code so I would like support for a different encoding, for example each signal representing a count towards a letter's position in the alphabet:

Morse       Count     Blitz
a: . -      a: -      a: -
b: . -      b: - -    b: --
c: - . - .  c: - - -  c: ---
... and so on

To please the grammar gods, it might be wise to include upper and lowercase support too. Capital letters in the string can be represented with a . before the character.

q = - - - - - - - - - - - - - - - - - becomes Q = .----------------- (for blitz)
Note: This is only usable with the count configuration.

Digits can be represented with dot signals:
QD1 => QD5 on blitz becomes .----------------- .---- . (double timeout) .----------------- .---- .....

Accessibility
It could also be useful to provide full context for people with learning disabilities, as letter codes can become confusing. I would suggest adding support for transmitting the full name of the piece, and the phonetic name of the square. At that point you might as well add "on" and "to".
{piece} on {phoneticName}{digit} to {piece} on {phoneticName}{digit}

Internationalization
We all know the Brits don't like following commands unless politely asked to, thinking it was their idea, or that it comes with some sort of banter. Adding support for making the commands more social would make this product much more attractive for them.

"Moving the {piece1} on {phoneticName1}{digit1} to {piece2} on {phoneticName2}{digit2} seems like a good idea what do you think mate"
"Would you please be so kind as to move {piece1} on {phoneticName1}{digit1} to {piece2} on {phoneticName2}{digit2}"
"We will have a proper good laugh if you now take the {piece2} on {phoneticName2}{digit2} using your {piece1} on {phoneticName1}{digit1} and then we will have tea and biscuits after"

I've created a simple JSFiddle to illustrate the running of this code.
https://jsfiddle.net/80z965nt/1/

I have a lot of British chess-playing beginner-level friends with learning disabilities so please implement this as quickly as possible.

Create Custom Board Visual

Given the input: "rnb1kbnr/pppp1ppp/8/4p1q1/5P2/4PQ2/PPPP2PP/RNB1KBNR b KQkq - 2 3"

StockFish has the option to generate a visual chess board though the "d" command:

 +---+---+---+---+---+---+---+---+
 | r | n | b |   | k | b | n | r | 8
 +---+---+---+---+---+---+---+---+
 | p | p | p | p |   | p | p | p | 7
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 6
 +---+---+---+---+---+---+---+---+
 |   |   |   |   | p |   | q |   | 5
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   | P |   |   | 4
 +---+---+---+---+---+---+---+---+
 |   |   |   |   | P | Q |   |   | 3
 +---+---+---+---+---+---+---+---+
 | P | P | P | P |   |   | P | P | 2
 +---+---+---+---+---+---+---+---+
 | R | N | B |   | K | B | N | R | 1
 +---+---+---+---+---+---+---+---+

Apparently this is not UCI standard - so Leela Chess Zero (Lc0) engine does not support this.

To fix this I'm busy implementing a custom FEN to ASCII component, so every engine can show an ascii of the chessboard

retry mechanism

Do we need retry mechanism in case the recipient is not understand the code?

[Feature Update]: Add RGB for Yeelight Integration

Idea: when chess engine proposes a move - lets say Queen to E5 - every pawn piece can have their own color code. Blinking the code for E5 in blue when the queen should be moved, blinking in red when a pawn should be moved etc etc.

(This feature depends on #30 to be completed first. - because in that isue a FEN to piece position decoder is build, so I can easily use the start position to see which piece is in the start position to determine what color.)

Not sure if piece determination can de used in buttplug.io devices. Could possibly use a different vibration strength or something. If anyone have any bright ideas, feel free to leave suggestions

Looking for: IRL Testers

I am not sure how to do testing on this product. If there are unit tests, how do you mock a butt? If there are end to end tests, what do you use for backend?

Add a license

There's no license currently attached to the code. If library licenses allow, I'd recommend something with anti-tivoization measures like AGPL or GPLv3 to keep buttholes open and free

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.