Rick Walker

Rick Walker was born in San Rafael, California in 1960. He received his BS degree in Engineering and Applied Science from the California Institute of Technology in 1982, and his MS degree in Computer Science from California State University at Chico in 1992. Rick worked at Agilent Laboratories (formerly Hewlett-Packard) from 1981 until 2003, where he was a principal project engineer specializing in phased-locked loop theory, high-speed clock recovery design, and data coding techniques for fiber-optic data transmission. He has authored numerous professional papers and holds 40 U.S. patents in the areas of high-speed links and circuit design. In particular, Rick was the inventor of the 64b/66b line code adopted by the IEEE for use in 10Gb/s Ethernet.


Linux software

Nrm - "new rm".
A recoverable file delete and undelete program for Linux. Use it to replace your stock 'rm' program to recover deleted files up to three days later.
Pdplot
A public domain re-implementation of Bob Jewett's autoplot X11 graph program. Pdplot takes x,y pairs from standard input, interspersed with optional formatting commands and creates a nicely scaled graph in an X11 window.
Piglet
A public domain re-implementation of HP's Piglet technical drawing editor. Piglet is notable for it's hierarchical definitions of drawings, something that is very rare in PD CAD drawing programs.
Post
A post-processor for Ngspice, Berkeley Spice and HSPICE raw files. Post() provides a shell interface with command line history, and a yacc-based waveform math and measurement language. It is a from-scratch implementation loosely modeled after HP's internal post() tool for plotting and analyzing HPSPICE rawfiles. Post() is in early development, so expect changes in the waveform processing language with each release. Please contact me if you are interested in post() and I'll keep you in the loop about latest releases. This version uses Gnuplot for the graphing engine. This current version lets you load a raw file with ci "rawfile". The basic data type is the piece-wise-linear (PWL) complex waveform. A waveform can be either loaded from a SPICE run, or defined with something like "a={0,0 1,1 2,3+4*i}" You can do math on piece-wise-linear waveforms such as "a=mag(v1+sqrt(5)*v2)" or "deriv=(v2-delay(v2,1u))/1u". (yes, engineering suffix notation is supported in the parser). There are waveform measurement verbs such as "t1=xcrossp(v1,5)", which translates to finding the time of the fifth positive-going zerocrossing of a waveform "v1". Some interesting features: An RC low-pass filter can be created with "lpf(p1,tau)". Of course a high-pass signal is just "1-lpf(p1,tau)". Post() solves the differential equation for each segment of the PWL and then outputs an anti-aliased uniform-sampled waveform for subsequent processing. You can graph several signals: a,b,c,d on on graph with "gr a,b,c,d", or on two seperate y-axes with "gr a,b;c,d". You can limit the x-axis range with "gr a,b;c,d xl 1 10". Each graph can be similiarly scaled and limited in the yaxis by using the "yl min max" command. Read the HELP file for a current list of functions and commands.
velo
A command line program that takes ASCII data consisting of lines of x,y,z,w coordinates and computes coordinate stepper motor drive pulses for feeding to a 4-axis CNC. Can be used in conjunction with piglet(1) above to do engraving with DXF and Hershey fonts. Simple awk or perl programs can easily machine expeller screws or parabolic surfaces. The program source includes velo(1) the trapezoidal velocity and acceleration constrained optimizer, and feed(1) which sends the encoded step pulses to a simple USB PIC processor for converting to standard step and direction pulses for controlling a stepper driver. The input files to velo(1) can easily be plotted with pdplot(1). A simple awk script can be used to select any two of x,y,z,w to give an orthogonal projection of the toolpath.
bbsim
A bang-bang Phase-locked-loop (PLL) simulator written in C, which allows quick development of design intuition by simulating bang-bang loops under lots of cases quickly...
aplay - "audio playing program".
A pitch-shifting, speed-shifting program to play or loop any desired segment of a cd-format .wav file. Invaluable for musicians to learn licks by playing them at slow speeds, or to learn a song in a different key by pitch-shifting a classic cover tune.
tm - "typemon, monitor keyboard mouse usage and suggest rest breaks"
Tm attempts to reduce repetitive stress injury (RSI) by monitoring mouse and keyboard activity to suggest periodic rest breaks. If the consecutive time of typing or mousing exceeds the user-defined limits, then a warning window pops up advising the user to take a rest break. The window remains until there has been no typing or mousing for the user-defined rest time. A log file ~/.typelog keeps track of the total cumulative typing and mousing times for each day. This data can be plotted in histogram form using the script typehisto. Tm is a graphical tck/tk program written for modern linux kernels. It uses the /proc/interrupts file for keyboard and mouse monitoring, but can be easily modified for other platforms.

Other links

Papers, Talks and Patents
PDF files of papers, public talks, and issued patents.
Carnivorous Plant Database
A taxonomic database of all carnivorous plants (with photos!)
Recent Paintings
Paintings that I've done at the AHA! Center from 2004-present.


Rick Walker
rick_walker "AT" omnisterra.com