Stuff I want to remember

Timing belt info

Interesting idea for geared robot wheels

  • here; with proper arrangement, could be an easy way to handle non-neutrally-timed drive motors (mount one pinion to the "front" of the wheel gear and the other to the "rear" of the other wheel's gear?)

Calculators for various robot combat shtuff

3D Printing / CNC Machining / Mold-making

Needle Roller Bearings

  • These bearings (at least the 3/8 bore one I'm using) will slip-fit over the shaft.  They are not press-fit onto a shaft like a ball bearing. (I put this here because nowhere on the web could I find an answer to this question!)

Robot Hints and Ideas

Windows 7 File Permissions/Ownership Issues

A re-install of Windows 7 can make file permissions go all wonky; apparently it has difficulty matching an old account to a "new" account (created on re-install) with the same name.  Even Administrators won't have the direct power to delete/move/etc certain files and directories.  Two things to try:
  1. In the Security tab of the directory (or file) properties, go to the Advanced properties, Permissions tab.  Select your account or the Administrators group (presumably your account is part of the latter) and Change Permissions.  Make sure you select the checkbox "Include inheritable permissions from this object's parent."
  2. Take ownership of the file or directory.  Make sure you apply the ownership to all subfolders and files.
You may need to do step 2 before step 1.

Compaq Armada 1700 laptop

bind9, Ubuntu 12.0.4

The stub named.conf.options file now includes the line dnssec-validation auto.  Now, I'm not the world's foremost authority on dnssec, but I know commenting out that line lets bind9, running on a VMware Workstation VM, forward to VMware Workstation's provided DNS server (usually 192.168.x.2, where x is whatever subnet was assigned to VMnet8).


To allow any sudo'd command to be run without entering a password, do the following:

  1. sudo visudo (edits the /etc/sudoers file)
  2. add to the bottom of the file <user id> ALL=(ALL) NOPASSWD: ALL
  3. save and exit
Some people will say this is extremely dangerous, and it is.  I only do it for Linux virtual machines used as educational tools (not production boxes, machines with sensitive info, etc.).  In particular, it aids in grading student work.

HTC USB Connectors

  • My HTC REZOUND smartphone has what appears to be a propriety USB connector on it, probably to trick people into buying HTC-branded chargers and cables.  It turns out, however, that the jack on the REZOUND (and, presumably, other HTC phones) can accept a standard micro-USB plug (that's the flattest of the USB standard plugs).


  • I like to configure Notepad++ so that *.ino (Arduino 1.0-and-later) source files use C++ formatting and *.pde (Processing) source files use Java formatting.  To do this, go to Settings->Style Configurator... and in the dialog, select the language (C++ or Java) you want to configure and at the bottom in the "User ext. :" box, enter the appropriate extension (ino or pde) without the dot and save.
  • This explains how to change the default editor for TortoiseHg to Notepad++.  Handy when you want to view a file from an earlier revision (TortoiseHg defaults to using regular Notepad on Windows, but Notepad can't handle UNIX-style text files properly).




  • Error: "Windows route add command failed: returned error code 1"
    • Most likely you are using Windows Vista or Windows 7 (or later) and did not run OpenVPN as Administrator.  Change the shortcut's properties to Run As Administrator and you should be ready to go.
    • An alternate problem, assuming the above didn't work, is that the Windows command ROUTE.EXE is in a place where OpenVPN doesn't expect it.  Supposedly adding  win-sys 'env' to your config file should work.
  • OpenVPN periodically asks for your username and password to remain connected:
    • In your config file (*.opvn) remove or comment out the auth-nocache line
    • Be aware this will cache your username and password -- in cleartext! -- in your computer's memory, meaning a trojan/virus/worm/rootkit/etc. could read your password.  Best to use a unique password for the VPN connection.

Android Development

  • Eclipse and the Android SDK:
    • when updating the SDK using "Android SDK Manager" you may get an error that the SDK directory can not be moved.  Most likely this is because Eclipse has a lock on that directory.  The fix is to exit Eclipse and run Android SDK Manager by itself (I found it by searching via the Windows start menu).
  • adding a Fragment to an Activity associated (via setContentView()) with an .xml gui file: this tutorial uses the line
                    android, childFrag).commit();
to accomplish said task.  I was having trouble with multiple fragments overlapping each other when the code ran -- best I could tell all fragments were being located at the same absolute (x,y) position instead of being placed one after another as should happen with LinearLayout (the root element of my main.xml file).  I fixed it by manually assigning that root an id (here, rootLinearLayout) and changing the above line to:

, childFrag).commit();

R/C Servo Control Signals (PPM)

freeFTPd (freeware sftp/ftp server)

  • The setup of virtual directories is not explained well:
    • folder name is what you want to call it and how it will show to a logged-in user
    • virtual path is where it will appear in the logged-in user's directory view
    • real path is the actual path-on-disk
    • So a virtual directory with folder_name="music" and virtual_path="/john/media" and real_path="C:\temp\faves" would present a directory to the logged-in user with path "/john/media/music", which will allow access to the actual directory "C:\temp\faves" 


  • Multi-master I2C programming with Arduino
  • 0x0 is the general call address -- basically a broadcast of sorts (though with an optional response from interested parties).  Wire.h does not seem to use this directly, however you can use Wire.begin(0x0) on many devices and they all will respond to Wire.beginTransmission(0x0).  (But maybe it doesn't matter which address you use here?)
  • Valid addresses for I2C devices are 0x8 (decimal 8) through 0x77 (decimal 119).

Tech details for PC cooling fans (a possible source of cheap brushless motors + control hardware?)

Sources for robot parts

Other interesting parts suppliers

Raw Materials / Parts for Various Projects

 What Useful ForSourced From 
 6061 Aluminum    'bot armorMcMaster-Carr 
 Polycarbonate (Lexan)'bot armor Lowe's 
Ultra High Molecular Weight Polyethylene (UHMW-PE)  'bot armor, 'bot bulkheadsMcMaster-Carr         
 Wonderflex vac-forming without the vacuum? ,
PVC sheeting/boards who knows? it just looks cool Lowe's, Home Depot
 National Semiconductor LM3914/3915/3916 driving arrays of LEDs (see next line).  Appears to include current-limit resistors in-package = easier connections!
10-segment LED bar graphwho knows? it just looks cool, Digikey, etc. 
 80/20, MicroRAX building Al frames80/ (larger scale), (small-scale) 
 Rotary Encoder Dial (info and usage) knob for incrementing values in a microcontroller digitally (instead of analog via a potentiometer).  Can detect both direction and distance of the turn.  Mouser Electronics   
 Glass-filled Nylon     bot armor? nearly 5x tougher than UHMW-PE... 
 Oilite bearings one-piece bearings with a porous structure that holds lubricating oil 
 WheelWatcher wheel encoder  
Magic Sculptmodel making, sculpting 
 InstaMorph                     model making, sculpting moldable, reusable thermoplastic, available on Amazon
 Ureshell  Polyurethane Hard Coat model making, scultiping, props 
 spring steel'bot weapons?  
 4130 steel, 4140 steel'bot weapons?  
 S7 steel'bot weapons?          
 Flexbond  foam armor sealant 


Pinout for Lilypad Arduino

(click through for larger version)