Twitchy the Robot

Play with Twitchy View the Source on GitHub

Twitchy the Robot is a two part project consisting of a live stream, and a GitHub code project. Viewers of the live stream are able to control the robot (Twitchy) by typing commands into chat.

The Live Stream

Twitch the Robot is a live stream that gives viewers a unique ability to interact with what they are seeing. Twitchy is a fun robot, and I provide twitchy with an interesting environment for viewers to interact with. As the robot is a simple grabber, it leaves me with a broad number of options to provide my viewers with an interesting experience. And it works, the second day I received 71 followers which is great for a new streamer on Twitch.

The Robotic Arm

Twitchy’s arm is a OWI Robotic Arm, with a USB Interface Kit. Together these components can be purchased for about $100. The arm has no feedback mechanism, however the gearboxes contain torque limiters to prevent gear damage. When the torque limiters activate, they sound an audible click. A concern of mine with providing remote access to the robot arm to strangers on the internet, was the damage they could do to the motors and gearboxes if they chose to drive continuously in one direction. Even with the limiter, they could wear out the mechanism. To limit wear, I attached a microphone to the arm and set a trigger in the python script that activates when the Root-Mean-Square of the microphone data hits a set threshold.

The USB Interface Kit does not support Linux out of the box, however maxinbjohn on GitHub made a Linux driver with some sample code which made interfacing with the arm super easy. Starting with his sample code, I expanded it to include safety limits. There is an audio listener that activates the above mentioned trigger, it runs on a separate thread. A second thread watches active motors, and disables them when they have run their allotted time.

Twitch Connectivity

Connecting the arm to Twitch was the easy part, thanks to work done by LynnAU on GitHub. They created a basic twitch bot that connects to’s IRC server with Socks and listens for commands, meanwhile keeping with twitch’s PING requirements. All I needed to do was to expand the code to trigger arm functions when commands come through the channel.


Play with Twitchy

I keep twitchy online when I’m home, you can come in and play with him. If he’s not online, watch past broadcasts and swing by later.

Play with Twitchy

Filed under: Projects
Tags: , , ,

Removing or Modifying svn client passwords

For how common this task is, it’s incredibly hard to find on Google. You’ll need to remember this for anytime you want to change your user account, password, or just delete your account from your subversion client. This works in Netbeans, RabbitVCS, and a majority of other subversion clients that just connect with the svn package.

  1. Open a terminal (This can be done in a file manager’s search tool, but I’ll show you how in a terminal so you get a better idea of how it works)
  2. enter the command
    grep -r "<HOSTNAME>" ~/.subversion/auth/

    (Replace <HOSTNAME> with the SVN’s hostname, so for instance would be Grep searches inside files for whatever you put in the ” “. The -r makes it recursive, so it will look through all the files in all folders deeper than where it was directed to at the end of the line.

  3. You will get a line that looks something like this
    /home/vincent/.subversion/auth/svn.simple/888c928072e9643a13b38ea43532896d:<> My Projects

    You want the path before the “:”

  4. Now just enter
    rm /home/vincent/.subversion/auth/svn.simple/888c928072e9643a13b38ea43532896d

    to remove the file, and have subversion forget your account credentials.

  5. Next time you run your subversion, you will be asked for your username and password again.

Filed under: How To,Linux
Tags: , , , ,

Writing a script to toggle a pointing device in linux

I recently purchased a new laptop, and installed Ubuntu Linux. There’s one major problem with the laptop; the trackpad is too sensitive and resting your palm will click the mouse. The computer includes a shortuct (FN + F9) to disable the trackpad, but natrally from linux this doesn’t work.

Here’s how you can solve this:

  1. You need to get the name of the pointing device that you wish to disable, so open a terminal and type “xinput list”. (Note: if you have a second pointing device plugged in, unplug it before running this command to prevent confusion.)
    Example: The trackpad that I wish to disable is called “PS/2 Logitech Wheel Mouse”
  2. Create a new empty document someplace where you will remember the location (I recommend placing this in it’s own folder), and both you and whoever else that may use the script has write access to the containing directory. Name the document “”. (I like to put helpful scripts within a “scripts” folder in my home directory, but if you have a multi-user machine then you could put it in a shared drive or directory.)
  3. Open the new document with a text editor, and paste the following script.
    if [ -e $mouse ]; then
    xinput set-int-prop "PS/2 Logitech Wheel Mouse" "Device Enabled" 8 1
    rm /tmp/mymouse
    xinput set-int-prop "PS/2 Logitech Wheel Mouse" "Device Enabled" 8 0
    echo 1 > /tmp/mymouse
  4. Change where it says “PS/2 Logitech Wheel Mouse”, to the name of the pointing device that you found in step 1. Then save.
  5. Now to disable the pointing device, you just need to run the script. The script will check the temp directory for a file called mymouse, if the file exists then it will enable the mouse and delete the file, if the file doesn’t exist then it will disable the mouse and create the file.
    • If you’re using Ubuntu, you can create a keyboard shortcut to run this script by going to
      System > Preferences > Keyboard Shortcuts
      Select “Add”, write a descriptive name for the shortcut, place the location of the script in the command, hit ok, click the right column next to the new shortcut and press the keys desired for your new shortcut.

EDIT: Moved the location of the mouse disabled file into the temp directory (/tmp/mymouse), so it goes away on reboot.