Archive for Internet bullying

International Herald Tribune letter re “trolling” and “bullying” on the Internet

Posted in Uncategorized with tags , , , , , on December 1, 2010 by spinoza1111

Edward G. Nilges
Lamma Island
Hong Kong
1 Dec 2010
International Herald Tribune

To whom it may concern:

While I found Julie Zhuo’s thoughts (in “Where Anonymity Breeds Contempt”, IHT 1 Dec 2010) interesting and generally spot-on, I don’t think Internet abuse should be labeled “trolling”.

“Troll” is somewhat racist, since it appears to have been used originally to refer to indigenous inhabitants of northern and western Europe by their conquerors, in what became fairy stories. It also conceals the basic evil of Internet abuse, the victimization, anonymous or otherwise, of others.

“Troll” is in fact used by Internet abusers and the merely ignorant quite freely. For example, in my experience, my literacy (often confused with verbosity), gets me labeled a troll even though I’m not anonymous, in a world in which in-group membership is often displayed in making grammatical errors. The fact that I sometimes reply to bullies in metrical verse does not help.

“Troll” is a catchphrase of abuse used by Internet bullies, anonymous or not. While it is used properly by Ms. Zhuo and elsewhere in the New York Times, it is on the Internet street used typically with a sneer, like “Jew” in Hitler’s Germany. Therefore, “troll” should be retired.

“Bully” is a more accurate term, for it’s not Internet abuse unless a person is harmed; system administrators are about the only sort of people to actually complain about harm to computers other than viruses. Merely taking up server space is not, in itself, a crime, save to a geek.

Furthermore, bullying is not a childhood phenomenon. It starts in the adult world; Phillip Roth, growing up on the mean streets of New York in the 1940s, noted how bullying followed international politics, with Italian kids whaling on Jews because the Fascist grownups back home did so.

Bullying has increased in recent years as a result of American aggression in Iraq, Russian aggression in central Asia, and the smash and grab bailout of the wealthy in 2008, followed by today’s assault on the middle class, all of which have relegitimated brutality towards the apparent weak.

Unfortunately, to label all or most Internet abuse “bullying” might make some people and some institutions uncomfortable, insofar as the latter can be comfortable or not. This is because bullying is a vector of power, the fear of which causes conventional behavior as opposed to speaking out. Like rape as an institution for the subordination of women, bullying doesn’t have to occur in an adult office as long as the threat exists of humiliation.

Kudos to Ms Zhuo’s Facebook for developing a safe way to meet your friends, which for the most part forces its users to take responsibility for their online conduct. But let’s call the major form of Internet abuse by its proper name.

Edward G. Nilges

George Tooker, “Subway”, 1950

Advertisements

How Google Enables Internet Bullying

Posted in Uncategorized with tags , , , , on November 28, 2010 by spinoza1111

The Internet has a new twist on the sleazebag motto: “there ain’t no such thing as bad publicity”. Vitaly Borker makes it a specialty to victimize women who order eye wear from him, which generates traffic, which increases his Google search rank.

Which is why I’ll do anything to stay out of software development. It imposes analytic philosophy’s silly world view on the life-world, one in which values are like opinions, and opinions are like assholes (everyone’s got one and they mean nothing, as in the Army). The whiz kids at Google are not able in fact to distinguish between negative and positive comments because that would not only involve parsing natural language, it would involve semantics, including the semantics of irony.

Very few of these whiz kids are even good at computer science per se and in my own experience, they are strikingly anti-intellectual and dismissive of “academia” as such save as a resource for certification and letters of recommendation from professors. Although the “Google search algorithm” is a great big Secret, it’s probably like the Wizard of Oz, a fraud, that overuses quantitative measures as opposed to even deep syntactical analysis.

I’ve never worked for Google, but I have worked for several software firms that claimed to be different, to treat technical employees fairly, to give them enough time to do a quality job, and to respect their intellect. In all but one instance, I found on the first day that all that “stuff” was to be set aside for “later” because there was, in fact, a crisis, usually manufactured by a suit, that was pissing his bespoke pants because an equally ignorant customer wanted something really stupid NOW.

In the exception company, the true spirit of openness, civility, and respect for computer science (which had made the company millions) was eradicated by the greedheads at the top in a few short years. They hired the sort of people who liked to have parties and steal equipment whilst insulting other people to their face in software reviews.

These folks used the same metrics, replacing quality with quantity, as are favored in the Google search algorithm. But in a rather confusing way, the one form of quantity they professed to dislike was “verbosity”, which they confused with ability to spell and construct a complete sentence, because this type of “verbosity” tends to let the cat out of the bag.

This is why I’m glad to be a teacher and artist, and no longer in software. This is why (having experienced last August the cold fact that brutality will also be present in teaching when organized as a business) I will hustle around Hong Kong and do what it takes to meet classes on time, prepared, and willing to get quite small children on parade. This is why I am trying to make up for 35 lost years of development as an artist.

Google needs to be investigated by a Congressional committee and to divulge its search algorithm, because its search algorithm is enabling criminal behavior.

The “hacker myth” is nothing more than the hope of the late IBM mathematician Herb Grosch that there could be “white hats” in the military industrial complex that spawned the mainframe. But Grosch wound up persona non grata at IBM because he wanted IBM to make it corporate policy not to support the construction of nuclear weapons with advanced computers, and this is a non-starter in a free market with a military source of demand permanently bolted on, such as is and was the US computer business.

My Dad met American mathematician Norbert Wiener in 1948. After Wiener’s experience in the primitive world of military math in World War I, Wiener simply refused to work in defense as did Grosch.

Grosch, Wiener and hero computer scientist Edsger Dijkstra all wound up in academia because they would not pervert their art. Dijkstra’s views, however, on the military industrial complex are pretty much unrecorded, since his issue was the sloppy way in which software, inside and outside of military applications, was created.

