Professional


Contents


Introduction

I'm currently a senior software engineer at SonicWALL, a network security company and manufacturer of firewalls. In recent years I've done contracting, and have worked as an engineer and manager at a few startups, some of which were very successful, e.g., NetManage. Prior to this I worked at Oracle and Sun Microsystems. Long ago I worked for NASA/Jet Propulation Laboratory and the University of California at Santa Cruz, Long Marine Laboratory. My first real job was with Caine, Farber & Gordon, Inc. working on porting the PDL processor to various mainframe computers.

Some of the products I'm most proud of:

Watch this space for a resume.

Tools

This section contains tools I've developed which I find useful.

Windows Command-Line Mail Client

This application is for POP users who want to read their mail from any Windows machine with an internet connection, a browser, and a command prompt. Works on Window 98, NT, and 2000. Currently, the application can only receive mail.

Executable download about 70K.

Windows Scheduled Execution Service

This is a windows service that runs applications daily at specified times. I wrote it out of frustration of using the "at" command and the "Task Scheduler" to run scripts and executables. The configuration file is a simple script and the script can be changed and reinitialized at run time (by setting a registry variable). Task input and output files can be specified. Currently, the service only works for tasks that occur every day at a particular time.

Zipped executable and Word documentation download about 39K.

Bibliography

This bibliography is organized into topics I find useful in my current work.

C++

Stroustrup, Bjarne. The C++ Programming Language, 2nd Edition. Addison-Wesley, 1991. For better or worse, this is my go-to book for C++.

Design Patterns and Refactoring

Fowler, Martin. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2000. Refactoring is the process of performing transformations on existing source code to improve its design and maintainability. The transformations inhabit the realm between local optimization and wholesale rearchitecture. There is a significant object-oriented and patterns influence. If programming is like writing, refactoring is like editing with the "Elements of Style" at the level of paragraphs and chapters rather than sentences.
Gamma, et al. Design Patterns: Elements for Reusable Object-Oriented Software. Addison-Wesley, 1995. This is the seminal work on design patterns. I believe this idea is the most significant development in the art of programming since object-oriented programming.

HTML and JavaScript

Flanagan, David. JavaScript: The Definitive Guide, 3rd Edition. O'Reilly & Associates, 1998. My JavaScript reference.
Musciano, Chuck and Kennedy, Bill. HTML: The Definitive Guide, 3rd Edition. O'Reilly & Associates, 1998. My HTML reference.
W3C. HyperText Markup Language Home Page. Retrieved from http://www.w3.org/MarkUp/ . The official reference.

Java

Flanagan, David. Java Examples in a Nutshell: A Tutorial Companion to Java in a Nutshell, 2nd Edition. O'Reilly & Associates, 2000. Used the network server examples.
Harold, Elliotte. Java Network Programming. O'Reilly & Associates, 2000. Found useful client and server examples here.
Oaks, Scott and Wong, Henry. Java Threads, 2nd Edition. O'Reilly & Associates, 1999. Good introduction to threads.
McLaughlin, Brett. Java and XML. O'Reilly & Associates, 2000. Learned about Java XML support from this book.
Sun Microsystems. Java 2 SDK, Standard Edition Documentation Version 1.2.2. Retrieved from http://java.sun.com/products/jdk/1.2/docs/index.html . When writing Java code, one window always points here.

IETF

IETF. The Internet Engineering Task Force. Retrieved from http://www.ietf.org The place to find RFCs and current Internet Drafts.

Network Security

Davis, Carlton. IPSec Securing VPNs. Osborne/McGraw-Hill, 2001. This has the best explanation of ISAKMP I have found.
Doraswamy, Naganand and Harkins, Dan. IPSec: The New Security Standard for the Internet, Intranets, and Virtual Private Networks. Prentiss-Hall, 1999. A good explanation of IPSec.

Project Management

Badaracco, Joseph. Defining Moments: When Managers Must Choose between Right and Right. Harvard Business School Press, 1997. Some good thoughts on management ethics which brings together an interesting collection of philosophers.
Brooks, Frederick. The Mythical Man-Month. Addison-Wesley, 1995. A classic yet surprisingly topical work originally from the time of EBCDIC before, there was Unix, personal computers, Windows, or the internet.
DeMarco, Tom and Lister, Timothy. Peopleware: Productive Projects and Teams, 2nd Edition. Dorset House Publishing, 1999. A software developer's utopian view of how they should be managed.

Unix

Oram, Andrew and Talbott, Steve. Managing Projects with make. O'Reilly & Associates, 1993. Essential make reference.
Mulligan, John. Solaris: Essential Reference. New Riders Publishing, 1999. When I worked at Sun I used SunOS. Now I have a Blade running Solaris. This is my Solaris reference.
Stevens, Richard. TCP/IP Illustrated, Vol 1-3. Addison-Wesley, 1994.
Stevens, Richard. Unix Network Programming, Vol 1, 2nd Edition. Prentiss Hall, 1998.
Richard Stevens is my go-to guy when it comes to Unix programming. I also used his networking books to figure out how to do network programming on Windows when Winsock was new.

Windows

Hill, Tim. Windows NT Shell Scripting. Macmillan Technical Publishing, 1998. Some books stand out because they actually explain arcane subjects that somehow get taken for granted. This is the best (and only) book I have found that explains Windows scripting.
Kruglinski, David. Inside Visual C++. Microsoft Press, 1996. This book (and it's previous editions) is how I learned to use MFC, and thereby avoided having to read Petzold.

Last modified 15 March 2002. Reach me via email.