Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 Internet speed test! ×
User Journal

Journal Journal: Thoughts on the latest Microsoft Worm (Part 1) 1

I wrote this in 1992 for rec.humor.funny. I've long lost my "original" digital copy, but as Linus says, real men don't make backups, they let the internet archive their work for them. Or, something like that.

From: (Steve Baur)
Newsgroups: rec.humor.funny
Subject: NEED HELP FAST !!!!!!!!!
Keywords: original, computer, smirk
Message-ID: []
Date: 12 Jul 92 23:30:04 GMT
Lines: 58

This composition is original, although the subject is not.
--------------------------- Cut Here---------------------------------
Newsgroups: comp.unix.questions
Subject: NEED HELP FAST !!!!!!!!!
From: (The Unknown Hacker)
Date: 7 Apr 92 12:55:45 EDT
Organization: UNIX Guru's R Us!

Sorry if this is a FAQ, but I've heard that a FAQ is something
everybody already knows, but since I don't know the answer to this
everybody doesn't know it, so it can't be a FAQ, so here I go ...

I've just created about the most Awesome change directory program ever
written. If it doesn't find the target directory through an
exhaustive CDPATH search, it uses the most sophisticated spelling
corrector (based on a thorough analysis of Webster's on-line
dictionary, and a list of the 1000 most common directory names on Unix
systems throughout the world) to try to find a match that way. If
that fails, then it tries to create the directory, and if that fails,
it opens /dev/uri-geller, and reads the mind of the invoker to try to
figure out what to do. It executes with almost 0 impact on system
resources, and is most truly the finest/tightest code ever to grace
the memory of a computer.

The only problem is that it doesn't work. No matter how I've tried,
once I've done that last chdir (and I've tried doing several identical
chdir(2)'s in a row to see if that would make the directory change
more "sticky" but that didn't work) I always end up where I started in
the shell I started my program in. I've tried setting the PWD, and
CWD variables with putenv(3), but that doesn't seem to have any effect.

What it really seems to me, is I need some way of telling the shell what
directory it's supposed to be in when my program is done executing.
Put more simply, I need a way of modifying the environment of a parent

E-mail responses only. There's too much noise on this bboard for me to
be able to read it. And HURRY!!! I need to turn this project in by 5pm
tonight !!!!

  | _ /| |
  | \'o.O' UNIX Guru in training |
  | =(___)= |
  | U Joe Programmer |
  | ACK.. THPPT!!!! |
  | |

- Steve (236/607 4/1/92)

This is obviously a joke. But it also illustrates a fundamental difference between Unix and most other systems. Unix has process isolation and without an extreme amount of cooperation between processes, it is impossible without system software bugs to modify the environment of another process without its permission. This is A Good Thing.

Commentary in Part 2.


Journal Journal: Microsoft Appreciation (but I still love Unix) 2

This is taken from a posting I did in a political forum (certain not to be popular here) on an iphone article. The poster's alias I am quoting and the web site are available upon email request.

Given that Windows is now the only surviving personal computer OS not based on Unix, the point of Microsoft's deflection from Gates' Xenix-centered vision would be interesting to know.

That's a fascinating comment.

in 1979, well prior to MS's link-up with IBM in which they parlayed Tim Paterson's QDOS to IBM as MS-DOS (without telling Paterson what they were up to), Microsoft was plugging a version of Unix called Xenix.

Xenix wasn't a flavor of Unix so much as a licensed port. It was Unix.

Bill Gates himself called MS-DOS 2.0 "the bridge to Xenix," clearly signaling a belief that the future of personal computing rested on this flavor of Unix [cf.]. Somehow that vision jumped the rails.

PC-DOS 2.0 was indeed a bridge to Unix. The new DOS calls added were all flavored towards Unix equivalents. I wrote alternative C libraries for two different C compilers in that period (Computer Innovations and Lattice) and already had extensive Unix experience by that point. It's true. The new code was buggy and poorly done in some cases (the globbing code that was more Unix-style than CP/M style was hopelessly bugged in 2.0).