The Google search algorithm is probably just more slop. It seems to be based on Keynes’ description of financial markets as a beauty contest in which the judges select the winner as the girl most likely to be chosen by other judges, and “legal positivism” which (mis) characterizes the law as predicting what judges will do. Both ways of “thinking” are popular with people who basically hate thinking.

No algorithm, as far as I can tell, can sense the quality in Craig’s List or the Google home page, because both sites are “negative dialectics”. That is, the low-tech appearance of Craig’s List and absence of clutter on the Google home pages are meaningful only in relation to “history”, here, the short but real history of the Web.

In the case of Craig’s list, early dishonest and overly profit-oriented sites were garish and used gizmos including animation which made them easy to hack and got in the user’s way. They ignored the large number of Internet users who would rather be going to the beach than using the Internet, who lacked a clear path to a want ad. Craig’s demonstrates that these users are best served by merely neat arrays of words.

Likewise, even if its search algorithm enables BS, at least Google’s home page keeps it simple without hiding needed information, as does the overly simplified iPod.

But no automated tool could detect these qualities.

Therefore, all you need to do is generate buzz, references to your site, and Vitaly the Jerk has succeeded by creating just enough problems for his customers. Similar practices are in place at some budget airlines which mistreat customers; for example, Spirit Airlines delayed us for 6 hours at LAX in 2003, and when we (an interesting collection of ruffians, I am first to admit) complained, Spirit called the LAPD.

The destructive, me-first ethos of the military has escaped that sector and now invades ordinary business. Vitaly Borker learned as an emigre from Stalinism and in the US that nice guys finish last, and this is the result…and, Google enables, empowers, and turbo-charges his business.

For shame, Google!

Note: I won’t put in any Tag referencing DecorMyEyes so as to minimize this creep’s hits, but search engines can scan for keywords. Can’t be helped.

Do not buy eyewear from DecorMyEyes.

An exemplary string replacement function in C

Posted in Uncategorized with tags , , , , , , on February 9, 2010 by spinoza1111

I don’t much like the C programming language, but as part of my Internet anti-bullying campaign (including the campaign against the anti-Schildt swift-boating campaign mentioned elsewhere here in my blog), I am relearning it in order to make my points more effectively at the usenet/Google Group comp.lang.c.

This is where the instigator of the anti-Schildt swift boating (Peter Seebach) resides. He’d posted a piece of code purporting to replace %s by strings, but I noticed that in using the C library string.H, he’d been blinded by the poor implementation of strings in C.

He’d used a character find to locate the percent sign in two different places, and hadn’t bothered, by his own admission, to check for the following s. This meant that correcting the code involved making the same clumsy change in two separate places, guaranteeing further problems.

I discussed a real string replacement program, but actually thinking about “strings” independent of “character arrays with a Nul at the right” is beyond the day to day ken of many C programmers due to the subtle ways in which string.H blinds the soul.

I then demonstrated a straightforward replace() function, working collaboratively online with a few well-intentioned posters who were willing to find bugs.

In Swift Boat mode, Seebach of course interpreted this as “posting buggy software”. Since I don’t take shit, the fun was on at the link below.

It amused me to get back up to speed in C after many years (having helped John “A Beautiful Mind” Nash with C at Princeton in 1991) in order to prove my point: that today’s corporate programmers rarely program, are unqualified, and tend to be bullies, who see in others “the secret contour” of their own weakness, incompetence and fear.

See this link for the Google Group discussions. Warning: drink deep or drink not from this Pieran spring, for the discussion is a real free for all, and it is a big mistake to make conclusions after reading only a few posts. Indeed, the Thugs rely on superficial readings absent any sort of moral grammar, so that their favorite argument, the criminal’s tu quoque, can be used.

Here is the code of a replace() function. It is raising for me some interesting questions of theory and method which I shall pursue primarily in the thread from hell with updates here. In particular, C is strongly biased towards Western languages read left to right, and the VERY interesting problem of a string like “banana” and a replacement of ana by omo (bomona or banono?) needs to be addressed.

Even more interesting would be the relationship of the straightforward-if-crude algorithm used below and the Boyer Moore algorithm.

Also, an argument, germane to some possible real-world applications, could be made that “banana” contains TWO partly overlapping occurences of ana, and could be converted to bonono! Boyer Moore may anticipate this: I need to recheck this source.

But: the Google Groups discussion is why I’m delighted to be a teacher today. My father asked me what would happen when all the code was written. The answer seems to me to be that a eunuch priesthood of machine tenders, without qualifications, courage, spirit, or heart, would then tear at each other for sinecures maintained only because someone needs to hold down the null function in the corporation.

Here is the code.

