14 Aug 2000 jlbec   » (Master)

Weekend

Amy's parents and sister were in town, and we spent Saturday in San Francisco walking about. We then spent Sunday on the coast. I love this area, and let me tell you, I keep finding more to interest me.

What is it with Italian restaurants in Belmont/San Carlos? Near where we live there are a bunch of such restaurants, and every single one is rather pricey. Not $30 a plate, but more than I'd expect for a small place.

However, in the North Beach district of San Francisco are a ton of excellent cafes/restaurants with prices more like you'd expect. I guess we'll be going into town for Italian. The after-dinner options are better anyway.

Scripting

raph posted a diary entry discussing the slipshod way many people use scripting languages. He makes many good points, some I've been bitching about for years.

My favorite is the error checking. I've spent a lot of time doing sh scripts for dummies. I've been doing sh scripts in m4 for a long time now, so that I don't have to type out

/bin/foo -bar
if [ "$?" = "0" ]
then
    do something good
else
    do something because we broke
fi

every single time. People usually don't check errors because it is tedious. But those errors need to be caught.

My case was a fun one, because it was root-level sysadmin scripts that performed complex tasks. Some of the people I worked with didn't understand or know all the implications, and I had to have my scripts cover those cases. Lots and lots and lots of precondition testing and error handling. I'd have a 400-line script to handle 5 actual command calls.

My scripts never created untenable situations from bad user input or bad conditions. They just printed a nice error and said "try again when it's fixed". This is what a good script should do.

Why sh? Why not perl/python/name-your-own-religion? Because these admin scripts only called system commands. The semantics of Perl's system() or the equivalent are annoying when you just want to run mkdir(1). More complex items may find me in Perl, but these days I'm quicker to C.

As far as quoting goes, spend some time running commands via dsh(1), and you'll get your quoting right. Very right. Quoting isn't hard, you just have to learn the rules.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!