2004-6-23 11:51
sky-walker
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"<br /> "http://www.w3.org/TR/REC-html40/loose.dtd"><br /><HTML><br /><HEAD><br /><TITLE><br />W. Richard Stevens' Home Page<br /></TITLE><br /></HEAD><br /><br /><BODY><br /><H2><br /><br /><IMG SRC="http://www.kohala.com/start/gifs/taos1995.gif" ALIGN="MIDDLE" ALT="Rich Stevens picture"<br /> WIDTH=275 HEIGHT=175><br /><br />W. Richard Stevens' Home Page</H2><br /><IMG SRC="http://www.kohala.com/start/gifs/vi.gif" ALIGN="BOTTOM" ALT="powered by vi logo"<br /> WIDTH=123 HEIGHT=36><br /><br /><HR><br /><MENU><br /><LI><A HREF="#books">Books by Richard Stevens</A><br /><LI><A HREF="#papersmine">Papers by Richard Stevens</A><br /><LI><A HREF="#papersothers">Papers (of others)</A><br /><LI><A HREF="classes/classes.html">Classes by Richard Stevens</A><br /><LI><A HREF="troff/troff.html">Troff resources</A><br /><LI><A HREF="#typesetting">Typesetting</A><br /><LI><A HREF="#sources">Miscellaneous source code</A><br /><LI><A HREF="#mcast">IP Multicasting information</A><br /><LI><A HREF="#bio">Biography</A><br /><LI><A HREF="rstevensfaq.html">Rich Stevens' FAQ</A><br /><LI><A HREF="ttcp.html">T/TCP home page</A> (TCP for Transactions)<br /><LI><A HREF="recipes/recipes.html">Recipes</A><br /><LI><A HREF="mylinks/mylinks.html">favorite links</A><br /></MENU><br /><HR><br /><br /><H2><A NAME="books">Books by Richard Stevens (reverse chronological)</A></H2><br /><OL><br /><br /><LI VALUE=7><EM><A HREF="unpv22e/unpv22e.html"><br /> UNIX Network Programming, Volume 2, Second Edition:<br /> Interprocess Communications</A></EM>,<br /> Prentice Hall, 1999.<br /> <IMG SRC="gifs/new.gif" ALT="new logo" WIDTH=28 HEIGHT=15><BR><br /><br /><P><br /><LI VALUE=6><EM><A HREF="unpv12e.html"><br /> UNIX Network Programming, Volume 1, Second Edition: Networking APIs: Sockets and XTI</A></EM>,<br /> Prentice Hall, 1998.<br /> <!--IMG SRC="gifs/new.gif"--><BR><br /><P><br /><LI VALUE=5><EM><A HREF="tcpipiv3.html"><br /> TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP,<br />and the UNIX Domain Protocols</A></EM>,<br /> Addison-Wesley, 1996.<BR><br /><P><br /><LI VALUE=4><EM><A HREF="tcpipiv2.html"><br /> TCP/IP Illustrated, Volume 2: The Implementation</A></EM>,<br /> Addison-Wesley, 1995.<BR><br /><P><br /><LI VALUE=3><EM><A HREF="tcpipiv1.html"><br /> TCP/IP Illustrated, Volume 1: The Protocols</A></EM>,<br /> Addison-Wesley, 1994.<BR><br /><P><br /><LI VALUE=2><EM><A HREF="apue.html"><br /> Advanced Programming in the UNIX Environment</A></EM>,<br /> Addison-Wesley, 1992.<BR><br /><P><br /><LI VALUE=1><EM><A HREF="unp.html"><br /> UNIX Network Programming</A></EM>,<br /> Prentice Hall, 1990.<BR><br /></OL><br /><br /><HR><br /><H2><A NAME="papersmine">Papers by Richard Stevens (reverse chronological)</A></H2><br /><UL><br /><br /><LI>Allman, M., Paxson, V., Stevens, W. R. 1999.<br /> "TCP Congestion Control,"<br /> <EM>RFC 2581</EM>.<br /> <UL><br /> <LI><A HREF="ftp://ftp.isi.edu/in-notes/rfc2581.txt"><br /> ASCII text</A><BR><br /> </UL><br /><br /><P><br /><LI>Gilligan, R. E., Thomson, S., Bound, J., and Stevens, W. R. 1999.<br /> "Basic Socket Interface Extensions for IPv6,"<br /> <EM>RFC 2553</EM>.<br /> <UL><br /> <LI><A HREF="ftp://ftp.isi.edu/in-notes/rfc2553.txt"><br /> ASCII text</A><BR><br /> </UL><br /><br /><P><br /><LI>Stevens, W. R., and Thomas, M. 1998.<br /> "Advanced Sockets API for IPv6,"<br /> <EM>RFC 2292</EM>.<br /> <UL><br /> <LI><A HREF="ftp://ftp.isi.edu/in-notes/rfc2292.txt"><br /> ASCII text</A><BR><br /> </UL><br /><br /><P><br /><LI>Stevens, W. R., and Pendry, J.-S. 1995.<br /> "Portals in 4.4BSD,"<br /> <EM>Proceedings of the 1995 Winter USENIX Technical Conference</EM>,<br /> pp. 1-10, New Orleans, La.<br /> <UL><br /> <LI><A HREF="portals.summ.html"><br /> Abstract and Summary</A><BR><br /> <LI><A HREF="portals.ps"><br /> PostScript</A> (87K)<BR><br /> </UL><br /><br /><P><br /><LI>Stevens, W. R. 1989.<br /> "Heuristics for Disk Drive Positioning in 4.3BSD,"<br /> <EM>Computing Systems</EM>,<br /> vol. 2, no. 3,<br /> pp. 251-274 (Summer).<br /> <UL><br /> <LI><A HREF="diskposn.summ.html"><br /> Abstract and Summary</A><BR><br /> <LI><A HREF="diskposn.ps"><br /> PostScript</A> (102K)<BR><br /> </UL><br /><br /></UL><br /><br /><HR><br /><H2><A NAME="papersothers">Papers of Others (alphabetical)</A></H2><br /><br />Some of the following are papers that I have referenced in my books,<br />often Usenet postings, that are not easily obtainable.<br />Others are just papers that I think are interesting.<br />Enjoy--most are classics.<br /><br /><UL><br /><br /><LI>Borman, D. A. 1997,<br /> "<A HREF="borman.97jan30.txt"><br /> Re: Frequency of RST terminated connections</A>,"<br /> end2end-interest Mailing List,<br /> Jan. 30, 1997.<br /> A note that the upper limit of port 5000 for the ephemeral port numbers<br /> was a typo that occurred around 1986 right before 4.3BSD was released.<br /> The upper limit was meant to be 50,000.<br /><br /><P><br /><LI>Borman, D. A. 1997,<br /> "<A HREF="borman.97jun06.txt"><br /> Re: SYN/RST cookies</A>,"<br /> tcp-impl Mailing List,<br /> June 6, 1997.<br /> A note that the concept of the listen() backlog is a limit on the<br /> number of established connections. The purpose of this limit is<br /> to prevent TCP from accepting new connection requests when the<br /> application is not accept()ing them.<br /><br /><P><br /><LI>Braden, R. T. 1993,<br /> "<A HREF="tcplw-extensions.txt"><br /> TCP Extensions for High Performance: An Update</A>,"<br /> Internet Draft,<br /> June 21, 1993.<br /> Unfortunately this Internet Draft expired quite a while ago and was<br /> never published as an RFC. Nevertheless, the ideas in the draft appear<br /> in all current implementations of RFC 1323.<br /><br /><P><br /><LI>I have always been a fan of Richard W. Hamming.<br /> I did not keep very many of the textbooks that I acquired in<br /> graduate school, but kept all four of his books<br /> (along with all my Knuth, Kernighan, and Kleinrock books).<br /> Here is a wonderful <A HREF="papers.others/hammingbio.ps">biography<br /> and obituary</A> of Hamming (6 pages of PostScript),<br /> which includes a nice summary of his major accomplishments.<br /> <A HREF="gifs/hamming.html">Here</A> are the three photos<br /> that go with the biography.<br /><br /> <P>I will never forget having learned about digital filters from<br /> the classic Digital Signal Processing books of the 1970s<br /> (Oppenheim and Schafer, etc.) and then finding Hamming's<br /><A HREF="http://www.amazon.com/exec/obidos/ISBN=048665088X/wrichardstevensA/"><br /> Digital Filters</A> book, and wondering why all the classic texts<br /> made the topic so hard to understand when Hamming could make it<br /> so easy to understand.<br /> Some readers have told me that they find that my books<br /> make a complicated subject (such as network programming)<br /> easy to understand--if that is true,<br /> then it is due to the influence of writers like Richard Hamming<br /> and Brian Kernighan.<br /><br /><P><br /><LI>Jacobson, V. 1987,<br /> "<A HREF="vanj.87jun15.txt"><br /> Re: Interpacket Arrival Variance and Mean</A>,"<br /> June 15, 1987.<br /> An explanation and example C code for estimating the mean and variance<br /> of a series of measurements.<br /><br /><P><br /><LI>Jacobson, V. 1987,<br /> "<A HREF="vanj.87nov16.txt"><br /> Re: Your congestion scheme</A>,"<br /> Nov. 16, 1987.<br /> An early email on slow start and congestion avoidance.<br /><br /><P><br /><LI>Jacobson, V. 1988,<br /> "<A HREF="vanj.88feb11.txt"><br /> Dynamic Congestion Avoidance / Control</A>,<br /> Feb. 11, 1988.<br /> Another early posting on congestion avoidance.<br /><br /><P><br /><LI>Jacobson, V. 1988,<br /> "<A HREF="vanj.88jul20.txt"><br /> Some Interim Notes on the BSD Network Speedup</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID &lt;8807200426.AA01221@helios.ee.lbl.gov&gt;,<br /> July 20, 1988.<br /><br /><P><br /><LI>Jacobson, V. 1988,<br /> "<A HREF="vanj.88oct24.txt"><br /> 4BSD TCP Ethernet Throughput</A>,"<br /> tcp-ip Mailing List,<br /> Oct. 24, 1988.<br /><br /><P><br /><LI>Jacobson, V. 1988,<br /> "<A HREF="vanj.88nov23.txt"><br /> Performance</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID &lt;8811231121.AA19744@helios.ee.lbl.gov&gt;,<br /> Nov. 23, 1988.<br /><br /><P><br /><LI>Jacobson, V. 1990,<br /> "<A HREF="vanj.90apr30.txt"><br /> Modified TCP Congestion Avoidance Algorithm</A>,"<br /> end2end-interest Mailing List,<br /> Apr. 30, 1990.<br /><br /><P><br /><LI>Jacobson, V. 1992,<br /> "<A HREF="ftp://ftp.ee.lbl.gov/talks/vj-nkarch.ps.Z"><br /> Design Changes to the Kernel Network Architecture for 4.4BSD</A>,<br /> 4.4BSD Class, Berkeley, Calif., May 1992.<br /> These overheads contains additional details about the changes described<br /> in [Partridge 1993] and [Jacobson 1993]. Note that despite the title,<br /> these changes never made it into the 4.4BSD release.<br /><br /><P><br /><LI>Jacobson, V. 1993,<br /> "<A HREF="ftp://ftp.ee.lbl.gov/talks/vj-nws93-1.ps.Z"><br /> Some Design Issues for High-Speed Networks</A>,"<br /> Networkshop '93, Melbourne, Australia, Nov. 1993.<br /> Additional details about the changes described in [Partridge 1993].<br /><br /><P><br /><LI>Jacobson, V. 1994,<br /> "<A HREF="vanj.94mar14.txt"><br /> Problems With Arizona's Vegas</A>,"<br /> end2end-tf Mailing List,<br /> Mar. 14, 1994.<br /> <A HREF="vanj.94mar14.ps">PostScript illustration</A> referenced in<br /> this posting.<br /><br /><P><br /><LI>Jacobson, V. 1994,<br /> "<A HREF="vanj.94jun27.txt"><br /> Re: half baked anycastoff idea...</A>,"<br /> end2end-interest Mailing List,<br /> Jun. 27, 1994.<br /> A note that 4.4BSD intended to incorporate a lazy accept for TCP.<br /><br /><P><br /><LI>Jacobson, V. 1999,<br /> "<A HREF="papers.others/vanj.99feb08.txt"><br /> Re: traceroute history: why UDP?</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID: &lt;79m7m4$reh$1@dog.ee.lbl.gov&gt;,<br /> Feb. 8, 1999.<br /> People have wondered why traceroute uses UDP probes instead of<br /> ICMP echo probes (which apparently Microsoft traceroute uses).<br /> Here is the answer from the original author.<br /><br /><P><br /><LI><A HREF="http://www.cs.bell-labs.com/who/bwk/index.html">Brian<br /> Kernighan's</A> home page contains some classic software<br /> along with the source code for the one true awk.<br /> (I am a big fan of awk, and use it a lot.)<br /><br /><P><br /><LI>Readers (and copy editors) are occasionally surprised<br /> by my use of compound words, instead of using either the<br /> open or hyphenated form.<br /> That is, I write <I>filesystem</I> instead of either<br /> <I>file system</I> or <I>file-system</I>.<br /> The <I>Chicago Manual of Style</I> acknowledges this trend (Section 6.38).<br /> Don Knuth has a wonderul<br /> <A HREF="papers.others/knuth.email.html">paragraph</A><br /> about why we should write <I>email</I> instead of <I>e-mail</I><br /> and just accept the fact now that it will become a compound word.<br /><br /><P><br /><LI>Lanciani, D. 1996,<br /> "<A HREF="lanciani.96apr10.txt"><br /> Re: sockets: AF_INET vs. PF_INET</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID: &lt;3561@news.IPSWITCH.COM&gt;,<br /> Apr. 1996.<br /> Contains a copy of the 4.1cBSD manual page for the original socket()<br /> function, showing why the PF_ constants existed, independent of<br /> the AF_ constants.<br /><br /><P><br /><LI>Libes, D. 1990,<br /> "<A HREF="libes.timers.txt"><br /> Implementing Software Timers</A>,"<br /> C User's Journal, Nov. 1990.<br /> A handy set of C functions to implement any number of software timers<br /> in a process using a single timer signal.<br /><br /><P><br /><LI>Maslen, T. M. 1997,<br /> "<A HREF="maslen.97may01.txt"><br /> Re: gethostbyXXXX() and threads</A>,"<br /> Usenet, comp.programming.threads Newsgroup,<br /> Message-ID: &lt;maslen.862463530@shellx&gt;,<br /> May 1997.<br /> An interesting history of the development of the Solaris<br /> gethostbyXXXX_r() functions.<br /><br /><P><br /><LI>Mogul, J. 1992,<br /> "<A HREF="mogul.92mar02.txt"><br /> Re: Holy Turbocharger Batman, (evil, cheating) NFS async writes fly</A>,"<br /> Usenet, comp.protocols.nfs Newsgroup,<br /> Message-ID: &lt;1992Mar2.191711.9935@PA.dec.com&gt;,<br /> March 1992.<br /><br /><P><br /><LI>Muuss, M. J.,<br /> "<A HREF="http://ftp.arl.mil/~mike/ping.html"><br /> The Story of the PING Program</A>."<br /> A history of the PING program, by its original author.<br /> <P><br /> There exists a children's book<br /> <A HREF="http://www.amazon.com/exec/obidos/ISBN=0140502416/wrichardstevensA/"><br /> <I>The Story About Ping</I></A>, that, sadly, is not about this command.<br /> Nevertheless, a funny<br /> <A HREF="papers.others/ping.amazon.html">review</A><br /> of this book was posted to Amazon in March 1999.<br /> Amazon promptly removed the review (no sense of humor?),<br /> then put it back.<br /><br /><P><br /><LI>Partridge, C. 1993,<br /> "<A HREF="vanj.93sep07.txt"><br /> Jacobson on TCP in 30 Instructions</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID &lt;1993Sep8.213239.28992@sics.se&gt;,<br /> Sept. 1993.<br /><br /><P><br /><LI>Partridge, C., and Pink, S. 1993.<br /> "<A HREF="fasterudp.ps"><br /> A Faster UDP</A>,"<br /> <EM>IEEE/ACM Transactions on Networking</EM>,<br /> vol. 1, no. 4,<br /> pp. 429-440<br /> (PostScript, 148K).<br /><br /><P><br /><LI>This is a summary of the accidental priority inversion that occurred<br /> with the Mars<br /> <A HREF="papers.others/pathfinder.html">Pathfinder</A><br /> mission in July, 1997.<br /> This summary is by Mike Jones, dated December 7, 1997,<br /> and was then widely circulated after it appeared in Peter G. Neumann's<br /> moderated Risks Forum (comp.risks) on December 9, 1997<br /> in issue RISKS-19.49.<br /><br /><P><br /><LI>Paxson, V. 1995,<br /> "<A HREF="paxson.95sep29.txt"><br /> Re: Traceroute and TTL</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID &lt;48407@dog.ee.lbl.gov&gt;<br /> Sept. 1995.<br /> 30% of measured Internet routes are asymmetrical.<br /> See the next reference for the final version of the SIGCOMM paper<br /> that is referenced in the posting.<br /><br /><P><br /><LI>Paxson, V. 1996,<br /> "<A HREF="ftp://ftp.ee.lbl.gov/papers/routing.SIGCOMM.ps.Z"><br /> End-to-End Routing Behavior in the Internet</A>,"<br /> SIGCOMM 1996,<br /> Aug. 1996.<br /><br /><P><br /><LI>Jon Postel passed away unexpectedly on October 16, 1998.<br /> <A HREF="papers.others/postel.txt">Here</A><br /> are three wonderful acknowledgments of Jon's many contributions<br /> to the Internet by Dave Farber, Vint Cerf, and Bob Braden.<br /><br /><P><br /><LI><A HREF="http://www.cs.bell-labs.com/who/dmr/index.html">Dennis<br /> Ritchie's</A> home page contains some classic papers:<br /> "The Evolution of the Unix Time-sharing System,"<br /> "The Development of the C Language," and<br /> "A Stream Input/Output System," for example.<br /><br /><P><br /><LI>Shimomura, T. 1995,<br /> "<A HREF="shimomura.95jan25.txt"><br /> Technical details of the attack described by Markoff in NYT</A>,"<br /> Usenet, comp.protocols.tcp-ip Newsgroup,<br /> Message-ID &lt;3g5gkl$5j1@ariel.sdsc.edu&gt;,<br /> Jan. 1995.<br /> A technical explanation of the Internet break-in of December 1994<br /> along with the CERT advisory.<br /><br /><P><br /><LI>RPC Mailing List Discussion, 1995,<br /> "<A HREF="papers.others/rpc.comments.txt"><br /> RPC is a poor solution anyway, so why bother?</A>,"<br /> end2end-interest Mailing List,<br /> Feb. 1995.<br /> Whenever I teach RPC I always mention that it is a controversial<br /> topic. This is a collection of eight postings by some knowledgeable<br /> people on the topic of RPC, some pro, some con.<br /> This discussion was generated by the proposal from Sun to publish<br /> their RPC specifications as RFCs<br /> (which were published as RFCs<br /> <A HREF="ftp://ftp.isi.edu/in-notes/rfc1831.txt">1831</A>,<br /> <A HREF="ftp://ftp.isi.edu/in-notes/rfc1832.txt">1832</A>, and<br /> <A HREF="ftp://ftp.isi.edu/in-notes/rfc1833.txt">1833</A>,<br /> preceded by the agreement detailed in RFC<br /> <A HREF="ftp://ftp.isi.edu/in-notes/rfc1790.txt">1790</A>).<br /><br /><P><br /><LI>Torek, C. 1994,<br /> "<A HREF="torek.94dec31.txt"><br /> Re: Delay in re-using TCP/IP port</A>,"<br /> Usenet, comp.unix.wizards Newsgroup,<br /> Message-ID &lt;199501010028.QAA16863@elf.bsdi.com&gt;,<br /> Dec. 1994.<br /> A great explanation of why the SO_REUSEADDR socket option<br /> is needed with the bind() function.<br /><br /><P><br /><LI>Unix International, 1991,<br /> "<A HREF="dlpi.2.0.0.ps"><br /> Data Link Provider Interface Specification, Revision 2.0.0</A>,"<br /> Aug. 1991. (1.4 Mbytes PostScript, 185 pages.)<br /> This paper and the next two are the only publicly available<br /> documentation that I am aware of for the System V Release 4<br /> STREAMS interfaces to the datalink layer, network layer,<br /> and transport layer. They used to be available on the<br /> Unix International FTP site, when UI existed.<br /><br /><P><br /><LI>Unix International, 1992,<br /> "<A HREF="npi.2.0.0.ps"><br /> Network Provider Interface Specification, Revision 2.0.0</A>,"<br /> Aug. 1992. (860 Kbytes PostScript, 146 pages.)<br /><br /><P><br /><LI>Unix International, 1992,<br /> "<A HREF="tpi.1.5.ps"><br /> Transport Provider Interface Specification, Revision 1.5</A>,"<br /> Dec. 1992. (360 Kbytes PostScript, 51 pages.)<br /> The Transport Provider Interface is what sockets, XTI, and TLI<br /> talk to on an SVR4 system.<br /><br /><P><br /><LI>White, J. E. 1975.<br /> "<A HREF="papers.others/rfc707.txt"><br /> A High-Level Framework for Network-Based Resource Sharing</A>,"<br /> RFC 707, Dec. 1975.<br /> This is probably one of the first papers describing RPC<br /> (remote procedure calls). Most RFC indexes list this RFC as<br /> not being on-line, but someone found a copy of it for posterity.<br /> This paper also appeared in the Proceedings of the National Computer<br /> Conference in June 1976, and that is how it is normally referenced<br /> in RPC papers and texts.<br /><br /></UL><br /><br /><HR><br /><H2><A NAME="typesetting">Typesetting</A></H2><br /><br /><P><br />This section contains some notes on how I write books.<br /><br /><UL><br /><LI><A HREF="pagelayout.html">Page layout</A>.<br /><LI><A HREF="indexing.html">Indexing</A>.<br /><LI><A HREF="chartjunk.html">Chartjunk</A>.<br /><br /></UL><br /><br /><HR><br /><H2><A NAME="sources">Miscellaneous Source Code</A></H2><br /><br /><UL><br /><LI>This used to be a tar file containing the Posix.1g<br /> <TT>getaddrinfo()</TT> function that supports both IPv4 and IPv6.<br /><br /> <P><br /> You should now go to <A HREF="unpv12e.html">here</A> and fetch<br /> the source code from this book, which contains the implementation,<br /> and the sample chapter, which describes the implementation in<br /> great detail.<br /><br /></UL><br /><br /><HR><br /><H2><A NAME="mcast">IP Multicasting Information</A></H2><br /><br /><UL><br /><LI><A HREF="mcast.api.txt"><br /> IP multicast API information</A>.<br /> This describes the multicast API (application programming interface)<br /> using sockets for IPv4.<br /> It is from Steve Deering's original multicast release README (1989)<br /> but is still valid.<br /> Section 5 of<br /> <A HREF="ftp://ftp.isi.edu/in-notes/rfc2553.txt">RFC 2553</A><br /> describes the multicast API for IPv6.<br /><br /><P><br /><LI>There is a complete description of multicasting in general<br /> along with a detailed description of the IPv4 and IPv6 multicast API<br /> using sockets in <A HREF="unpv12e.html">this book</A>,<br /> with four example programs.<br /> Even if you don't want to buy the book,<br /> fetch the source code for the book,<br /> and look at the <TT>mcast_</TT> functions in the <TT>lib/</TT> directory<br /> along with the example programs in the <TT>mysdr</TT>,<br /> <TT>mcast</TT>, <TT>ssntp</TT>, and <TT>sntp</TT> directories.<br /><br /><P><br /><!-- A HREF="http://www.3com.com/isc/501303.html">paper</A --><br /><LI>This <A HREF="papers.others/draft-ietf-mboned-intro-multicast-03.txt">paper</A><br /> by Semeria and Maufer<br /> is a nice introduction to multicasting in general, and multicast routing.<br /><br /><P><br /><LI><A HREF="mtest.c"><br /> <TT>mtest.c</TT></A>:<br /> the test program from Steve Deering's original multicast release.<br /> Use it as another example of the multicast API.<br /><br /></UL><br /><br /><HR><br /><H2><A NAME="bio">Biography</A></H2><br /><br />I received the B.S.E. in Aerospace Engineering from the University of<br />Michigan (1973), and the M.S. (1978) and Ph.D. (1982) in Systems<br />Engineering (image processing major, physiology minor)<br />from the University of Arizona.<br /><br /><P><br />I have had many lives as a programmer.<br />After getting my B.S.E. I spent 2 years writing operating systems in<br />assembler, 7 years in the astronomy world (at Kitt Peak National Observatory<br />in Tucson, doing real-time data acquisition and image processing), then<br />8 years as Vice President of a health-care software startup in Connecticut<br />(Health Systems International).<br />Since 1990 I have been self-employed, living in Tucson, writing<br />books full-time with occasional teaching of classes based on the books.<br /><P><br />In what seems to be a previous life (1970s) I was a flight instructor,<br />although most of my flying these days is in the back of a commercial airliner<br />or down the steeps at Taos Ski Valley.<br />I am willing to admit that my first programming language was Fortran,<br />that I once programmed in Forth and Cobol,<br />and that I still have (from my undergraduate years)<br />both my IBM green card and my slide rule<br />(which Kelly Johnson calls a "Michigan calculator").<br /><br /><P><br />Here is a <A HREF="bio1.html">longer biography</A>,<br />mainly about how I got into computers and Unix.<br /><br /><P><br />Here is a chronological list of the various<br /><A HREF="bio3.html">computer systems and programming languages</A><br />that I have used.<br /><br /><H2>Where are you from?</H2><br /><br /><P><br />Chronologically and geographically I have lived lots of places.<br />When someone asks me "where are you from?" or "where did you grow up?"<br />my reply begins with "it's a long story".<br /><UL><br /><LI>1951: I was born in Luanshya, Northern Rhodesia (now Zambia).<br />My father (an American, although he had spent much of his youth<br />in Southern Africa and Tasmania) was working at the<br />Roan Antelope Copper Mine,<br />where he had worked as a metallurgical engineer<br />since graduating from Columbia University in 1937.<br />My mother (also an American) had gone to Northern Rhodesia to visit<br />her brother (another mining engineer from Columbia),<br />met my father, got married, and stayed 16 years longer than planned.<br /><P><br /><LI>1956-1960: Salt Lake City, Utah.<br />My father was working for Kennecott Copper Corp. (Bingham Canyon).<br /><P><br /><LI>1960-1964: Hurley, New Mexico.<br />My father was working for Kennecott Copper Corp. (Chino Mines).<br /><P><br /><LI>1964: Washington, D.C.<br />My father was at the Brookings Institution for 6 months.<br /><P><br /><LI>1964-1971: Phalaborwa, South Africa.<br />My parents went to South Africa for the development and opening<br />of the new Palabora Copper Mine in the northeastern Transvaal.<br />(Phalaborwa is one of the gates into the Kruger Game Reserve.)<br /><P><br /><LI>1964-1968: Waynesboro, Virginia.<br />When my parents moved to South Africa I was about to start high school,<br />and had my choice of a boarding school in the U.S. or an<br />English-style boarding school in South Africa.<br />I chose the former and attended Fishburne Military School for 4 years,<br />going "home" to South Africa each summer.<br /><P><br /><LI>1968-1973: Ann Arbor, Michigan,<br />attending the University of Michigan.<br /><P><br /><LI>1969: Sallisaw, Oklahoma. I had a summer job with Bechtel Corp.<br />at the construction of the Kerr McGee uranium treatment plant in Gore, OK.<br /><P><br /><LI>1971, 1972: Carrollton, Georgia.<br />I had summer jobs with the Southwire Corp.,<br />the first summer as a computer operator,<br />and the second summer as a programmer.<br /><P><br /><LI>1973-1975: Santa Ana, California.<br />After graduating from Michigan,<br />I worked for 2 years at Singer's M & M Computer Division<br />as a programmer.<br /><P><br /><LI>1975-1982: Tucson, Arizona.<br />I worked full-time for Kitt Peak Observatory<br />and attended graduate school at the University of Arizona.<br />Yes, it is possible to obtain a Ph.D. while working full-time,<br />although you don't have much free time.<br /><P><br /><LI>1982-1990: New Haven, Connecticut.<br />I worked for Health Systems International.<br /><P><br /><LI>1990-present: Tucson, Arizona.<br /></UL><br /><br /><HR><br /><br /><A HREF="http://www.bsdi.com/"><br /><IMG SRC="http://www.kohala.com/start/gifs/bsdi400x80.gif" ALIGN="LEFT" ALT="powered by BSDI logo"<br /> WIDTH=400 HEIGHT=80><br /></A><br /><br /><A HREF="http://validator.w3.org/check?uri=http://www.kohala.com/start/index.html"><br /><IMG BORDER=0 SRC="http://www.kohala.com/start/gifs/vh40.gif"<br /> ALIGN="RIGHT" HEIGHT=31 WIDTH=88 ALT="Valid HTML 4.0!"><br /></A><br /><br /></BODY><br /></HTML>