// *************************************************************** 
// *                                                             * 
// * replace() demo                                              * 
// *                                                             * 
// * Demonstrates how to replace non-NUL-defined strings in C    * 
// * using a simple function, and bypassing string.h.            * 
// *                                                             * 
// * C H A N G E   R E C O R D --------------------------------- * 
// *   DATE     PROGRAMMER     DESCRIPTION OF CHANGE             * 
// * --------   ----------     --------------------------------- * 
// * 02 07 10   Nilges         Version 1.0                       * 
// *                                                             * 
// * 02 07 10   Nilges         Bug: partial matches not handled  * 
// *                           correctly: need to iterate search * 
// *                           for match.                        * 
// *                                                             * 
// * 02 07 10   Nilges         1.  Santosh suggested tests       * 
// *                           2.  Heathfield put the boot in re * 
// *                               including malloc              * 
// *                                                             * 
// * 02 07 10   Nilges         1.  Remove string.h use and code  * 
// *                               strlen by hand                * 
// *                           2.  Add comment block and comments* 
// *                               inline.                       * 
// *                           3.  free() storage                * 
// *                           4.  Use macro for testing         * 
// *                           5.  Bug: calculation of           * 
// *                               lngNewLength used incorrect   * 
// *                               index (intIndex3 instead of 2)* 
// *                               which caused a memory leak.   * 
// *                                                             * 
// * 02 07 10   Nilges         1.  Bug: Ike Naar test failed.    * 
// *                               At end of scan loop, main     * 
// *                               string pointer was not        * 
// *                               correctly updated from index3 * 
// *                                                             * 
// * 02 07 10   Nilges         Added new Santosh test            * 
// *                                                             * 
// * 02 07 10   Nilges         Added new Ike Naar test           * 
// *                                                             * 
// * 02 08 10   Nilges         1.  Added some new comments       * 
// *                           2.  Make "check for a complete    * 
// *                               match "structured" by means   * 
// *                               of a tested assignment        * 
// *                           3.  Get rid of "replace at end"   * 
// *                               evilness: the only time this  * 
// *                               flag is meaningful is in the  * 
// *                               LAST segment.                 * 
// *                           4.  Return replace count          * 
// *                           5.  TESTER macro assertion added  * 
// *                                                             * 
// * 02 10 10   Nilges         1.  Bug fix: in a partial match,  * 
// *                               the main scan index is set to * 
// *                               one past the end, which misses* 
// *                               full matches that start       * 
// *                               between the first character of* 
// *                               the partial match and its end.* 
// *                                                             * 
// *                               No longer updating the main   * 
// *                               scan index (ptrIndex1) to the * 
// *                               point of partial match        * 
// *                               failure: setting it one past  * 
// *                               the first character of the    * 
// *                               partial match.                * 
// *                                                             * 
// *                           2.  Line up expected & actual     * 
// *                               results per excellent         * 
// *                               suggestion (who made this?)   * 
// *                                                             * 
// *                           3.  After a partial match, update * 
// *                               the main handle search index  * 
// *                               (ptrIndex1) to the first      * 
// *                               occurrence of the handle      * 
// *                               character after the start of  * 
// *                               the partial match, or to the  * 
// *                               index of the unmatched char.  * 
// *                                                             * 
// * 021310     Nilges         Bug: failed to handle a one-char  * 
// *                           replace (of a by x in b) since    * 
// *                           we set ptrIndex2 to point to NUL  * 
// *                           which made it appear that there   * 
// *                           was a match. When the main index  * 
// *                           to the master string (ptrIndex1)  * 
// *                           goes off the end of a cliff, we   * 
// *                           needed to break out of the search * 
// *                           loop.                             * 
// *                                                             * 
// *                           This also entailed setting the    * 
// *                           target index ptrIndex2 to 0 at the* 
// *                           beginning of each search so that  * 
// *                           it is not erroneously used to     * 
// *                           indicate that there's an insert   * 
// *                           needed at the end.                * 
// *                                                             * 
// *                           I have also added additional tests* 
// *                           to verify that the code works     * 
// *                           when the string and target end    * 
// *                           at the same time.                 * 
// * ----------------------------------------------------------- * 
// *                                                             * 
// * "In the near future we shall have to live with the          * 
// *  superstition that programming is 'so easy that even a      * 
// *  Republican can do it!'"                                    * 
// *                                                             * 
// *                   - E. W. Dijkstra                          * 
// *                                                             * 
// *                                                             * 
// *************************************************************** 
#include <stdio.h> 
#include <stdlib.h> 
// ***** Segmentation ***** 
struct TYPsegmentstruct 
       { char * strSegment; 
         long lngSegmentLength; 
         struct TYPsegmentstruct * ptrNext; }; 
// --------------------------------------------------------------- 
// Calculate string length 
// 
// 
long strLength(char *strInstring) 
{ 
    char *ptrInstring; 
    for (ptrInstring = strInstring; *ptrInstring; ptrInstring++); 
    return ptrInstring - strInstring; 
} 

