Software Engineering - my life and passion

I have a diploma which says I am a certified Java Developer.

Table of Contents

Why Not Microsoft?     A discussion of where Windows/NTis going
Virus Hoaxes     A discussion about rumors of Evil Software on the 'web
Polymorphic Viruses     A discussion about raelly vil Software on the 'web
Java Resources     For programmers
Perl Resources
Linux Resources
Apache Resources     My favorite Web Server
ECS Resources     ECS is a package which allows Javaprogrammers to create HTML
WebMaster Resources  
VRML resources   Virtual Reality Modeling Language.
php Resources

Java Serverlets and Java Server Pages (JSPs) My first Serverlet application: a simple data entry form My second Serverlet application: a way to record interesting and useful URLs.

I have some thoughts on the Year 2000 Crisis.  There is another crisis brewing: the population explosion.  See for more details.

Why not Microsoft?

I am unhappy with Microsoft and their design approach, and I have written a manifesto on Windows/NT and software reliability.  With the advent of Windows/2000, Windows has improved remarkably, but has it improved enough to be a competitive threat with Linux?  See the operating system comparison page for details.

But don't take my word for it.  In spite of the fact that Microsoft is one of the largest advertisers in the world and despite the fact of their near virtual monopoly on the OS for desktop computers, in the webserver world and in the server world in general, they aren't that great.  See for a survey of web browsers, for one automated technique for counting operating systems, and for a count of operating systems.
And while I am on the subject, I suggest you take a moment to view the Digital Equipment Co. memorial web site.  Yes, DEC had clusters back in the early 1980s, about the same time Intel was announcing plans to build the 8088.  Yes, DEC had virtual memory in the early 1970s on minicomputers.  Yes, DEC had timesharing back when Bill Gates was in preschool.  Alas, DEC is no more.

IIS sucks

IIS is Microsoft's web server.  It only runs on Windows/NT, Windows/2000 and Windows/XP.  It is fatally flawed, because it runs fully privileged.  Thus, any coding error which creates a vulnerability, such as a buffer overflow, creates the possibility of corrupting the entire system.
By way of contrast, Apache, IIS's competition, runs on any UNIX like system, including but not limited to Linux, the BSDs, Solaris, HP-UX, etc.  Apache runs with privilege only long enough to grab port 80, and then drops to the context of an account which has no privilege.  So even if Apache were compromised somehow, the extent of the damage is limited.

But don't take my word for it.  Look at the  Ziff-Davis story on Gartner or the  story in the Register which quote  this article by the Gartner Group .  However, Microsoft seems to feel that this is all overblown,  according to a CNN story.   Gartner advocates completely rewriting IIS.  Joel Spolsky makes some compelling arguments why rewriting IIS is a bad idea.  What is the right way to think about this?

What OS is that site running?

Virus Hoaxes

So many people have written me about  E-mail hoaxes, E-mail viruses, and other E-mail scams that I have written a page with a response to it.

System Administration Resources

An essay on How to report vulnerabilities on other people's computing systems.

php resources

I have examples of php files either at the test location or the production location; or they might also be here.
The php tutorial from the people who wrote it, written, of course, in PHP.
There is a tutorial on MySQL and PHP called MySQL & PHP. I have a local php page where I am struggling to learn php.
I found a good Structured Query Language (SQL) Tutorial.

HTML Resources

Java Resources.

I am taking a Java Class from the University of Washington.  The course examples are from Deitel & Deitel .  Other Java resources are JavaWorld , Gamelan, and Mind View, Inc.  The Apache group wrote a package (in Java) to generate HTML.
There are the O'Reilly books.  I have Java in a nutshell, and the examples from that book are here.

Of course, let us not forget the people who started it all:

Java Resources at Sun, a.k.a. sunsoft .

Java Rules! Java Rocks!

Java 1.2 documentation from Sun. Java Serverlets documentation from sun.
Java Servlets (HttpServlet)
Current JDK download for Win32 and Solaris.  This is the state of the art in production JDKs.
JDK 1.0.2 download for Win32 and Solaris.  This is the maximum compatibility JDK.  If you really want "write once, run anyway", use this JDK.
JDK 1.2 Win32 and Solaris.  This is for Bleeding Edge of Technology applications.
JVM plugin for any brain damaged web browser.  Note that if you want to use the plugin, you have to change the HTML.  The plugin includes an HTML translator.
Current JRE - if you want to run Java Applications on a machine with no JDK, use the JRE.

