Simple Signal, Cheap

#!/usr/bin/python
# 2009-05-03-09:00 SRJ
# 
# This little circuit can be built into a
# DB9 shell and used as a go/no signal on
# an otherwise headless machine, it can
# be turned on or off by any user in the
# dialout group. A 3 lead Bi-Color LED
# will also be able to show yellow.
# Resistors are about 1.5K (Bn Gn Or)
# Pin-(Sig)   Resistor   LED
#                        Red~
#   7-(RTS)---/\/\/\/----|>|--+
#                             |
#   5-(GND)-------------------+
#                             |
#   4-(DTR)---/\/\/\/----|>|--+
#                        Grn~
#
# Bring in the seriel library that lets us set signals.
import serial
 
# Create the object that points to the physical hardware.
# Set /dev/ttyUSB0 if needed.
s=serial.Serial('/dev/ttyS0')
 
# Use the library calls with our object to provide 
# voltage in the range -12V to +12V to specific 
# pins of the seriel port.
# RTS and DTR are inverted so 0 is +12V or on.
# Red
# s.setRTS(0)
# s.setDTR(1)
 
# Green
# s.setRTS(1)
# s.setDTR(0)
 
# Yellow
# s.setRTS(0)
# s.setDTR(0)
 
# Off
s.setRTS(1)
s.setDTR(1)

TinyPad

#!/bin/bash
#      SRJ 2016-09-20 Create reasonable passwords
# This is ~/bin/TinyPad
# This script produces 26 rows of 3 columns of 13 characters each.
# It was written to create ISO-ID-1 Cards to carry in the wallet, with 
# a letter before each row as a reminder (I use row G for Google passwords
# for example.
 
Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.!@#$%&-_=+abcdefghijklmnopqrstuvwxyz"
Count=${#Chars}   # Length of $Chars
# You can remove specific characters to avoid ambiguity, O or 0 for instance,
# though, if you print this in Courier, the symbols are quite unique.
 
Ran()
{
# This function generates a random number, returns the modulus of that number 
# in the range of 1 to (Number of characters in $Char), and then returns the 
# single character from $Char at that position
Offset=$(($(head -c4 /dev/urandom | od -N2 -tu2 | sed -ne '1s/.* //p')%$Count))
echo "${Chars:${Offset}:1}"
};
 
for Row in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
do echo -n "${Row} "
  for Column in 1 2 3
  do for Char in 1 2 3 4 5 6 7 8 9 10 11 12 13
    do echo -n "$(Ran)"
    done  ; echo -n " "
  done ; echo ""
done
# The 3 embedded loops above spit out the Rows, Columns, and Char to form an
# array that is designed to fit on a credit card for your wallet. 
 
# For the line below to work properly, you have to install the enscript package,
# then add a media definition in the form;
# Media:	Card		242	153	5	9	228	145 
# to the /etc/enscript.cfg file
# TinyPad | enscript -BM Card --margins=10:9 --output=- -f CourierBold8/9 | ps2pdf - Pad.pdf
# Produces a file, Pad.pdf that can be printed directly with the card printer 
# at the front desk.

Pad.pdf