// --------------------------------------------------------------- 
// Replace target by replacement string in master string 
// 
// 
// Caution: the string returned by this function should be freed. 
// 
// 
char * replace(char * strMaster, 
               char * strTarget, 
               char * strReplacement, 
               long * ptrReplacements) 
{ 
    char * ptrIndex0; 
    char * ptrIndex1; 
    char * ptrIndex2; 
    char * ptrIndex3; 
    char * ptrIndex4; 
    char * strNew; 
    char * strNewStart; 
    long lngNewLength; 
    long lngCount; 
    long lngReplacementLength; 
    struct TYPsegmentstruct * ptrSegmentStructStarts; 
    struct TYPsegmentstruct * ptrSegmentStruct; 
    struct TYPsegmentstruct * ptrSegmentStructPrev; 
    lngReplacementLength = strLength(strReplacement); 
    if (!*strTarget) 
    { 
        printf("Error in calling replace(): target can't be null"); 
        abort(); 
    } 
    ptrIndex1 = strMaster; 
    ptrSegmentStructPrev = 0; 
    lngNewLength = 0; 
    *ptrReplacements = 0; 
    while(*ptrIndex1) 
    { 
        ptrIndex0 = ptrIndex1; 
        ptrIndex2 = 0; 
        while (-1) 
        { 
            // --- Check for (one character) handle 
            for(; 
                *ptrIndex1 && *ptrIndex1 != *strTarget; 
                ptrIndex1++); 
            if (!*ptrIndex1) break; 
            // --- Check for complete match while remembering the 
            // --- last position of the handle 
            ptrIndex4 = 0; 
            for(ptrIndex2 = strTarget + 1, 
                ptrIndex3 = ptrIndex1 + 1; 
                *ptrIndex3 
                && 
                *ptrIndex2 
                && 
                *ptrIndex3 == *ptrIndex2; 
                ptrIndex3++, ptrIndex2++) 
                { 
                    if (*ptrIndex3 == *strTarget 
                        && 
                        ptrIndex4 == 0) ptrIndex4 = ptrIndex3; 
                } 
            // End test: check complete match, update main ptr past 
            // partial match while checking for end of loop 
            if ((!*ptrIndex2 ? ((*ptrReplacements)++, -1) : 0) 
                || 
                (!*ptrIndex3 ? (ptrIndex1 = ptrIndex3, -1) : 0)) 
                break; 
            // Update the main search pointer 
            ptrIndex1 = (ptrIndex4 == 0 ? ptrIndex3 : ptrIndex4); 
        } 
        // --- Create new segment 
        if (!(ptrSegmentStruct = 
              malloc(sizeof(struct TYPsegmentstruct)))) 
            abort(); 
        ptrSegmentStruct->strSegment = ptrIndex0; 
        ptrSegmentStruct->lngSegmentLength = 
            ptrIndex1 - ptrIndex0; 
        ptrSegmentStruct->ptrNext = 0; 
        if (ptrSegmentStructPrev != 0) 
            ptrSegmentStructPrev->ptrNext = ptrSegmentStruct; 
        else 
            ptrSegmentStructStarts = ptrSegmentStruct; 
        ptrSegmentStructPrev = ptrSegmentStruct; 
        // --- Update mallocation length 
        lngNewLength += ptrSegmentStruct->lngSegmentLength + 
                        (ptrIndex2 && !*ptrIndex2 
                         ? 
                         lngReplacementLength 
                         : 
                         0); 
        // --- Get past end of target string & iterate 
        if (*ptrIndex1) ptrIndex1 = ptrIndex3; 
    } 
    // --- Allocate just enough storage for the new string 
    if (!(strNewStart = malloc(lngNewLength + 1))) abort(); 
    // --- Build the new string whilst freeing the list 
    strNew = strNewStart; 
    ptrSegmentStruct = ptrSegmentStructStarts; 
    while (ptrSegmentStruct) 
    { 
        for (ptrIndex1 = ptrSegmentStruct->strSegment, 
             lngCount = 0; 
             lngCount < ptrSegmentStruct->lngSegmentLength; 
             ptrIndex1++, lngCount++, strNew++) 
             *strNew = *ptrIndex1; 
        if (ptrSegmentStruct->ptrNext 
            || 
            ptrIndex2 != 0 && !*ptrIndex2) 
            for (ptrIndex1 = strReplacement; 
                 *ptrIndex1; 
                 ptrIndex1++, ++strNew) 
                 *strNew = *ptrIndex1; 
        ptrSegmentStructPrev = ptrSegmentStruct; 
        ptrSegmentStruct = ptrSegmentStruct->ptrNext; 
        free(ptrSegmentStructPrev); 
    } 
    *strNew = '\0'; 
    return strNewStart; 
} 

// --------------------------------------------------------------- 
// Statement-format test macro 
// 
// 
#define TESTER(resultPtr, master, target, replacement, expected, 
expectedReplacements, replacements) \ 
{ \ 
    printf("Replace \"%s\" by \"%s\" in \"%s\"\n", \ 
           (target), (replacement), (master)); \ 
    printf("Expect \"%s\":\n       \"%s\"\n", \ 
           (expected), \ 
           resultPtr = replace((master), \ 
                               (target), \ 
                               (replacement), \ 
                               &(replacements))); \ 
    printf("Replacements expected: %d: replacements: %d\n", \ 
           (expectedReplacements), \ 
           (replacements)); \ 
    if (!(strLength(resultPtr) \ 
        == \ 
        strLength(master) \ 
        + \ 
        (strLength(replacement)-strLength(target)) \ 
        * \ 
        replacements)) \ 
        printf("Assertion failed\n"); \ 
    printf("\n\n"); \ 
    free(resultPtr); \ 
} 

// --------------------------------------------------------------- 
// Main procedure 
// 
// 
int main() 
{ 
    char *ptrResult; 
    long lngReplacements; 
    printf("\nReplace\n\n\n"); 
    TESTER(ptrResult, 
           "1111123bbb1111123bbb11123bb11111231111112111111123", 
           "111123", 
           "ono", 
           "1onobbb1onobbb11123bb1ono1111112111ono", 
           4, 
           lngReplacements) 
    TESTER(ptrResult, 
           "bbb1111123bbbbb", 
           "111123", 
           "ono", 
           "bbb1onobbbbb", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a stupid error", 
           "stupid error", 
            "miracle", 
           "a miracle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a stupid error", 
           "stupid", 
            "miracle", 
           "a miracle error", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "the stupid error", 
           "the stupid error", 
            "a miracle", 
           "a miracle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "the miracle", 
           "the", 
            "a", 
           "a miracle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a miraclsnirpKamunkle", 
           "snirpKamunkle", 
            "e", 
           "a miracle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a miraclesnirpKamunkle", 
           "a miracle", 
            "", 
           "snirpKamunkle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           " a miraclesnirpKamunkle", 
           "a miracle", 
            "", 
           " snirpKamunkle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           " a miraclesnirpKamunklea miraclea miracle", 
           "a miracle", 
            "", 
           " snirpKamunkle", 
           3, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a miracle a miraclesnirpKamunkle a Miraclea miraclea 
miracle", 
           "a miracle", 
           "", 
           " snirpKamunkle a Miracle", 
           4, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a stupid errord", 
           "stupid error", 
           "miracle", 
           "a miracled", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a stupid errod", 
           "stupid error", 
           "miracle", 
           "a stupid errod", 
           0, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a sstupid error", 
           "stupid error", 
           "miracle", 
           "a smiracle", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a stupid errorstupid error", 
           "stupid error", 
           "miracle", 
           "a miraclemiracle", 
           2, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a stupid error stupiderror", 
           "stupid error", 
           "miracle", 
           "a miracle stupiderror", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "bbbbbbbbbb", 
           "b", 
           "a", 
           "aaaaaaaaaa", 
           10, 
           lngReplacements) 
    TESTER(ptrResult, 
           "In the halls of R'yleh great %s lies dreaming", 
           "%s", 
           "Cthulu", 
           "In the halls of R'yleh great Cthulu lies dreaming", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "%s%s%s%s%s%s", 
           "%s", 
           "Cthulu", 
           "CthuluCthuluCthuluCthuluCthuluCthulu", 
           6, 
           lngReplacements) 
    TESTER(ptrResult, 
           "banana", 
           "ana", 
           "oat", 
           "boatna", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           " a stupid errorstupid errorHeystupid errors", 
           "stupid error", 
           "+", 
           " a ++Hey+s", 
           3, 
           lngReplacements) 
    TESTER(ptrResult, 
           "foo barfoo barf", 
           "foo bar", 
           "bas", 
           "basbasf", 
           2, 
           lngReplacements) 
    TESTER(ptrResult, 
           "abab", 
           "ba", 
           "ba", 
           "abab", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "abab", 
           "bab", 
           "boop", 
           "aboop", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "banana", 
           "ana", 
           "ono", 
           "bonona", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "a", 
           "x", 
           "b", 
           "a", 
           0, 
           lngReplacements) 
    TESTER(ptrResult, 
           "x", 
           "x", 
           "b", 
           "b", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "egregious", 
           "egregious", 
           "egregious", 
           "egregious", 
           1, 
           lngReplacements) 
    TESTER(ptrResult, 
           "egregious", 
           "egregious", 
           "x", 
           "x", 
           1, 
           lngReplacements) 
    printf("\n\nTesting complete: check output carefully: \"Assertion 
failed\" should not occur!\n\n"); 
    return 0; 
} 