Perhaps IBM drove that... hard to say, and a bit ironic in view of that company's reliance on Linux today. But it could be that the era Ballmer refers to was the turbulent circa-OS|2 era, in which Windows took its current vector.

IBM was driving OS/2 towards a bridge between their mainframes and PCs. I forget all of the details (I was never employed to work on IBM mainframes), but the big deal with OS/2 was supposed to be compatibility between the PC world and IBM mainframe world.

During this time frame, Unix was driving the final coffin nails behind proprietary, lock in systems. See Tracy Kidder's book Soul of a new Machine for the final dying gasp in that era. That was the final OS written by the manufacturer for a specific new machine. DEC VMS was still king in the minicomputer world, but its realm was disintegrating.

By the mid 1980s Unix was making inroads into previously DEC VMS-only territory. I watched that happen in my first job out of college being hired into a VMS shop. By the end of my time there, we were Unix and VMS was a relic of the past.

Microsoft hired the top VMS guys out of DEC to do Microsoft Windows NT in this same time frame. This should have been a clear indication to DEC stockholders to bail on the company, but it took more than a decade for the company to die.

I don't agree with all the things that VMS did, but it (DCL) allowed sufficient customization and had so many cool features that it was possible to reduce the pain level of using that system to a point where you could get a bit of enjoyment out of using the system. EDIT/TPU (which was a DEC reimplementation of Emacs, complete with provided source code for most of the editing features) was part of that. DEC SHELL, which was a native CLI that emulated the Unix Bourne shell was so buggy that I was banned from using it after I caused multiple cluster crashes in one day. Sigh.

I'm a Linux developer, have been before the kernel was a gleam in Linus' eye. I've been a Unix fan since 1981. Unix's strengths have always been a simple system call interface and lack of really complicated things like VMS RMS (Record Management System) which never made much sense and hardcoded extensions having special meaning. If a file has the execute bit turned on, it can be run. If it doesn't it can't. Contrast that to a hypothetical email attachment named sarahpalinnude.jpg.exe in the current Microsoft world.

I'm not particularly a Microsoft hater and I never got involved in Open Source because I hated Microsoft DOS or Microsoft Windows, I never cared for those systems in the first place (exception below). I got involved because I wanted to have a system that was all in source code that could never be abandoned and taken away from me by the company I bought it from.

I got a significant amount of enthusiasm by working on my roommate-of-the-time's PC on PC-DOS 2.0. I thought it was a great idea, no matter how buggy.

Desktops (Apple)

Journal Journal: Unix *is* for desktops and has been for a long time

Mac OS X is Unix inside and Unix is not an acronym. Please don't call us "geeks". I've run multiuser, multitasking systems at home since 1985 starting with System V boxes. Before my Macbook Pro, the x86 systems I have owned ran Linux.

