Tuesday, September 25, 2001 04:13:16 PM Yesterday a Slashdot observer reported that the Gartner Group is recommending businesses move away from IIS servers for the moment. The rationale is that the product is a favorite target for virus writers, and that its users have become a "patch of the week" club. Much as I like to celebrate the victories of UNIX over MS Windows, let us not forget that Linux servers have also been attacked by virus writers. Once writers' attention turns to Linux, it will also be a "patch of the week" club. Perhaps the problem lies not so much in the products as in the way they are advertised. It seems to me that Microsoft has tried to fool the purchasing public into thinking that Windows is a plug-and-play, self-configuring operating system, that needs no human maintenance. Every commercial Windows network I have encountered has been a rat's nest of random connections for the most part, little understood by those who have been charged with tracking it. On top of the misleading impression that Windows networks need no maintenance is the little training that corporations invest in their system administrators. A common misconception is that the MCSA and MCNE certificates are achieved by memorizing which menus to drag and which buttons to push. This misconception has not propagated to the UNIX community, primarily because of the the UNIX publishers' blatant disinterest in making administrative tools flexible and easy to use. Another problem seems to be that managers of Windows groups seem to believe that all knowledge can be obtained through public announcements from Microsoft itself, while managers of UNIX groups generally acknowledge that knowledge is where you find it. Linux development projects are far from monolithic, black-box enterprises. In The Cathedral and the Bazaar, Eric Stevens eloquently explains the difference between the two cultures, and advocates the open culture over the skunkworks culture. I didn't have to work on an open project to see the difference. At the world's largest banking association I found the black-box, skunkworks culture in all its glory. A Windows administrator gave a presentation to my system administration group revealing a project he had worked on for several months. It would allow the administrators to keep a central repository of required software, and on a clock-driven schedule it would poll a list of systems and determine whether they had the right software. Then if the systems had software that was out of date, or if they didn't have the software, the copies in the repository could be pushed out to the individual workstations, updating them automatically. Best of all, he had written the product in MS Visual C++, so he was confident he could port the product to UNIX in a month or so. Were we UNIX administrators interested? Thanks, but no thanks. In the UNIX world that product is known as "rdist," and it's been a standard part of the operating system since 1983. And unlike SMS, it's free. Surprisingly, at Microsoft itself I had a chance to see the open model at work. I was consulting with a subsidiary whose infrastructure was based on FreeBSD. In the process of developing a network administration tool that could manage the network without human intervention (a holy grail, it seems), I was invited to collaborate with and compare notes with other members of the company, universities doing research on the subject, and the internet community at large. Along the way I learned much more about system administration software capabilities than I could have were I to design my own. Some of the ideas I encountered went far beyond the scope of my project, and had already been implemented by other people. My task, rather than a programming project, became a product selection, installation, and configuration project. Were the Windows administrators interested? Yes, in-house and worldwide. The product that the subsidiary settled on had versions for Windows under development at the time. It could be applied to both UNIX and Windows, without an additional coding and porting effort on my part. Viruses like Melissa, I Love You, and Nimda, should wake up the business world to the fact that MS Windows is not a plug-and-play, no-human-intervention operating system, and that companies who use computer networks should hire staff computer specialists, regardless of the line of business the companies are in. They hire accountants and lawyers, don't they? There's always the staff bookkeeper, usually at the board level. That person's title is sometimes CFO. It's time for businesses to realize that the computer vendors are not on this earth to maintain their businesses (.NET aside), and that they need to take responsibility for running their own companies. Information systems managers need to give their own employees time and energy to communicate outside the work group, in order to find out the rich selection of products and services available in the world. Reinventing the wheel has long been recognized as bad for programming; it is also bad for system administration.
Sunday, September 23, 2001 8:14:30 PM Well, here we have it. On the same day that SF Gate publishes "Recession is 'Inevitable'," it also publishes "Silicon Valley Goes to War." It seems that although the economy may shift, its direction will not be universal. There will be opportunities in defense, security, biotech, artificial intelligence, communications, and internet technologies. Perhaps that's overstating the obvious, but it doesn't hurt to remind ourselves that these needs will not disappear. In Rich Dad, Poor Dad, Robert Kiyosaki tells the story of his two fathers. In the 1960's there was a general fear of nuclear warfare. One father chose to hold his money in savings accounts, not investing in anything for fear of losing it. The other father looked at the economic climate, and found that many people were buying fallout shelters. The second father decided to build fallout shelters for other people. Guess which one came out ahead at the end of the decade. In the coming years, which economy do you choose to be in?
Monday, September 17, 2001 10:13:00 AM PDT The noon report from the stock markets looks very successful! At the opening bell volume appeared to be moderate, and the new circuits appeared to have handled the trades. Granted, a lower capacity would have the same appearance at opening, but the volume tailed off quickly. My earnest congratulations go to the systems engineers, system administrators, network administrators, programmers, and construction workers who worked in New York the past week. Certainly, they had to suppress feelings of dismay, disgust, and horror as they worked incessantly (24x7, overtime) from Wednesday through Sunday putting into place new circuits, new servers, and new software. Human communication was put to the test as well. Large projects in the financial industry are notoriously hard to coordinate, yet the new stock exchange was ready for today's trading. The work of these highly skilled and dedicated people should not be underestimated. Today's business relies on electronic trading, as the business of the 19th century relied on the railroads. Programmers fulfill the role of the boilermakers; system administrators fulfill the role of the oilers. After the worst disaster of the information age, the train left the station on time.
Saturday, September 15, 2001 7:08:21 AM The stock exchanges were destroyed. It was one of those articles that stuck in my mind, an article that hit me around 10am. I had been web surfing in the early morning, before going to work, and by mid-day I was wishing I had bookmarked the thing. By the time I went back looking for it, the article had disappeared in the noise. Only my Windows 98 History folder could retrieve it. I had been wondering what was the point of attacking the World Trade Center. There were other symbols of financial power in the U.S. But the WTC had been attacked before, in 1993. Was there an Israeli consulate in there? Were there government offices that offended some political groups? It couldn't have been the movement against the World Trade Organization. It didn't even exist before 1995. Estimates of the damage included the destruction of several stock brokerages, numerous servers, and an undisclosed number of mainframes. Yesterday morning I saw the article. While most journalists were talking about consumer confidence, stock market volatility, and the damage done to the tenants of the World Trade Center, a CNN article got to the heart of the matter. In quiet, benign technical language, a stock exchange official told the story:
The executives weighed trying to reopen on a limited schedule Friday due to a desire to assure investors around the world of the strength and resiliency of the U.S. financial system. But they said they could not have completed the tests of the system that will now take place this weekend. "We would have tested if we had gone out any earlier but we would have tested on the fly and we didn't want to test on the fly," said Hardwick Simmons, chief executive of Nasdaq. "We will conduct a traditional capacity test to stress the systems' interconnectivity. It'll be an end to end look, a test without using live investor money or live investor orders."The stock exchanges were not just "down," they had to be rebuilt. More recent reports on the extent of the damage to the U.S. financial system were published by the Boston Globe and the Associated Press. [ 1/1/2003: All three articles have since disappeared from the archives --ddull ]Monday, September 03, 2001 10:55:20 PM When we're working with one file per function there's this little issue of the external variables. It seems that every file that uses the global variables, and there are a few, declares them to be "extern" and trusts that another file has actually declared them. One way to assure that they are actually declared is to declare all the global variables in the file that contains the main() function. That's nice, but it could mean that all the files use the project header file except main, which has to replicate everything without the project header. Maybe we need to borrow a concept from the folks who wrote the system headers. Take a look at /usr/include/stdio.h for a minute. At the beginning we see the following two lines: #ifndef _STDIO_H #define _STDIO_H At the end we see this line: #endif /* _STDIO_H */ These three lines wrap the rest of the stdio.h file. Once the C preprocessor has read the file the first time, _STDIO_H remains defined, and every time it is included after that, its body just gets skipped. I believe this is called "guarding the header file." Maybe we can use a concept like that for our own purposes, which at the moment include making sure that every file except the one containing the main() function uses "extern" declarations, and that the one containing the main() function doesn't use "extern" in the declarations. How about this: in the file containing the main() function, we'll use the following pair of lines: #define _MAIN_ #include "project.h" In the project header file we'll put all our extern declarations after an #ifndef _MAIN_ and all our declarations without externs after an #ifdef _MAIN_ directive. Or even better, how about putting this in the project header file: #ifdef _MAIN_ #define EXTERN #else #define EXTERN extern #endif Finish the file that contains the main() function with #undef _MAIN_ so the makefile can hum merrily through multiple files? Then we can use lines like EXTERN int i; in the header file for the global variables and only do it once.
Saturday, September 01, 2001 9:24:28 PM Some people can subscribe to this weblog. No, this is not a commercial. OK, maybe it's a commercial. In the age of mass-mailing and spam, who's to say it isn't. Even the sponsorship breaks on "public" radio and television are commercials, let's face it. When I started writing this web log my intent was to produce enough writing to get some commercial-grade material. Since then, my audience, content, and frequency have changed. That's my privilege; I'm the writer and I pay for the web space. I noticed that last month I only wrote three entries, one motivational and two technical. Alumni and students may get the most out of the technical entries, while aspiring programmers and system admins everywhere might feel more in tune with the motivational entries (which might be construed as good advice or as cocktail stories, depending on your point of view). Let's assume, just for fun, that you are a regular reader and you get frustrated by the irregularity of the updates. Wouldn't it be nice to let your computer check for updates on a regular basis, and let it notify you when the updates have occurred? "Yes, David," I can hear you saying, "I don't appreciate looking at the same time stamp every day, hoping that some day you will write again." OK, if you have Internet Explorer on Windows 98, here's how you do it: To make the current Web page available offline On the Favorites menu, click Add to Favorites. Select the Make available offline check box. To specify a schedule for updating that page, and how much content to download, click Customize. Follow the instructions on your screen. Note: Before you go offline, make sure you have the latest version of your pages by clicking the Tools menu and then clicking Synchronize. Earlier versions of IE and some versions of Netscape Navigator had a method called "channels." Windows XP promises to have something new in this arena. If you get them working, please drop me a note, and I'll add to this article.