On the Internet Creeps, a fest-schrift to Emily Dickinson

Posted in Uncategorized with tags , , on February 9, 2010 by spinoza1111

There is a certain sort of Creep
Who creeps, along the Way
As the shadows gather
At the end of day.

His Traffic is in lies
Rumor, and surmise
His purpose, to give Pain
The light, he does disdain.

Hellish hurt he tries to give
But he does not Succeed
The Knight who has a mission
To daemon pays small Heed.

Edward G. Nilges 9 Feb 2010

Wikipedia’s racist bullying redux

Posted in Uncategorized with tags , , on January 6, 2010 by spinoza1111

Interestingly, I am getting comments from a source whose email address may be Jimmy Wales. Wales is the founder of Wikipedia, although he didn’t invent wikis (Dr Larry Sanger did that). The email source looks bonafide, although I lack the expertise to verify this. Another individual is sending from a crudely-misspelled email address thinking to fool me, but that fool has gone to spam heaven. So perhaps we have a dialog below between Jimmy Wales and myself, although I am not at all impressed with his lack of diligence or thought; for example, the Wales-apparent claims that I meant that my patronym was transformed into the mild ephitet “Niggler”, whereas the problem is that it is meant as a racial slur.

Last year, I spoke about this issue on YouTube.

I’ve never understood how people can consider themselves mature professionals when they can post something like the header line of the following discussion on the Talk page for the IP account which I used to access wikipedia:

It’s the same sort of game as transforming the name of computer author Herb Schildt into “bullschildt”. When adults do it, they replicate the “nightmare of childhood” and this is Fascism if in the small.

Basically (as Erich Maria Remarque wrote in “All Quiet on the Western Front”) a generation has the right to expect to grow into an adult world in which reason is used communicatively (in Habermas’ sense). Remarque felt his generation betrayed by the Western front, but subsequent generations have also been betrayed in smaller ways.

In the small, the creation of a socially unnecessary class of protected technicians who don’t have to grow up because their companies are addicted to data systems which add no value (once competitive advantage is removed when all companies have adopted modern data systems), along with the anonymity of actual children, convenience store clerks and thugs, is this type of destruction of the promises of adulthood, which are (were) connected with betrayed hopes of social progress.

I have a right not to have to deal in the slightest with transformations of my patronym into racist slurs. The techies who pull this stunt can deny a racist meaning all they like based on my white skin, it remains offensive.

In technology, there was a brief promise of Habermasian-communicative adulthood in the 1970s in the form of the ethics of the structured walkthrough, as there was in the original “free software” movement of Richard Stallman.

But despite the fact that Adorno was Habermas’ mentor, the latter failed to see that there’d be an interface, and therefore a dialectic, between communicative and instrumental reason.

I saw this happen at so humble a venue as Montgomery Ward in 1976, when a manager sat down in our “structured walkthrough” and said, “I know that managers aren’t supposed to be present in structured walkthroughs. Too bad.”

I saw the dialectic: almost as soon as the liberatory concept appeared it immediately had to justify itself by promising to make the rich, richer, not by promising a better and more humane workplace. The issue of a humane workplace was off the table in Chicago because our being paid was supposed to have indemnified management, and allow it to be as perverse and barbaric as it liked.

Likewise, wikipedia changed almost overnight in 2006 from “be bold” to the frightened, and frightening “politeness” of American white males (combined with all sorts of international variants including the unaddressed racism of upper- and middle-caste men from India, of the sort who would casually put down their countrymen at IBM Waterbury, in my experience, with ephitets such as “junglee man” not meant at all humorously).

This politeness somehow permits the abuse of marginals and outliers (including people more literate than the median) without limit as seen above, while being used to prevent them from responding even on “talk” pages.

A note on the mercy of the night

Posted in Uncategorized with tags , , , on December 25, 2009 by spinoza1111