I care that:

  • /bin/zsh is standard. I've been a diehard zsh fan for almost 20 years
  • You can run X11 apps alongside your Mac apps and (when Apple doesn't break it) it comes standard with the system
  • It plays the games worth playing - the number one gaming company in the US, Blizzard, supports Mac OS X and at least in the case of World of Warcraft, works better on OS X than Microsoft Windows
  • Emacs comes standard (I wish they distributed XEmacs, but you can't have everything)
  • Open Spaces is really, really good and I've been hooked on virtual desktop systems since I tried olvwm in 1995
  • I like the NeXTStep style interface. I was a big fan of WindowMaker before I finally switched to KDE
  • Mrs. Baur loves her Mac.

I'm not going to upgrade to Snow Leopard for Microsoft Windows support. The Citrix client runs the only app I need to run for work.

I keep a fair distance away from Microsoft Windows. On the unfortunate occasions when I've tried to use it, I've always felt like either gouging my eyes out because of the eye-searing color contrast, or driving a screwdriver through my forehead because of the frustrating user interface, or both.

Sun had viable desktop graphics systems before there was ever a Microsoft Windows. They did great work in GUIs in the early to mid 80s. Unfortunately they have always been economically challenged when it came to price points and I suppose that's the main reason why they sold themselves to Oracle.

When Jobs was in exile he did the NeXT, a direct competitor to Sun on the desktop and with a similar architecture (Unix inside). NeXTStep, the NeXT user interface was later reborn as OS X.

There is a long history of GUIs on top of Unix (and its descendents) as an OS.

What kind of system will I buy my sons when they're old enough?

  1. Mac OS X or Linux where they can get lots (or all) of the source code and learn programming by tinkering with the system.
  2. Microsoft Windows where they can learn to be obedient Microsoft Windows office drones.

"Your homework assignment for tonight son, is how many places can you find Daddy's name in Changelogs."

No brainer, at least for me. Unix, live free or die!


Journal Journal: A brief history of Unix

Unix was created by Ken & Dennis after coming off of the Multics project. Unix is a "weak pun" on Multics. Ken Thompson needed something to run a space war game on a shiny new PDP 7. Dennis Ritchie wrote a compiler for him. Deciding they needed to prove to their managers that they were really working, they sold the project to management as a document writing platform. Dennis Ritchie wrote the first file system (the setuid bit patent bears his name). Joe Ossanna wrote troff. The memory pressure that troff brought to bear on the system lead them to divide i & d space thus bringing the total process memory to a whopping 128k.

Writing the kernel mostly in a high level language proved to be a stroke of genius that would change the computing world forever, though it would take another decade and a half for the rest of the world to figure this out.

Dennis Ritchie's compiler was never ported away from the PDP. Steve Johnson wrote the "portable C compiler" which would ultimately inspire gcc.

Due to AT&T's status as a telephone monopoly, they were not allowed to commercialize the system. That wouldn't come until the 1980s and they did that as badly as they anything non-technical - "AT&T couldn't market eternal life".

Because they couldn't market the system, it was distributed as source code to Universities and eventually folks at Berkeley picked it up and hacked on it to produce BSD. Source licenses were typical through the 1980s. My first official on-the-job experience with Unix in 1987 was on a Pyramid that had a hybrid interface divided into universes (with source code). You could either select a BSD-ish or a System V-ish style system interface. Sadly, Pyramid did not revolutionize the world, but they were awesome machines for their time.

The earliest Unix box I got my hands on personally was a Stride 440 running a beta System V/R2 in 1985. Sadly, their Unix port never supported the bit mapped graphics that their hardware supported. The AT&T 3B1 aka Unix PC, which was the first commercial Unix desktop, predated Microsoft Windows and did support bitmapped graphics and a mouse, but was marketed very badly. It didn't become particularly reasonable to buy until after it was EOLed.

Oh Unix, how I love thee (and how good you look on my Macbook Pro) ...


Journal Journal: Age bits redux 1

I've linked to this old article I wrote anonymously 13 years ago before in ordinary postings, but I might as well come clean.

Requiring mandatory age and personal information requirements for internet access is a stupid idea. Stupid.

This was first posted to cypherpunks in April of 1996 and then reposted to the Computer Underground Digest. The original article follows ...

I am going ahead and releasing an alpha version of KiddieFind a free Unix implementation of LolitaWatch. Everything is under the GPL, so the source code is free, hack on it all you want ...

KiddieFind is an enhanced free version of Nubility Inc.'s LolitaWatch for Unix. It works by locating network packets that have the US federally mandated Under18 bit set, and then uses publicly accessible databases to map them into a street address and phonenumber.

The networked version works as follows, using the provided plug in module (a version is provided in 0.01 for AOL, I'm working on a CompuServe version and will have it ready in a week or so) to connect to a major online service. Once connected it goes into the equivalent of promiscuous mode and scans all traffic for the age bit, and forwards the information back to your system.

After collecting all this information, it scans a number of publicly accessible databases to turn the information into a street address. The geographical location can be approximated by running a traceroute on the IP address of the originating packet and works backwards until a host with reliable geographic data can be located. KiddieFind only requires state-wide granularity, and this only to narrow the later phonebook search.

Once a geographic location has been determined, it's not likely that the child has her own phone. Therefore the parents must be found. A search is done through the any number of the available on-line telephone books. By this stage KiddieFind should have a manageable number of candidate numbers. If real names are being used, than it's easy to isolate the correct phone number. Hopefully the Denning geographic information will be mandated soon, thus eliminating nearly all sources of error isolating the correct neighborhood.

If there are still too many candiate numbers a number of other mostly automated searches can be done. The parents' home web pages can be searched for personal information, etc.

Once you have the system tuned, all you merely have to do to locate a street address and phone number for any number of children is just login and poke around a bit. Everything else is done in the background. You don't even have to think about it.

I've obtained the address and phone numbers of over 5,000 children so far, but I expect this will become easier after all the kinks in the system are worked out.

GNU archives are located throughout the world, pick the one closest to you for downloading.

User Journal

Journal Journal: This is how we roll 8

Recent phone conversation:

Director: Hey, so... we're making some staff adjustments
Me: ...ok
D: Yeah, we're releasing some of the people in the Fubar team.
(The Fubar team is working on a set of services that my project depends on)
M: Oh. What people?
D: Well, [names], and some of the testers as well.
M: That's a good 3/4 of the development team
D: Yeah, I know. Sorry
M: Well, we need to go back to the project plan and adjust our deliverable dates.
D: Um, thing is... the dates can't be changed. The business sponsor doesn't want any of them moved.
M: How am I supposed to deliver on the agreed dates then? I can't even meet the SLA, the production support staff is gone too. The dev team was going to provide the 180-day warranty support until the Service folks could get re-staffed.
D: Yeah well, we'll figure something out I guess.
M: Right.

Fast forward two weeks to last Friday:

M: Hey Director, I just noticed a bunch of postings on the Placement intranet site. For the Fubar team. Why aren't they posted to the external site?
D: Oh... well, we posted internally so the old team would be able to apply for them first.
M: Oh, well that's cool... waitaminute, these are [contract positions] with no benefits and lower rates!
D: Yeah well, that's the only way we could keep them.
M: [expletives and so on]
D: I understand, but there's nothing I can do about it. On the other hand we get to still meet those dates and not lose our funding!
M: [more expletives, etc]
D: OK, so we'll talk later. Thanks!

Corporate America. You gotta love it.


Journal Journal: RIP Mario Benedetti (1920-2009)

Mario Benedetti died yesterday in Montevideo. He was one of the giants of Spanish-language literature, and he will be missed by millions of people who loved his poetry, stories and novels.

I had the privilege of meeting Benedetti at PUC Santiago in 1989 during a cultural event, where he gave a talk on historical fiction in South American literature. I have most of his work in my bookshelf, many of them read more than once. One of my most prized possessions is an original hardcover vellum-bound edition of his Proust essays from the 1950s. Printed on rice paper! I just realized it probably jumped in value overnight :)

Benedetti's life is a curious parallel to my family's in that he was forced to leave Uruguay and settle in Argentina, effectively going from one "dirty war" to another. My grandfather did the same thing, moving from Argentina to Chile - to another sort of dirty war in which his sons were not directly or indirectly involved and therefore safe from prosecution. Benedetti was eventually chased from Argentina and ended up living in Cuba, Peru and Spain (which he probably hated for reasons other than being in exile) for a long time. I'm glad he was able to return to his country later, once Bordaberry and Bollentini and all the other idiot Italianito Carlists were removed from power.

If you've never read Benedetti, I recommend La Tregua (The Truce) as a good starting point. In the original Spanish of course, although it's not hard to find English translations. That book was made into a movie that was actually nominated for an Oscar (best foreign film, I think).

Rest in peace, Mario.


Journal Journal: Vista SP2 is Released to Manufacturing

Windows Vista and Server 2008 SP2 has gone gold.

Key features include: Windows Search 4.0, Bluetooth 2.1 Feature Pack supporting the most recent specification for Bluetooth Technology, ability to record data on to Blu-Ray media natively in Windows Vista, Windows Connect Now (WCN) to simplify Wi-Fi Configuration, and SP2 enables the exFAT file system to support UTC timestamps, which allows correct file synchronization across time zones.

The update is the same for both Vista and Windows Server 2008

The Media

Journal Journal: Everybody Cries. Opera, deadlines and Python. 4

I guess by now everyone and their mom have seen the Paul Potts audition video on YouTube, where he sings Nessun Dorma. The recent news about Susan Boyle reminded me of something I found rather interesting about Potts.

To paraphrase Michael Stipes, everybody cries.

I've noticed when I talk to people about Potts, they almost invariably say they cried or felt intense emotion when they saw the video. An ad was even made in Germany reflecting this phenomenon (I suppose it can be called that way).

So why? Why the emotion? Is it the fact that the scrawny underdog is hitting it big despite everyone's expectations that he would simply embarrass himself? Is it the music? A combination of the two? Not to take away from Puccini, but I personally prefer Verdi and Wagner, especially Aida and Lohengrin.

Another observation. Any person with at least rudimentary classical bel canto knowledge can tell that while Potts is a decent lyrical tenor, he's far from being even close to people like Fisichella, Sobinov or Pavarotti. Certainly well below the capabilities of, say, Placido Domingo. And yet, when I listen to his CD (yes, I bought it), I am more moved by his rendition of Dorma and Con te partiro than when I hear them from Carreras or Bocelli. It's because his voice sounds a little less controlled and a bit less trained that he's able to inject charm into what he's singing. There is NO CHARM whatsoever in Pavarotti signing Otello. It's just damn good. But it's not charming.

I had never considered opera from a charm perspective certainly (most certainly not Germanic opera), but I suppose Potts can pull that off. On the other hand, I'd need to hear him do La Traviata or maybe a comic opera like Bastien und Bastienne or something like that - not just the odd piece - to really put that concept to the test.

Well. In other news, I'm just plain fucking buried in work. I love it (just love it) when companies feeling the recession think they can let go a quarter of their staff for a given project and still expect to make the same deadlines. It's just fucking insane. Anybody else having that kind of fun out there? I'm taking it pian piano, as the Italians say.

Oh, and an excellent article on the IronPython In Action tome by Foord and Christian Muirhead, which came out recently. Courtesy of Jim Hugunin. Highly recommended if you're using that language at all.

And finally, I'd like to report that my recent migration from CentOS to Debian is going quite well. Having smoke tested everything on my personal stuff, we moved some of our colo boxes to it as well a couple of weeks ago and so far so good. And not completely unrelated to that, I'm seeing some new reqs for Django developers out there. Not many, but a few. Fascinating considering the recession and all. Nothing I'd go for at this point given my workload (and the rates are a little sucky), but every time I see things like that I tend to pat myself on the back for getting into the Python stack and not letting myself depend solely on the Microsoft one. Don't get me wrong, C#/ASP/WCF/MSSQL/Server 2008 is still the breadwinner by far, and I prefer it as a platform, but it's nice to have a handy side air bag sometimes. No PHP though!

Peace out.

It's funny.  Laugh.

Journal Journal: Shanghai - that Extra Mile...

I was so so so tempted to submit this for April 1st, but decided against it. OB: NSFW link approaching ...

The plausibility argument is definitely there - this wasn't originally posted on an April 1st and there is a distinct shortage of women in China due to their one child per couple policy.


Address for whoever wants to give it a go: No 145 Shan Dong Zhong Lu, Ren Ji Hospital, Building 1, 7th FL, near Fu Zhou Lu, Shanghai, China.

I might start a "designer-sperm-bank", collect the best designers/artists sperm from around the world, so there will be more mix-race children, less racism, hopefully all artistic too... Ok I'll stop now...


Journal Journal: USA -vs- Jim Bell

(As a Blue passport, I plead the 5th with regards to any questions regarding this posting)

I've never read through an entire case transcript before and this is fascinating. On the face of it, Jim Bell now (I presume) imprisoned cypherpunk, was being prosecuted for championing his Assassination Politics essay. There's more to it than that and the idea isn't original with him, Tim May wrote about something similar in the Cyphernomicon


Certainly one moral of this story is DO NOT testify as a defendent. Jim is certainly a very bright technical person and one even versed in debating political theory, but as one can see from the transcripts, he is ripped to shreds when he decides to testify on his behalf and even worse, argue with court assigned lawyer.

I found the debate on the instructions to the jury remarkable, though perhaps I should not. It appears that at least in 2001, there still WAS some semblance of rule of law not men.

The only suppressed fact that I am aware of in this trial was how IRS agent Jeffrey Gordon pursued his prey. He made it clear that every subscriber to the cypherpunks mailing list in the 1997 timeframe were targets, in a very personal way and every bit as chilling as the acts described in this case. What kind of a frame of mind does one wish to induce when every (posting) list member gets emailed a PR-like announcement of the arrest of Jim Bell?

The court transcripts are here:


It's long, but fascinating reading and certainly an argument against current and forthcoming thoughtcrime laws. Jim never intended to threaten anyone, My ex-wife has threatened me with death on many occasions and usually with resort to terrorist rebels in the hills of Mindanao. She laughed it off as a joke when we were before the chief of police in Banaybanay.

33 months in prison for puting a smelly chemical in an IRS office, plus however many years he received for this conviction. I also find it fascinating that it is acceptable to throw real death threats at Acceptable Governmental Targets, like the AIG guys.

User Journal

Journal Journal: Wow. My first experience of a grudgebearer on /. 3

First journal entry just to give some folks an idea of the kind of awesomely-vehement sentiment that can exist in the /. mods.

As of this moment this post is -1 Troll with 32 replies. It had previously been at '5, Insightful'. I wasn't trying to troll...
Also of note (from that same thread/article):
These posts all got modded Troll within minutes of each other.

It's actually kind of amusing to see someone childishly develop a vendetta against me because of my posts (which can be satirical). It's also annoying. But I guess mocking so many /. groups in one go is bound have its repercussions.

Journal Journal: The clash of two cultures

In the recent History of the Bourne Shell article link here I got into an exchange with a PowerSheller (likely a developer). Due to the length and thoughtfulness of his defense of PowerShell seen below my comment here - link here I'm journaling it.

Thank you for a thoughtful response. I don't agree with you, but at
lease I now know where you're coming from. So on that basis ...

How about these:
Pipes are object-oriented. Commands are piping objects instead of plainly text. This means that

If you know who I am, you'll know that I do not consider "object oriented" to be a feature. I also regard writings such as TFman pages perltoot and perltooc as "dick waving".[1]

The advantage of using plaintext as a default is that it is highly resilent to underlying architectural differences. Throughout my career I've always been in an environment where I have had to interact with hosts with different OSes and different CPU types. Therefore, in my mind, something like `foo | ssh remotehost somecommand | bar' should Just Work. It shouldn't matter whether `remotehost' is 32 or 64 bit, or running HP/UX or Solaris or Linux. Nor should it matter what version of the O/S is being used.

Once you have to take that sort of stuff into account, you're looking at something like ASN.1 to represent data in a pipeline.

subsequent commands can refer to properties instead of parsing columns trying to get delimiters right and avoid false positives

Agreed that this is a "limitation" in a dead simple plaintext type approach.

tools/commands do not have to worry that columns may not be wide enough

Heh. No comment.[2]

you don't have to suppress headers and formatting information and

Well, actually you *do* want to do that, on data that's going to be post-processed by an arbitrary number of other programs.

values are passed strongly typed, i.e. dates are just dates and you need not worry about ISO formats to sort correctly

That requires specialized (and localized) knowledge built into the shell.

text (string) is just an object type so you can still just pipe text if you so choose.


instead of passive text the script/commands may interact with the objects. As an example, ProcessInfo objects (returned from the ps cmdlet) expose a WaitForExit method which allows scripts to wait for a process to terminate without resorting to ps loop polling or specialized tools.

See above comment about stuff crammed into the shell. Also, that's what the `wait' builtin is for.

First class strongly typed script language is embedded. It understands floats, objects, dates, times etc. Unlike when you drop into Perl or Python, PowerShell script still allows the use of commands with full piping embedded in scripts.

I'm not sure what point you're trying to make. Perl *does* have embedded capabilities to use shell syntax and semantics in pipelines and I would be surprised if Python did not have something similar.

Provider/drive architecture which is extensible. PowerShell comes with providers for file system, registry, credentials store, certificate store, environment, variables, functions and aliases. Providers are user-extensible and providers also exist for Active Directory/LDAP, Exchange etc. The upshot: You can manipulate
any store just like you manipulate directories and files, using the exact same commands. You can change "current location" into Active Directory, go to an organizational unit and start adding/removing members like it were files. With the exact same commands.

Once upon a time, one could simply use cat(1) as a mail reader and password file reader.

I am positive that the retro changes that MSExchange have wrought on the world are not for a positive benefit. I am dubious about Active Directory as well.

structured, nestable exception handling using try-catch-finally blocks.

Modern Unix shells give you access to similar capabilities, sans `nestable'.

transaction support (v2). Lets you rollback/commit changes to file system, registry or any other transaction aware provider as atomic transactions. Yes, NTFS is transactional.

It doesn't solve the problem of doing transactional scripting with transaction-unaware applications that need to be transaction-aware. CF my earliest XEmacs release building scripts.

script signing. By default PS will not let you run any script files unless they have been signed by a trusted authority, which can be yourself, your IT dept. or a 3rd party supplier. This can be set to only block unsigned scripts received from the internet/mail or never block (stupid).

I wouldn't consider this a feature, but that's a personal opinion.

debugger support (v2). Not just tracing but actual debugging with breakpoints, variable inspections/changes/continue etc.

Such facilities can be built into scripts. Tracing is provided with the `-x' option, which can also be set within a script.

Culture and internationalization support. Allows localized scripts with messages from multiple language dictionaries.

I'm not aware of anyone doing this with the Unix shell (and if someone is, please enlighten me).

But you wanted to see something that could not be done more easily in a modern nix shell (like bash or zsh?). Let's see:

# list all empty directories below current:
ls . -r | ?{!($_|ls)}

for i in $(find . -type d); do
[ $(ls -a $i 2>/dev/null| wc -l) -eq 2 ] && echo $i

This should work the same as in Version 7 Unix.

# list all directories below current which are empty except for
*.tmp files:
ls . -r | ?{!($_|ls -ex *.tmp)}

for i in $(find . -type d); do
[ $(echo $i/*.tmp 2>/dev/null) != "$i/*.tmp" ] && echo $i

# a better slashdot rss reader
$wc=new-object Net.WebClient
$rss.RDF.item | ?{$_.creator -ne "kdawson"} | fl

Muwahaha. There's no way I can possibly improve on that one.

# or just read the slashdot headlines through the speakers
$wc=new-object Net.WebClient
$voice=new-object -com SAPI.SPVoice
$rss.RDF.item | %{[void]$voice.speak($_.title)}

Does this also work on GNOME, KDE and MacOS X?

# list threads consuming more than 100MB (working set)
ps | ?{$_.WS -gt 100MB}

Variant ps(1) output is a known portability issue. Does this script
work the same when PowerShell is running under Unix?

# which 10 processes has been using most CPU?
ps | sort -desc CPU | select -first 10

$ ps -ax -O '%cpu' | sort -rnk 2 | head -10

# but how is their average CPU utilization since start?
#(format in a table with process name and average CPU utilization in percent with 2 decimals)
$big = ps | sort -desc CPU | select -first 10
$big | ft Name, @{ E={$_.CPU/((get-date)-$_.StartTime).TotalSeconds};
L="CPU avg"; F="{0:p2}"}

That one I'd have to resort to a special script.

[1] "(Yes, the double-function call is slow, but if you wanted fast, you wouldn't be using objects at all, eh? :-)" -tchrist in perltoot.

[2] Perl guys, I'm looking at you.

Slashdot Top Deals

PL/I -- "the fatal disease" -- belongs more to the problem set than to the solution set. -- Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5