Author here! Pleasant surprise to find my project at the top of HN this morning with such positive feedback :) I'm happy to answer any questions or hear suggestions for future tweaks. Planning to make this into a customizable full-body game controller as well.
Can I just say how much I liked the small details here? Like your choice of matching sweatbands, your jazz hands on the last symbol, your choice of pose for backspace, and the commit message, "Updated readme for pedantry". In your honor, I am performing the chef's-kiss gesture. (Which I hope you will include as you add emoji to your input device.)
I hope the video was dramatized and that you didn't actually hurt yourself!
Rather than type every letter, a more efficient system is to represent sounds with keys. This is how stenography works. Each stoke of the keys is mapped to a series of characters; a letter, a grouping (such as 'sh' or 'ing'), or a complete phrase. Using such a system would allow one motion, for example for 'b', to map to a whole word, such as 'be'. Something as simple as that would reduce your risk of injury by something like 50%.
A major difference between stenography and typing is that steno is chorded: the signal is sent when the keys are released, not when they are depressed. I'm not sure how that would work with the full body.
Check out the OpenStenoProject for more about steno. Their community would probably enjoy discussing a full body steno theory (if they haven't already) .
Take care and thanks for all the effort that went into producing the video! It was a lot of fun :)
Completely unrelated, but your comment about stenography reminded me how our French president announced the COVID lockdown. It was a speech full of key information (some I could not hear because when he announced that the schools would close children erupted in yells) but that was not the best part.
The best part was that the speech was also signed for the deaf (that part was normal) and subtitled by a ..., well, ... stenography trainee.
He or she had all wrong, could not keep the speed, was mixing words and skipping whole parts. At some point they seem to have said to themselves "oh fuck it" and were typing more or less random words.
The whole country was with them, hoping that they will go on typing until the end (which they did). That was a memorable event and people actually learned about stenography and the fact that they apparently use a special keyboard in the form of a butterfly.
Interesting, I wonder if you could make a BodyChord or FaceChord setup using steno... Can you actually write code using a steno keyboard - as in, full access to all the usual symbols and modifiers - or would it just be for letters and basic punctuation?
Yes! Here is a really great talk on the state of doing so, with a fantastic realtime demo near the end. Mirabai live-codes using her Plover setup and narrates her thought process as she types out each command.
Amazing! The spoken demo reminds me of Victor Borge's Phonetic Punctuation. This would be such a great way to spend so much time getting slightly more efficient...
I saw her at a keyboard meetup in NYC. She blew my mind with her vim setup: chords representing commands meant that the keystrokes didn't exactly matter: you could have the chord represent an arbitrarily annoying set of keystrokes and have a correspondingly complicated vimrc to handle them. Very cool!!
Please let me know if you want to join forces! You can find my contact information at: https://github.com/mristin.
I figured that I don't mind my kids playing computer games as long as they move. The first stage for me is to find a workable approach to DOS games. In particular, I thought about adapting ski-leu to race games such as Outrun & ilks.
>> I figured that I don't mind my kids playing computer games as long as they move.
These could also be of interest for inspiration as well - basic idea this Youtuber is doing is to use console gamer joystick re-mapper hardware to convert joycon acceleration readings to button presses/button combos.
Can you Lose weight by playing Breath of the Wild? - Ringfit Controller Mod Explained Version
- Today we talk about the Ringfit Adventure controller mod for Zelda: Breath of the Wild. With this mod you can Exercise and play BotW at the same time.
I made a Ring Fit Adventure Mod for Mario Kart - Controller Bending
- Today on Controller Bending we mod the Ring fit controller to play Mario Kart 8 Deluxe with. With this Ring-con mod you have to run to drive. Literally. Squeezing the ring-con activates items!
I'd imagine a lot of similar mods could be done via computer vision instead of using joycon accel readings.
I think the key would be to show up to a gaming console as a PS4/XBox controller instead of just a keyboard. I think there are Python libraries to do this [1] or just stick to Steam games that just need WASD controls. This allows you to tap into already huge library of high quality games and just focus on the OpenCV movement-> joystick button remapping part.
Dance mat could be even easier to integrate as it acts just as a normal joystick. The problem, though, is that many games expect reaction times achievable with a keyboard & mouse, but leg movements are a bit slower.
The problem with the dance mat is that you can not use it in a school class as you need extra equipment. It worked well in a dojo for my judo classes, though.
If you want to run the code manually, install it in the virtual environment. Then you can simply run commands `ski-leu` or `pop-that-balloon`.
Btw., I use pop-that-balloon for basketball dribbling training, and a friend uses it for boxing. Have fun & please let me know if you use it for yet another sport :).
I’ll keep this mind the next time I’m stuck on a burning rooftop and trying to communicate with the rescue chopper. I only hope the pilot understands Semaphore!
As a remote software developer, if this became a product that could be used daily I'd probably buy it. It would be the key link between programming and body exercise.
Have you considered adding an autocomplete? Maybe add in three most likely completions to your word and have three separate signals to select each respectively? Maybe that's cheating, but that could up your words per minute drastically!
Imagine teaching some ML your personal body movements, and then you could have it transcribe text into Semaphore-output video (or live rendering)... At least well enough that Semaphore-input could read it?
I started building a super simplified version of something like this to help me practice flag semaphore, but ended up learning the alphabet a lot faster than finishing that script :o)
Yes, hoping to do something along these lines for a future update! I'm not sure if it would be individual notes/chords per motion, or something based on samples and a looper. If anyone knows of related projects, I'd love to get some ideas for inspiration.
Thanks! Yeah, I definitely chose the easy way over the 'right' way for this version with just setting simple thresholds.
I'm not sure how well it will work yet, but for a game controller I might try to have users record their own custom motions - as in, "show me a few of your chosen [high punch] motions to match against in-game."
It only took me a couple days to learn all the signals and work out the modifiers, but about ten days of ~an hour a day after that of speeding things up. Maybe I'll make my own instructional 80s workout video for it...
I think you could turn this into a game - Dance Hero or something. With a ridiculous storyline where you have to send signals with the power of dance to save the world
Sure, here’s a possible game plan for the idea you proposed:
Gameplay:
The player takes on the role of a survivor on a post-apocalyptic Earth, who has discovered the last remaining Fatline capacitator capable of sending signals to alien life forms. However, the capacitator can only be operated through dance inputs.
The player must navigate through various levels, avoiding obstacles and enemies, while performing dance moves to activate the capacitator and send the rescue signal.
Strategy:
The game could have different difficulty levels, with more complex dance moves required for higher levels.
The player could earn points for successfully executing dance moves, and lose points for mistakes or taking damage from enemies.
The player could also collect power-ups along the way, which could improve their dance moves or provide temporary invincibility.
Plan:
1. Develop a basic game engine with the ability to detect and interpret dance inputs from the full body keyboard.
2. Create a post-apocalyptic world with different levels and obstacles/enemies.
3. Design a variety of dance moves that the player must execute to activate the capacitator.
4. Implement a scoring system that rewards successful dance moves and penalizes mistakes or damage taken.
5. Add power-ups and other collectibles to the game.
6. Test and refine the game mechanics to ensure a challenging and enjoyable gameplay experience.
Mechanics
The game mechanics for the game could include:
1. Movement: The player would use the full body keyboard to control the character’s movement through the game world. For example, the player could move forward by performing a specific dance move, or jump by executing another dance move.
2. Dance inputs: The player would need to perform various dance moves to activate the Fatline capacitator and send the rescue signal. The dance moves could become more complex as the game progresses, requiring the player to execute longer and more intricate sequences.
3. Obstacles and enemies: The game would feature obstacles such as pits, spikes, and other hazards that the player would need to avoid. Enemies such as robots or mutated creatures could also be present, which the player would need to defeat or evade.
4. Power-ups: The player could collect power-ups throughout the game, which would provide temporary boosts to their dance moves or other abilities. For example, a power-up could make the player temporarily invincible to enemy attacks.
5. Scoring: The game would keep track of the player’s score, which would increase as they successfully execute dance moves and defeat enemies. The score could be used to unlock new levels or other rewards.
Overall, the game mechanics would revolve around using the full body keyboard to control the character’s movement and perform dance inputs, while avoiding obstacles and enemies and collecting power-ups to increase the player’s chances of success.
The way that the "hello world" in the youtube video is synced with music made me think that it would be awesome to make music this way, to translate the body movements to sound. A kind of reverse dancing — rather then dancing to the music, the music would be created to your dance.
I rewatched that part of the video and don't see where he made fun of him. Are you referring to when he mentions that Claude Chappe was "big-brained" and zooms in on his head? If so, that sounds like a compliment to me.
Every now and again I try and explain to non-coders why a software engineer might build something "just to see if I can" - and that a lot of the software they use probably started out as such. The video captures that so well!
I was lamenting the use of "semaphore" but wikipedia supports them:
> Semaphore (lit. 'apparatus for signalling'; from Ancient Greek σῆμα (sêma) 'mark, sign, token', and Greek -φόρος (-phóros) 'bearer, carrier')[1] is the use of an apparatus to create a visual signal transmitted over distance.
> [A semaphore] is a variable or abstract data type used to control access to a common resource by multiple threads and avoid critical section problems in a concurrent system.
Knowing about programming semaphores but not visual semaphores seems quite bizarre to me. A bit like thinking flag or register or stack were only computer terms.
Depends on when you want to define "nothing to do with disk" as. M.2 was introduced in 2013 which would make them 9 years old by now, but if we look at Samsung's 2006 PATA SSD (with 32GiB!), then they'd be 17 and could well be on here.
I use a standard disk icon to represent "saving" in a popular web app I run. I very often see users referring to it with "click the square thing to save".
I only knew about non-computer semaphores from the Swallows and Amazons books (which are from the 1930s and 1940s). If my mom hadn't read those books to me as a child, I don't know that I'd have come across the concept.
"Token ring" is something I learned in networking, and the Wikipedia article doesn't mention railroads at all. I assume that's where the term comes from, but I only heard about railway signalling tokens decades later. (I think they may have appeared in the Thomas the Tank Engine stories on Shining Time Station, but I was quite young at the time.)
I am a native English speaker and never heard the word "semaphore" until taking CS classes in college. I cannot think of a common use for the term, unlike flag (see them all the time), register (do that with cars and schools) or stack (lots of those in my kitchen).
I'm struggling to think of any computer terms that aren't repurposed 'normal' words, initialisms, acronyms, or portmanteaus. Even the words 'computer', 'program' and 'code' are repurposed.
Ah but it says, "The term originated as a whimsical irregular form of the verb think." but without citation. Hmm, I dimly recall some hacker wag saying something like, "it's the sound of a continuation hitting the stack"...
And the programming semaphore comes from the semaphore used as train signal to ensure that two trains are not using the same track segment simultaneously.
Smoke signals are literally the oldest known semaphore, and fire is recorded to have been used to telegraph signals over 700km per hour in the Byzantine Empire.
In this case, the term semaphore is equivalent to optical telegraph.
The separation isn't completely clear, but take a semaphore like a basic tool that produces signals with a strong predefined signification, like a red light in a highway traffic light. The optical telegraph have a basic signification on their symbols, like letters or numbers, but a wide range of meanings, like the message transmission.
same here with my initial first take on the name. I was doing a internet search for something recently and realized this spirit of taking an existing word and deliberately overloading it in a different context rather than coining a new term with a distinct phonemes is slowly mucking up our language to disambiguate by keywords alone. It's hard work to invent new words and I get it can slow the adoption or recognition of something if the name hasn't been settled yet and it's tempting to just skip over that whole process by leapfrogging out of the mental wrestling by coopting an existing word and append a new definition to it.
Earlier in life I used to lament the lack of uniqueness to words and the existence of synonyms but later began appreciate the overlap because having the ability to talk about something with a variety of phonemes seemed to help create some conceptual distance in a conversation that was otherwise obscured by close sounding words.
But this almost lazy reuse of existing words, I'm still not sure how I feel about it now that I'm aware of its costs.
It is still in the books as one of the optional activities you can do. If you do it depends on the leaders of the pack. I've seen it in my kids books, but we never did that page.
This is straight up awesome and must watch video just for the lolz.
But there is a thread to pull on here in terms of tangible user interfaces and the replacement of keyboards as a traditional input system. Meta's CTRL-Labs (ex Myo Armband) are working on EMG where just signaling to your muscles can trigger keyboard strokes and the bandwidth is faster than fingers or so they say. There are several other R&D efforts in that direction from BCIs to free space gesture detection through different flavors of computer vision and sensor fusion. Mr Everything Is Hacked is doing it here just for the sheer joy of the journey but there are serious reasons to play around with qwerty alternatives.
Or augmentation of keyboards: wand/stylus; 3D finger tracking; multitouch tablet. Extending rather than dumpstering existing refined comfortable power. My laptop used to have three extra fold-out cameras for TFA-like mediapipe games. Though tech resets are an opportunity to escape trap deadends, to "do better this time" - that thinkpad keyboard was a crippled and crippling 2-key rollover. And sensor fusion with diverse latencies (keypress vs pose-tracked video) is nontrivial - complex event processing with backtrackable app state. LLMs with UI/HID "languages" will be such fun!
You could get a slight speedup by matching letter frequency with easiest/fastest semaphore, similar as to morse code and dvorak typing do it. You loose compatibility with the rest of the world though, but if you are only using it for personal typing it's not a problem.
You could also do a braille mapping instead of using semaphor so braille readers can get a workout.
I am curious to know how far you take this in terms of it becoming second nature. As in, maybe after days and weeks of practice, you can type stuff effortlessly ?
It's always going to be plenty of physical effort! In terms of the mental overhead: there are some letters/motions like R, F, D that just feel second-nature already from lots of practice and more 'obvious' positions, but I still have to think about most of them. A few letters still trip me up, like remembering M versus S (mirror images). I'd love to find a seasoned signalman to get their take.
If you haven't done so already, see if you can connect with someone on the music side, particularly someone used to working with programmable sound buttons. The combination of your setup plus programmed sound macros could result in something fascinating.
I've got some musical + basic audio background and would love to turn this into a musical instrument or sample generator, just haven't worked out the best way to translate motion to sound yet. Any sound engineers or DJs who want to collaborate, reach out!
I had an idea for putting a split keyboard on the cummerbund of a reasonably standard body armor vest, right to each side of the front plate. The display could either be a vest mounted flip out phone (very simple) or it could be displayed on the helmet mounted IVAS system or injected into the front of an image amplification tube. I doubt many people would use it though, due to the learning curve.
Cool idea. I did something similar- a whiteboard with various magnetic icons that were original SVGs. I trained an object detector to recognize the different icons and extract that into a data structure depending on the icon orientation and relative positioning. I wanted to patent that as a brand new way of programming- visual programming with real objects. Never went anywhere with it.
I don't have anything constructive to add except, well done! Total commitment to the bit, investment far in excess of anything reasonable, great execution, full of whimsy, and it's grounded in ancient tech. Hilarious and also deeply impressive, and you pulled it off with a young kid in the house.
I couldn't figure out why he was wearing all the French gear, the author isn't french...! I presume it's a nod to the Frenchman, Claude Chappe, who invented Flag semaphore, the system he build it with. @fheisler, if you happened to see this, please let me know if I'm right! :)
In the gif on your github, all the "workout" gear colours are blue white and red, the colours of the French flag. If it was a happenstance, maybe you can just say it was on purpose, so...er.. I don't need to tell my therapist I'm reading too much into everything again?
I wonder if there are any good keyboards that are part of trousers, but that are also hidden, you know not immediately obvious that you've got a keyboard on your trousers.
Then you could have a computer in the pocket or a bag and a HUD! That could be very cool!
You can integrate 30% or smaller wireless keyboard (with Elite-C) in your trousers IMHO. This would address "good" part (think something like this https://www.tzcl.me/blog/rae-dux but without PCB and wired using wires). At least I use adux keyboard of similar size daily. Or you can go even smaller with something like this https://artsey.io/ but I am not sure if this could be considered good. Next part would be concealing it - kailh low profile are too high IMHO for pants. There are switches that are even lower but most probably this might not work. I guess captive touch sensors might be solution but I am not sure if they would work well as keyboard. I guess some art would help concealing as well.
Still I don't feel this would be really comfortable to type on.
I had a coworker write a little app to vibrate with Morse code at incoming messages, and turn the entire screen into a single button that he could tap out replies.
This is so cool.
Any idea of the state of the art to do this with hand gestures?
I wanted to do something like this but in the style of the Naruto seals used to perform ninjutsu.
Completely impractical and completely wonderful fun. Thank you for your work, OP! I love seeing projects full of joy, mischief, and wonder for the power of computing.