Oh you men who think or say that I am malevolent, stubborn, or misanthropic, how greatly do you wrong me. You do not know the secret cause which makes me seem that way to you. From childhood on, my heart and soul have been full of the tender feeling of goodwill, and I was even inclined to accomplish great things. But, think that for six years now I have been hopelessly afflicted, made worse by senseless physicians, from year to year deceived with hopes of improvement, finally compelled to face the prospect of a lasting malady (whose cure will take years or, perhaps, be impossible).

– Beethoven

…fighting one Peter Seebach at comp.lang.c.moderated on Google Groups. He’s the author of the Vicious Tirade “C: the Complete Nonsense” which went viral and damaged Herb’s reputation.

But I am well aware that to defend a “reputation” is an antique gesture. Many younger corporate types don’t understand the concept.

It’s connected with the disappearance of the positive use of the word “man” as in “act like a man”.

“Man” does not and has never defined what it is to be human. “Men” have always been the first to acknowledge the other gender. At our best, we protect and shelter women when they most need it. And despite all their claims that they don’t, there are times when they do, such as birthing time. Indeed, “feminist” women are if anything far more demanding at this time.

But some sort of sick misunderstanding of feminism, coupled with widespread divorce and family abandonment by men of their families makes younger “men” contemptuous of the very idea of a “man’s” reputation.

The problem was that in the 19th century, a man was a standalone signifier accidentally associated with a wife and children, and represented them even in the electoral system, in which it was said that his vote represented the interests and desires of his family.

Today, it seems O.K. for people to say and perform the vilest sorts of things with respect to individual reputations. For example, I found a claim last night by one Richard Heathfield that I was never permitted to post on the prestigious and competently moderated ACM based group “Forum on Risks to the Public in Computer Systems”.

It was a malicious lie intended to defame and stupid because so easily refuted; a search of the archive finds 37 moderated and accepted submissions.

Nonetheless a post-human troglodyte “freedom” demands that I take this kind of shit lying down. On wikipedia, people who seem to me to be deficient are actively proud of their ignorance, as if it gives them objectivity, and pictures of “wikipedians” are frightening, for they seem doughy, vacuous, even mildly retarded en masse. And…this is confirmed when you discover 14 year olds and convenience store clerks “editing” your content.

I’ve seen software, programming languages, computers and corporations become more valued than human beings as such, with older men taking the brunt of a generalized, post-human lack of decency. Don Delillo, in Falling Man, has a divorced older man get a call from an ex-wife after 17 years of silence on Sep 11. She wants him to turn on the TV after having refused calls from him about their kids for 17 years as if her need to pass on an event he’d know about was more important than his contact with their children.

Wow, I thought, he’s got it down perfectly. That’s because after I relocated to China, I made a real effort, as I’ve made for thirty years, to maintain respectful contact with my former wife and loving contact with my now-grown children. But, in 2007, my former wife decided without explanation to refuse all calls and leave all email unread.

Like a prisoner in Guantanamo, I was not informed of the “charges”; when I asked her why she had made that decision after a period of time in which we were gradually healing our wounds by the exchange of simple gifts and cards at birthdays and Christmas, she refused to make any such explanation. It had, possibly, something to do with writings I’d posted on the Internet, although in 2000 (when I published a short story in a North Carolina literary magazine), I’d asked my former wife if she minded my artistic use of our marriage…and she’d said she did not.

Nonetheless, when she wanted to inform me of something, like the woman in Don DeLillo’s book, she would send me email in her old pattern: this was to inform me of a disaster involving my eldest son, who she has long mythologized as a fuck-up despite his stellar SAT scores and his ability to love, the latter being evident in a higher level of decency towards his father (but not much higher) and a brave openness towards finding love.

My kids followed her lead as always and suddenly I found myself the victim of treatment that seemed astonishingly cruel. My eldest son accepted my payment of his tuition for classes he needed to qualify for a job on the understanding, or so I thought, that he’d stay in closer touch through Facebook, but after the payment cleared, he said he’d made no such promise.

My younger son traveled several times to Asia (Laos, Vietnam, etc) without stopping in Hong Kong to see his father, or even explaining his reason for this. I have maintained contact with my own father consistently despite far harsher treatment that continues to this day (for example, after I took care of my father in an illness, he informed me that I was “worth less to him than his car”).

But when I sent an email to my younger son inquiring as to the reasons for his treatment, he replied by saying that he just didn’t care to see me but had no reason for this choice, it being his to make and not explain. When I persisted, he used my persistence as evidence of unreasonable behavior which retrospectively justified his initial coldness, in a sort of time warp (I’d grown accustomed to this years ago as a mechanism used by my former wife; they frustrate your Will, you respond either by flying off the handle or with calm prolixity, and either response, not being seen on TV from the TV dad, justifies their initial behavior).

For let us not speak falsely now the hour is much too late

Since I’m functional in other areas of life, able for example to set down in a foreign city and get a work permit and a job, and write a book, I don’t think I’m crazy, although (like my father, or Campari) I might be an acquired taste. But at one point last year, after I wrote a hand letter and a corresponding email from Paris on vacation to my former wife asking her to explain her behavior, she embedded what seemed to me my own grammatical and reasonable sentences in her reply as examples of unreasonable language.

Whoa…Gaslight time, as in the old movie where the guy monkeys with the gaslight to persuade the girl she’s crazy.

But it’s true that my language is sufficiently complex that it seems to hurt others. I feel like Beethoven, clumsily trying to have a semblance of a family relationship with his nephew Karl but failing because of his intensity, and in the final analysis, I don’t like hurting people.

At one point, I tried to go through my sister to arrange some sort of modus vivendi with the kids. I thought, silly me, wouldn’t it be great if my elder son communicated as a Facebook Friend and my younger son, the world traveler, came to Lamma Island. I asked my sister to be a go between.