Java software from the free software foundation (FSF, pronounced "gnu") and from the giant Java Tree.

Java Documentation Resources on Angel (for local use only)

I am measuring the performance trade-offs involved in writing compute intensive software in Java. Ordinarily, compute intensive software ought to be written in C. Or FORTRAN. You can write compute-intensive code in Java, but you should consider using JNI, which is not trivial.

Movesphere is a java/EAI/VRML application.  The RTA simulator is a simulation of the Rapid Transit Authority.  It's still a work in progress and one of the ways I think I shot myself in the foot was to code it to the Java 1.1 spec instead of 1.0. Here is a VRML simulation of a diamond. All of my VRMLs are indexed in my VRML page, which is generated by a perl script.
I am learning about servlets. Here is a Hello, world servlet.

Documentation Table of contents  There is also a list of Java products, from Sun.  Most of them are free.
JDK 1.2 API and language spec with frames on angel.

JDK 1.2 API and language spec without frames on angel.

Java JDK 1.2 tools

JDK 1.1 API documentation (JDK 1.1 is useful because JDK 1.2 is not ubiquitous yet)

Web 3D consortium which has both Java and VRML 3D software.

Java Developer's Kit.  This is the reference implementation of Java and includes a compiler, javac, an application run time, java (see also JRE), and an applet test environment, appletviewer.   Version 1.1.8 is the most ubiquitous.  Version 1.2.2 is the most recent.  Browse the Version 1.2.2 documentation.
Java Runtime Environment
JavaServer Page.  This is a way to make dynamic web content.  There is a relationship between JSPs and Servelets . (a JSP can invoke a servelet, but you don't need JSPs to use servelets) See Sun's JSP page, the JSP FAQ, and the JSP syntax cheat sheet.
JavaServer Web Development Kit.
Java Virtual Machine

Java Resources for LINUX

The Blackdown Organization .

Access to documentation

Of course, the most important documentation in the geek community is User Friendly.
The Apache documentation Local dialup procedures documentation, and Linux dialup configuration information. I have some of the linux information local to this machine.

Requests for Comment

During the early development of the Internet developers did not want to go through the laborious process of developing formal standards and applying to a standards body such as the EIA, IEEE, or ISO. Instead, they called the standards documents they developed [Requests for Comments]. These soon became de facto standards, and with the formal acceptance of the TCP/IP protocol as a network standard, de jure as well. You can get copies of the RFCs from literally hundreds of network sites, including,, RFC.JVNC.NET , or FTP.ISI.EDU.

Perl Documentation

The Perl 5 documentation from CPAN.  Perl software is mirrored at SPU.

Java Documentation

The JDK 1.2 documentation on angel or from sun.
The Java Serverlet FAQ .
Java numerics: High precision arithmetic in Java, courtesy the National Institute of Standards & Technology (NIST).
 /usr/local/ecs/ecs-1.0/docs and other Java server documentation
The Java Telnet applet.  This is a Java Applet that allows you to telnet into a computer without a telnet daemon.  I'm not sure how useful that is, because telnet clients are common - but if you had a Java computer, then something like this might be useful.

Other linux related files and things:

For Red Hat Linux, please visit the web site of Red Hat Software. The manual for Red Hat Linux is available here at Red Hat's site. Additional GNU/LINUX documentation is available on this machine. There is documentation on gnome and the Red Hat Manual. The HOWTOs are stored on angel's hard drive.

  <URL:> for Linux Documentation perldocs ~jeffs/perldocs grasp /usr/local/graspada//GRASP_Documentation/ The Linux documentation

The Linux Documentation Project.

A tutorial on the bash shell.

Information on NetATalk, which is a Linux implementation of the Apple Macintosh network file system.  More on NetAtalk+asun.  A Netatalk tutorial. Get Netatalk from the University of Wisconsin.  There is a competing package for AppleTalk on Linux from Columbia, the Columbia AppleTalk Package (CAP) .
  <URL:> for kernel patches, etc.
  Nice online tutotials for Unix and utilities at: System Administrator (includes Bourne shell) You can also get MacSSH as a binary or as a MacSSH .hqx file. Unix utilities (including make): > Getting started with ssh is user documentation on ssh. The ssh FAQ has information for sysadmins.  I am working on my own ssh tutorial oriented towards Mathsoft (Data Analysis Products Division) people.

More Linux resources.
Access to software from  VISI.

Other linux-related files and things:

URL: for kernel patches, etc.

A RedHat download mirror site.

A Linux Hardware and software installation tutorial with many links to other places.
MultiSync 50 The MultiSync 50 15" (13.8" viewable image size) monitor is designed for value-driven consumers who seek high-quality display performance and reliability. Model #: #PN7501 Screen Size: 15" (13.8" viewable image size) CRT: Dot Trio Maximum Resolution: 1280 x 1024 @ 65 Hz Horizontal Frequency: 31 kHz to 69 kHz Synchronization Range: Horizontal: 31 kHz to 69 kHz (automatically) Vertical: 55 Hz to 120 Hz (automatically) Specifications File Description in PDF format.

