Friday, May 25, 2001

“Charles Williams Jr. was a manufacturer of telegraph instruments in Boston. It was in Williams' shop that Alexander Graham Bell and Thomas Watson experimented with the telephone. It was here that they heard the first sound transmitted by phone on June 2, 1875. Williams' residence in Somerville was the first residence in the world to have permanent telephone service, connecting his home with his shop in Boston. Williams had telephone numbers 1 and 2 of the Bell Telephone System.”

Thursday, May 24, 2001

Entrepeneurs want:
  • Books: Clockspeed by Charles Fine | Information Rules by Carl Shapiro & Hal R. Varian | Getting Things Done: The Art of Stress-Free Productivity by David Allen | Survival of the Smartest: Managing Information for Rapid Action and World-Class Performance by Haim Mendelson & Johannes Ziegler
  • Sites: Business 2.0 | FastCompany | Telephony (key sites) | Computer Telephony | Harvard Business Review
  • Big Six accounting firms: Arthur Andersen | PriceWaterhouseCoopers | Deloitte & Touche | Ernst and Young | KPMG | Price Waterhouse
  • Big Nine consulting firms: Accenture | Arthur D. Little | A. T. Kearney | Bain & Company | Booz Allen & Hamilton | Boston Consulting Group | McKinsey | Mercer Management Consulting | Monitor
  • Words made from 74663-77355 by PhoneSpell.org.
    http://www.junkbusters.com/
    http://www.activism.net/cypherpunk/
    http://www.csua.berkeley.edu/cypherpunks/Home.html
    What if Speech Were First? — Key-bored technology can transform how we control computers — or more likely, turn us into mindless finger-licking automatons. | By Larry Allen (a spoof of this)
    As promised...

    Sun Java resources:

    Java 2 (JDK 1.2) home: http://www.javasoft.com/products/jdk/1.2/
    Download the Lose32 version of JDK 1.2.2: http://www.javasoft.com/products/jdk/1.2/download-windows.html
    Java 1.2 (on-line) documentation: http://www.javasoft.com/products/jdk/1.2/docs/
    Java 1.2 on-line package documentation: http://www.javasoft.com/products/jdk/1.2/docs/api/overview-summary.html
    Java Tutorial: http://java.sun.com/docs/books/tutorial/

    Non-Sun on-line resources:

    Marty Hall's Java Programming Resources: http://www.apl.jhu.edu/~hall/java/
    Java Lobby: http://www.javalobby.org/
    Robert Hurd's CodeCollection Java source: http://www.codecollection.com/java/source/
    The Giant Java Tree source code: http://www.gjt.org/pkgdoc/tree/
    Cliff Berg's DDJ Java source code: http://www.digitalfocus.com/ddj/code/
    Java in a Nutshell Examples source code: http://www.oreilly.com/catalog/jenut/examples/
    FreeCode Java: http://www.freecode.com/cgi-bin/search.pl?query=java
    EarthWeb Java: http://www.developer.com/downloads/freeware/java.html
    Peter Ellehauge's Java resources: http://www.triathlon.dk/triguy/java/
    Cygnus Java compiler (FYI): http://sourceware.cygnus.com/java/

    Java Books:

    Start with _Java in a Nutshell_: http://www.ora.com/catalog/javanut3/

    Emacs resources (especially for Java):

    The JDE page: http://sunsite.auc.dk/jde/
    The Lose32 Emacs download page: http://www.cs.washington.edu/homes/voelker/ntemacs.html
    The Gnu Emacs page: http://www.gnu.org/software/emacs/

    Python resources:

    Everything: http://www.python.org/

    If you have any questions, just ask!

    ======================================================================

    > Example, gcd (2520, 154)
    >
    > 2520 = 154 (16) + 56
    > 154 = 56(2) + 42
    > 56 = 42(1) + 14
    > 42 = 14(3) + 0

    Oh those clever Greeks...

    I attach our recent hacks _plus_ a GCD implementation. The Gcd class probably ought to have a static method for gcd( n1, n2 ) & _no_ instance variables (fields). This version kinda has both. What do you think?

    %MY_JAVA%\java.bat:

    : Set up these environment variables appropriate to your file system
    SET MY_JAVA=c:\temp\java
    SET JAVA_HOME=c:\work\jdk1.2.2
    SET CLASSPATH=%JAVA_HOME%\jre\lib\rt.jar;%MY_JAVA%

    : Move to the source code directory (%MY_JAVA%\test)
    CD %MY_JAVA%\test

    : Compile source code
    %JAVA_HOME%\bin\javac Test.java Gcd.java

    : Run resulting classes
    %JAVA_HOME%\bin\java test.Test -s 123456
    %JAVA_HOME%\bin\java test.Gcd 2520 154


    %MY_JAVA%\test\Test.java:

    //////////////////////////////////////////////////////////////////////
    //
    // test.Test
    //
    //////////////////////////////////////////////////////////////////////

    package test;

    public class Test {

    Test( int seed ) {
    java.util.Random rand = new java.util.Random( seed );
    for ( int i = 1; i < 10; ++i ) {
    System.out.println( rand.nextInt( ) );
    }
    }

    static void usage( ) {
    System.out.println( "usage: java test.Test -s SEED" );
    System.exit( -1 );
    }

    public static void main ( String[ ] args ) {

    int seed = 12345;

    // Parse the command line argument.
    try {
    for ( int i = 0; i < args.length; ++i ) {
    if ( args[ i ].startsWith( "-" ) ) {
    // Process command-line switch arguments.
    if( args[ i ].startsWith( "-s" ) ) {
    seed = Integer.parseInt( args[ ++i ] );
    continue;
    }
    }
    // Invalid command-line switch.
    usage( );
    }
    }
    catch ( NumberFormatException e ) {
    usage( );
    }

    Test test = new Test( seed );
    }
    }


    %MY_JAVA%\test\Gcd.java:

    //////////////////////////////////////////////////////////////////////
    //
    // test.Gcd
    //
    //////////////////////////////////////////////////////////////////////

    package test;

    public class Gcd {

    // Fields

    int n1; // first integer
    int n2; // second integer

    // Constructors.

    Gcd( int n1, int n2 ) {
    this.n1 = java.lang.Math.max( n1, n2 ); // initialize first integer
    this.n2 = java.lang.Math.min( n1, n2 ); // initialize second integer
    }

    // Methods.

    public int gcd( ) {
    return ( gcd( n1, n2 ) );
    }

    public int gcd( int n1, int n2 ) {
    int modulus = n1 % n2; // saves one division if n1 > n2
    if ( modulus == 0 ) {
    return ( n2 );
    }
    else {
    return ( gcd( n2, modulus ) );
    }
    }

    static void usage( ) {
    System.out.println( "usage: java test.Gcd INT1 INT2" );
    System.exit( -1 );
    }

    public static void main ( String[ ] args ) {

    int n1 = 2520;
    int n2 = 154;

    // Parse the command line argument.
    try {
    for ( int i = 0; i < args.length; ++i ) {
    if ( args[ i ].startsWith( "-" ) ) {
    // Process command-line switch arguments.
    }
    else {
    // Process two command-line numerical arguments.
    n1 = Integer.parseInt( args[ i++ ] );
    n2 = Integer.parseInt( args[ i++ ] );
    continue;
    }
    // Invalid command-line switch.
    usage( );
    }
    }
    catch ( java.lang.ArrayIndexOutOfBoundsException e ) {
    usage( );
    }
    catch ( java.lang.NumberFormatException e ) {
    usage( );
    }

    Gcd gcd = new Gcd( n1, n2 );
    System.out.println( "test.Gcd: " +
    "GCD( " + n1 + ", " + n2 + " ) = " + gcd.gcd( ) );
    }
    }


    When I ran JAVA.BAT (after installing jdk1.2.2 in %JAVA_HOME% & these *.java files in %MY_JAVA%) I got the following output:

    C:\temp\java\test>..\java.bat

    C:\temp\java\test>SET MY_JAVA=c:\temp\java

    C:\temp\java\test>SET JAVA_HOME=c:\work\jdk1.2.2

    C:\temp\java\test>SET CLASSPATH=c:\work\jdk1.2.2\jre\lib\rt.jar;c:\temp\java

    C:\temp\java\test>CD c:\temp\java\test

    C:\temp\java\test>c:\work\jdk1.2.2\bin\javac Test.java Gcd.java

    C:\temp\java\test>c:\work\jdk1.2.2\bin\java test.Test -s 123456
    1774763047
    -506496402
    -41169962
    2018695370
    1083428877
    298499967
    -1264165101
    1316144193
    315415608

    C:\temp\java\test>c:\work\jdk1.2.2\bin\java test.Gcd 2520 154
    test.Gcd: GCD( 2520, 154 ) = 14

    Have fun!

    - dcp

    p.s. Once you have the GCD then:

    // LCM is the least common multiple of n1 & n2
    public int lcm( int n1, int n2 ) {
    return ( n1 * n2 / gcd( n1, n2 ) );
    }
    Doug Lea's page is an excellent place to start with patterns & Java. I adopted his Sample Java Coding Standard and it worked well.
    Waba on SourceForge. “Waba is a small, efficient and reliable Java Virtual Machine (VM) aimed at portable devices (but also runnable on desktop computers), written by Rick Wild of Wabasoft. The Waba VM is an open source project.”
    The following hoax pages are good to check out when you get an inflammatory
    piece of 'net detritus:

    HOAXES, MYTHS, URBAN LEGENDS, & OVERBLOWN THREATS
    http://www.kumite.com/myths/ Rob Rosenberger's Computer Virus Myths
    http://ciac.llnl.gov/ciac/CIACHoaxes.html DoE Computer Incident Advisory
    Capability internet hoaxes
    http://urbanlegends.about.com/ About.com Urban Legends & Folklore
    (lists many of the other sites)
    http://206.129.0.238/~larry/rumorcontrol/ Larry Gilbert's Rumor Control page

    URBAN LEGENDS
    http://www.snopes.com/ Urban Legends Reference Page
    http://www.lycos.com/wguide/wire/wire_484526_88215_3_1.html Lycos Urban Legends

    CHAIN LETTERS
    http://ciac.llnl.gov/ciac/CIACChainLetters.html DoE Computer Incident Advisory
    Capability internet chain-letters
    http://chainletters.org/ Internet chain-letters

    SECURITY
    http://cve.mitre.org/ Mitre's common vulnerabilities and exposures (CVE) list
    http://www.cert.org/ CERT Coordination Center - tracks real internet security breaches
    http://www.cerias.purdue.edu/ Purdue Center for Education and Research in Information Assurance and Security
    http://xforce.iss.net/ Internet Security Systems XForce database
    http://www.ntbugtraq.com/ Russ Cooper's NT Bug database
    http://www.securityfocus.com/bid/ Security Focus vulnerability database

    COMMERCIAL ANTI-VIRUS
    http://vil.nai.com/villib/alpha.asp Network Associates' Virus Library
    http://www.symantec.com/avcenter/ Symantec AntiVirus Research Center

    CHARLES LAQUIDARA'S BIG MATTRESS - INTERNET SAVY 1007
    http://www.bigmattress.com/internet%20savvy.htm

    M$ VIRUSWARE
    Neeed M$ Word macro virus references...
    http://www.ntbugtraq.com/default.asp?sid=1&pid=47&aid=56 Outlook FAQ
    http://vil.nai.com/vil/vm10132.asp Melissa
    http://vil.nai.com/vil/vbs10418.asp Bubbleboy
    Extreme Programming (XP) can be investigated at xprogramming.com & armaties.com (Ron Jefferies — co-author of the pink book), extremeprogramming.org (J. Donovan Wells' more page is particularly good), XP Wiki (Ward Cunningham's Portland Patern Repository; see Why Wiki Works). And, of course, the white, pink, green, blue, red, and Refactoring books.
    Cool stuff from AT&T Laboratories Cambridge (part of the AT&T Labs Research organisation… approximately 50 research staff are employed… at facilities in central Cambridge, England) include: VNC (virtual network computing) & omniORB (“a robust, high-performance CORBA 2 ORB”). Can't live without 'em!

    Wednesday, May 23, 2001

    Investors talk up voice recognition | By J.T. Farley | Upside.com Hardware / Software | 2001/04/25 | “But it may be too early for SpeechWorks to claim victory. "I wouldn't say that either [SpeechWorks or Nuance] has a clear lead at all," said Ladenberg Thalmann analyst Donald Newman. [...] He notes that it is not a two-horse race, as both these companies are still competing with scandal-plagued, bankrupt Belgian competitor Lernout & Hauspie. "Lernout is a big player in this market and you can't write it off. It is expected to come out of [bankruptcy] reorganization some time in the fall, and there's no question that it has very good technology and a good management team," Newman said.”
    My sister-in-law works for USGS & pointed me to the Myth of the Martyred Mapmaker (with links to the related Doonesbury comics) | By Michael Grunwold | Washington Post | Page A01 | 2001/05/21

    Thursday, May 17, 2001

    From the The Thermometer Man I received my Bell & Howell Qualified Projectionist certification.

    Wednesday, May 16, 2001

    What is the Difference Between a Sweetpotato and a Yam? And you thought they were the same!

    Monday, May 14, 2001

    Signatures lines I have admired:
  • No electrons were harmed in the making of this message.
  • ¡Forward in all directions! — 3 Mustaphas 3
  • from standard.disclaimer import *
    Tired of waiting for that clever e-mail? Just go to CoolSigs.com.
  • I got 37 out of 40 on the Nerd Quiz 2.0.1 (from Discovery Channel Canada). I scored 0x0D0 (= Hacker) on the Hacker Test, but I only got 55 on the Nerd Test (both from AllegedlyFunny.com). I guess I don't look like a nerd, even though I know more than sixteen computer languages.
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.1
    GE d- s: a+ C++$ UL+ P--- L+>+++ E W++ N+ !o !K w !O M+ V PS++ PE Y+>++ PGP>+++ !t 5? X? R* tv--- b++ DI++ !D G e++ h---- r+++ y++++**
    ------END GEEK CODE BLOCK------

    My GEEK CODE BLOCK decoded.
    In the face of 107% price increases, how credible is Bill Gate$' statement? And let's not forget: “Another sign of a healthy competitive industry is lower prices. The statistics show that the cost of computing has decreased 10 million-fold since 1971. That's the equivalent of getting a Boeing 747 for the price of a pizza. Consumers see the results of this innovation and falling prices in software today.” I guess that 747 is going to cost you two pizzas.

    Sunday, May 13, 2001

    What better way to spend Mothers Day than listening to Frank? Check out the new music.

    Saturday, May 12, 2001

    Thanks to a friend, I just discovered the Boston Table Tennis Center (though it wasn't an easy place to find. They have interesting links, including the top equipment makers: Butterfly, Donic, Joola, and Stiga. Who knew there was so much to it? At the Boston center, I learned that the rules may change to best-of-seven eleven point games with two serves-per-player (though I could find nothing on ITTF or USATT or About.com about it).

    Friday, May 11, 2001

    A note from Bell Labs on the Other Unix. “UNIX® [is] the essential partner for eyespot or rynchosporium control in barley.” I particularly like the diapers.

    Friday, May 04, 2001

    Coad Letter Index from the Together Community — from TogetherSoft.

    Thursday, May 03, 2001

    Zaplet means "entanglement" in Serbo-Croation.