I received an angry and off-topic tirade which implied, at least, that my internet postings were the problem, or maybe my effeminacy, or something. It was incredibly painful to get this, since it reminded me brutally of the many times when I’d go to my Mom for emotional support only to find her overwhelmed, and convinced that boys needed to be low-maintenance little men who would suck it up at an early age; I was bullied in the backyard of the family home with my Mom looking on, calling me a physical coward while sipping another Martini.

[Cue A minor string quartet which has just kicked in. Beethoven takes the pain and injects it in us straight here. The Mercury astronauts were taking off into space, and my Mom also informed me that I would never make an astronaut. The cruelty was occasioned by the fact that a larger local boy, whose parents were guests of my own and likewise swilling down the booze, was beating the shit out of me, and I was crying. He is now a Chicago millionaire. He half killed another neighborhood kid but it was hushed up.]

[Also cue Good Will Hunting, with Robin Williams saying over and over again, “it’s not your fault” to Matt Damon.]

This explains my Internet fighting, although my Internet fighting is, I believe (I believe) reality-based. I looked over the original document about Herb Schildt and verified that his errors were venial. I searched for corroboration and found instead that everybody was mentioning Seebach’s document, and a strangely similar document by one Clive Feather about another book by Schildt, and this was the sole source of information for the hate-Schildt crowd.

I found that the Internet echo chamber had created a “conspiracy theory” about Schildt.

But what’s interesting is the rapid evolution of bullying. Adorno, in his passage on the nightmare of childhood in Minima Moralia, says it evolved from childish pranks and tormenting in Wilhelmine Germany to grown men, regressing to childhood under the stress of war and inflation in Weimar.

Whereas in America, bullying evolved from a heavily testosterone-charged boy thing where one could get seriously injured in real fights (as I was in a fight on Plum Grove Road in Rolling Meadows in 1965 after “standing up” for a runty friend who was being tormented on the school bus) to a more emotional-abuse process, where boys, and men who haven’t grown up (and who’ve been in my opinion over-mothered and absent-fathered) use texts to abuse people, with no apparent upper bound on malice.

“Fight Club?” It’s a fantasy. Young men wouldn’t have the balls today to set up a real Fight Club, and they flee even email attempts to resolve online issues. My days of getting into real fights are probably over, although I got into a few rather jolly dust-ups back in Chicago when I was still drinking, ten years ago.

I need to go out for a Christmas Night run. Yes, I am Alone At Christmas and in the play-book, I’m supposed to Drown My Sorrows in Strong Drink.

Fuck that shit. Instead, I am going out into the great mercy of the night for a run.

Tough Baby

Posted in Uncategorized with tags , , , on December 3, 2009 by spinoza1111

When will I learn my lesson?

Internet “chat” rooms are for losers. In my experience, they tend over time to become dominated by failed pedants and people who tend to read the pedant’s opinions and find isolated and outlier targets, mindlessly repeating the most pedantic views. The isolated-outlier, especially if she manifests originality or creativity, is then forced to dance herself to death on multiple fronts.

At this and this link, I’d decided to defend a target of bullying, an older gentleman with a strange, but harmless Swedenborgian theory about Masters who throughout history have shown us the way.

I decided to reply almost completely in verse, roughly but not completely following traditional forms.

One of the pedants, distinguished only by publishing some obscure work analyzing Shakespearean metre using questionable and post-hoc rules, made the all-purpose claim that the poetry didn’t “scan”, which was picked up by the cybernetic mob.

However, when a few mob members tried to post some hatefilled poems in return, they were laughably short and unrhythmic owing to the limited vocabulary and aliteracy of the posters.

I kept on posting more and more pastiches of Pope et al. without bothering to do much technical analysis of scansion, rather reading the poems out loud to make sure that when read by one with a literate and global-English accent, they had some sort of beat, even if that might change with the meaning-direction of the poem.

For example, here’s a response to the all-purpose charge that Adorno, writing on reversal of subject and object (in the context of showing how “objective” and administrative rules replace engagement with substance as in the case where some post-facto “rule” is mechanically applied to poetry), was a left wing verbosenik.

Let me see if I can your logic haruspicate
And Ignoto, I think I can your “logic” scry.
If a text an issue doth in any way complicate
Of course this must be a left-wing conspiracy.
My words offend the Common Man
The self-appointed leaders of the gang:
They cannot parse can only scan
And favor violence as in bang, bang, bang.
Clearly we cannot have this,
It is not at all an entertainment
We need our pitchforks and our torches we miss
And someone needs his punishment.
“I am Cinna the poet” was Cinna Minor’s cry:
“Kill him for his bad verses” was the mob’s reply:
For to a mob, whether Roman or cybernetic
ALL poetry is bad amidst the universal wrack.

Now, Houston, we may have a problem, because in the first line I use a word I’ve never heard spoken, and have seen only once: meaning, “to determine the future by occult means” it occurs in TS Eliot’s Four Quartets:

To communicate with Mars, converse with spirits,
To report the behaviour of the sea monster,
Describe the horoscope, haruspicate or scry …

The first line’s metre assumes that the stress on haruspicate is on the second syllable, not because I wish to conform to a predefined metrical pattern (one that on first use was “free verse” in the sense that the great poets who invented, for example, the “Shakespearean sonnet” did so by violating the rules of the previous form) but because it sounded right when read in an urbane voice.

But, of course, this is not the typical sort of person you’ll find on Google Groups, whether he’s a thought-leading pedant or a mob-following thug, the two predominant groups. He may have never seen the word.

For this reason he will use, following the leading pedantic thugs, a pastiche of academic language to mask his ignorance and find the most apt rhymes and the best metre unpleasant, either because he reads it wrong or skips reading it because of its density on the page…something even the “educated” classes today, perhaps especially the “educated” classes since so much of “education” today is mere certification of docility. His pastiche will claim that it’s wrong to rhyme “Pindaric” with “satiric”.

