Doing contract work in either VLSI/Processor Verification or
I'm not terribly interested in full-time employment right now.
I split my time between tool development and block-level verification:
I was part of a
processor verification team.
I was working in the Engineering Systems Lab (now SVTD) in Fort Collins, Colorado which designed the PA-RISC line of workstation/server processors.
I maintain a bunch of tools that I wrote at Marginal Hacks.
album, the most popular project on there, is highly ranked at freshmeat and is the first link if you search for the word album at google, due to it's popularity.
In college I spent a number of years creating a large software project called the WizPort, a solution to a very complex UNIX problem. The goal of the WizPort was to allow non-root level users set up a virtual UNIX machine that people could connect to on a different port. This 'machine' had it's own filesystem with a file security system that was far more complex and flexible than the UNIX system. Part of this project included creating an entirely new UNIX shell and modifying many UNIX utilities to work with the WizPort.
Project references available on request
One of my favorite school projects was the DEStiny chip. This was a VLSI implementation of the DES password encryption algorithm that I created with a fellow student to demonstrate weaknesses in current password security.
See the description at http://DaveSource.com/Projects/SpeedWaller.
6 months on two lines of code. Talk about dedication!
I write most of my big programs in C, Perl or Java, though I have
written large projects in Assembly. I have worked in C++, but
not for a while. Our test environment at Transmeta was in Scheme.
At one time I've even used the following languages: Lisp, Basic, Fortran, Ruby, Python, sed, yacc, sh, ksh, zsh, csh, tcsh, and so forth.
I generally require only two days to learn a new language, and I gain fluency soon thereafter.
I have experience in UNIX system administration/shell scripting
and have expertise in UNIX programming.
I read and write English fluently.
I am a firm believer in writing understandable documentation and I have
been known to over-comment my code.
I like to use things in new and interesting ways, I believe this makes
me a good verification engineer. I have managed to break and find bugs
in almost every tool I have used, including some of the big guys:
gcc, cpp preprocessor (a hang!), HPUX CC, HPUX linker, various assemblers, perl (2 so far), various shells (tcsh, ksh, ..), various verilog interpretors (VCS, ESP), rccs versioning software, etc..