Linux, UNIX, and X-windows resources:

The long lost guide to X-terminal control codes:

Webmaster resources

The WWW Viewer Test page at Lawrence Livermore National Lab which you may use to test your browser's capabilities.
Add Me!
Submit your page to 34 popular sites for free, using one form!

List of popular RFCs.

Apache, HTTP and HTML documentation

Apache documentation on this machine.  Apache Documentation on Apache's web site .
I have made a handy list of the HTTP status codes which show up in log files and other places.
HTML tutorial page: HTML Goodies.

Java software and documentation

Movesphere (which is also a VRML application)
I have the Sun Java JDK1.2 documentation mirrored here - however if you really want to use them, you should go to Sun's page for API documentation or Sun's page for SDK standard edition documentation.

 I have more links at the software engineering page.

Perl software and documentation

The Perl 5 documentation from CPAN.  Perl software is mirrored at Seattle Pacific University (SPU).
To fix the links in this document (to change them from file: links to relative http: links) use Perl:
public_html]$ perl -e "s|file:////Angel/jeffs/public_html/||" -p INFILE.html > OUTFILE.html

Another document fixup one liner:
perl -e "s|angel\.jetinternet\.com||" -i.bak -p *.html *.htm
perl -e "s|\@angel\.jetinternet\.com|\|" -i.bak -p *.html *.htm

 I have more links at the software engineering page.

VRML software and documentation.

Movesphere (which is also a Java applet)
A Simulated diamond.  I gave my love a diamond, it was 1*10-6 carets, she dumped me.  Oh well, back to Linux and Perl and Java.
The revolving cone.  This was done entirely in VRML, there is no Java here, because I am still trying to figure out the VRML<->Java interface (EAI).
Your basic tetrahedron.  Simple minds are easily amused, and I guess my mind is pretty simple: I am fascinated by the idea that you can construct a tetrahedron inside a cube. It's true: a tetrahedron is a solid with 4 equilateral triangles; the 6 diagonals of a unit cube form a tetrahedron with edges of length sqrt(2). I am studying the External Authoring Interface of VRML. Here is one of my experiments: the Add and Remove test, which is an HTML page which invokes a VRML model which has a Java Class associated with it.

Maplesoft has a Gallery of 3D models in VRML.

HTML resources

Learn HTML by example .  The HTML Barebone guide, an HTML cheatsheet.  The HTML 3.2 reference ("Wilbur").
More information on the types of URLs and their formats can be found at:

System Administration, computer security topics

My favorite computer store is Uptime Technologies (206) 547-1817 2408 N. 45th street, Seattle, WA, 98103

Access to documentation

The Apache 1.3 documentation Local dialup procedures documentation (obsolete now that DSL is in place), and Linux dialup configuration information. I have some of the linux information local to this machine.

Program editors (This is for C and Java and Ada and ...)

I have been using GRASP with Sun's JDK on both LINUX and Windows/95.  Works great.  Get GRASP from the University of Auburn.

Do you think UCITA is a good idea? Me neither. See this article in The Linux Journal .
Return to the home page.

Here is a link to a web page with working and broken links, to test web spiders.

A history of CPUs from

This is from, which has other cool links to information.

    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
2   SP  !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /
3   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?
4   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
5   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _
6   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
7   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~ DEL