In the demi-sonnet, I refer to Cinna the poet, fully aware that this is a detail of a Shakespeare play which even British A-level students might miss: in search of Brutus and the conspirators, the Roman mob come upon Cinna who they suppose the conspirator, Cinna:

Cinna: Truly, my name is Cinna.
Mob: Teare him to peeces, hee’s a Conspirator.
Cinna: I am Cinna the Poet, I am Cinna the Poet.
Mob: Teare him for his bad verses, teare him for his bad Verses.

All poetry is bad, and it seems a fraud to rhyme Pindaric and satiric. So, Cinna the Poet’s verse is bad to a mob.

My verse wasn’t good: I merely write in it as an experiment in communication (one that I’ve decided to terminate) and also because in my writing classes I make students write verse, and I refuse to be like one of those gym teachers who’d make us run a mile, and sic the bullies on the laggards, who themselves were unable to run a step. But it was much better than the vile doggerel that was fashioned in reply.

Astonishing levels of ignorance in other words existed, and I bailed when the most vicious and out of control respondent posted a crude “poem” claiming I teach “Engrish”, of course a racist slur on my students.

The crudest kind of language and threats were pure projection, for anyone (and I do not except myself) who participates in Internet conversations is a subaltern victim of social anomie and isolation. Therefore I was characterized as what the posters obviously feared and felt themselves to be: the male horror-figure, the “loser” that most men today feel themselves to be owing to the objective fact that people in developed countries are being steadily deprived of economic and social rights.

Adorno keeps on coming back because he encountered early forms of this phenomenon, which is unnoticed because it lubricates dominance and subservience in organizations, but in “tough baby” in Minima Moralia he saw the character armor of 1930s man as constituted by cigar smoke, shaving lotion and leather, whereas today the character armor is of course completely different.

It is the presumption that

(1) Any question can be resolved by mathematical rules that can be administratively applied

(2) However, smart cookies and tough babies know how to game these rules

(3) If the rules are shown to be phony, someone must be bullied to preserve the applicability of the rules

(4) Above all, no-one shall claim special insight in this country of the blind: the one-eyed man isn’t king, but he is the Chosen One in a reversion to barbarism (started in Modernism by Stravinsky): he shall dance himself to death while we watch

The mythos is one of freedom, the reality is one of slavery. The Internet enables widespread theft of intellectual production (as opposed to Holy Private “intellectual” Property) and norms the deviant as long as the deviant directs abuse down rather than criticism up.

Because of corporate surveillance, where people who lose discussions on points are certain to search for the company employing or contracting with the Chosen One and threaten to get her fired, the “safe” personality on the Internet is the anonymous Tough Baby, the normed Subject who in order to be certified as a Subject, has made himself into an Object by any one of the universal processes of apprenticeship, in which Tough Baby learns to game the rules, not questioning them in any case, but cynically conforming.

It fucking breaks my heart to see my own sons effectively conforming to the Tough Baby code, especially the younger, who never blogs sincerely. He’s a music lover, but we know this only because of his rather perceptive comments on bad or commercialized bands.

Nothing can be said seriously, least of all anything like “I miss my father” or even “I have a father”.

It reminds me of the thought-leaders in a university bookstore where I worked to help my own father pay for my schooling. One had lost HIS father because his father had asked to speak with him: he couldn’t be bothered: so his father went into another room and blew his brains out.

He was a thought leader because he could take nothing seriously, or so it seemed. Mere humanity to him was a joke, and more human individuals admired his “cool”, not seeing (or seeing, but not caring) that even in 1971, corporations were preparing to use coolness to keep people in line; coolness today is a new model form of what Fromm called character armor and the inability to love.

We are, I understand, supposed to use irony to understand that Tough Baby “really” has a heart of gold, merely “talks that way” because he’s been wounded, and that we should just reverse what he says in a logical operation to discover his essence, his humanity. Women do this all the time, and it gets their ass kicked. Of course, the Nazis proved, as the ultimate Tough Babies, that this doesn’t always work, even though they were interpreted in Weimar as speaking hyperbolically and ironically.

Mike Godwin thinks it’s some sort of hoot that on the Internet the probability of being compared to Hitler converges to unity, and if it’s a joke and a fantasy that if Fascism keeps coming back as a perversion of socialism, and domination is delegated to the dominated, we should not all become either Hitler, or else Stravinsky’s Chosen One in le Sacre who dances herself to death rather than become part of the mob.

But that’s what people become, in my experience, in open-access chat on the Internet. Because of corporate surveillance, they mask themselves as the Tough Baby without illusions who never makes mistakes, and who knows all the administrative ins and outs. By finding the Chosen One they reassure themselves that they’ll survive by ensuring that others go to the gas chamber first.

One winds up being stalked, obsessively. You represent the vulnerability people fear, a vulnerability that only starts with fear of physical death but ascends to eternal damnation (where God himself becomes the biggest baddest motherfucker on the block, who’s set his face against all the little losers). You represent ultimate risk: of being the one-who-is-wrong, the Chosen One, the Isolated One, the Blasphemer, in a society regressing past the memory of William Blake’s realization that we must take the risk of living on its terms. God hates fags, and he hates you. Plus you’ll never get a job.

I am hounded by people who see in me a broken Coriolanus with a residual humanity who’s not afraid to be vulnerable, to make mistakes, and to learn new things. I am abandoned by my children who are being made victims by a sick and dysfunctional society which never gave them a fair chance because they were raised by a single mother. But ten years ago, I stopped drinking and traveled to Springfield to see Lincoln’s grave, and this is what Lincoln said:

I am not bound to win, but I am bound to be true. I am not bound to succeed, but I am bound to live by the light that I have. I must stand with anybody that stands right, and stand with him while he is right, and part with him when he goes wrong.