NetWare hell


Novell announced
the other day that their next version of SuSE Linux (called Open Enterprise Server)
will be able to run NetWare 6.5 as, essentially, a virtual machine. It also says
that “This release of OES also spells the end of NetWare as a separate operating
system”, so that you will only be able to run NetWare as a VM.

SQL Anywhere has been supported on NetWare since the beginning, and I have been
the sole NetWare developer on the engine team for most of the last ten years. With
this change, I don’t know if it makes sense to continue supporting NetWare, so
it’s possible that management will consider dropping NetWare as a supported
platform. This would be fine with me, since NetWare is a difficult operating
system to work with — the compiler is old and unsupported, the debugger is
flaky and slow, and there are lots of idiosyncrasies specific to NetWare that I
have to deal with.

The title of the above linked article is “Good-bye NetWare, hello, OES 2”, so
when viewing that page in Firefox, that’s what the title bar says. When I
minimized the Firefox window, I got this, which I thought was kind of appropriate:

Perl vs. Python


I’m not one to generally get involved in technical “religious” wars —
vi vs. emacs, perl vs. python, Windows vs. Mac, etc. Each one has its advantages
and disadvantages, and I have my preferences, but
arguing about them is rarely productive. Having said that, there were a few
comments on my previous (and completely unrelated) entry
that raised the perl vs. python argument. I don’t think perl is inherently
unreadable, and it’s certainly possible to write easy-to-read, coherent perl
code, but in general, I tend to agree with Tom.

I am a professional software developer, and have been since my first co-op
work term in 1988. (Aside: so is MC, and he’s been doing this longer than I have.)
I have written code in many different languages, including C, C++, Objective-C,
perl, python, Java, REXX, Basic,
PHP, Tcl, Lua, plus a few at university that I barely remember: Fortran, COBOL,
Ada, Lisp, Prolog. Of these, the ones I use regularly in my job are C, C++, perl,
and python. I know C and C++ inside out and backwards, but when I am writing any
significant code in perl (i.e. more than a handful of lines), I almost always have
the perl online documentation open in another window — that’s not always
true for python, and I’ve been writing perl code years longer than I’ve
been writing python. I don’t think that the perl code that I write is more
complex than the python code, but the python syntax just seems more intuitive.

Say I have a list of filenames to process. In python:

files = [ 'file1', 'file2', 'file3', 'file4' ]
for i in files:
    # do something with i

Fairly straightforward. In perl:

my @files = qw( file1 file2 file3 file4 );
my $i;
for $i ( @files ) {
    # do something with $i
}

A little weird (what the heck does “qw” mean?), but not too bad. You
could also use

my @files = ( 'file1', 'file2', 'file3', 'file4' );

which is a little more intuitive, though I had to check the perl docs to see
whether to use parens or curly brackets.

A note before
I go any further — in perl, there are a zillion ways of doing
anything, so the code examples I’m listing here may not be the simplest
way to do things. This, in itself, is part of my problem with perl — after
ten years of writing perl, I should know how to do a lot of these relatively
basic things, but without checking the documentation or an existing perl script,
I frequently find that I don’t. I’ve only been writing python for about 5 years,
and I seem to remember its syntax and the majority of the language weirdnesses a
lot more easily than perl.

OK, now, what if you want to add something to the list later? Python:

files.append( 'file5' )

Obviously, if you want to add to the end of a list, you “append” to it. Very
intuitive. In perl? Well, I’m not sure. I’m currently looking through the perl
documentation, and it’s not obvious how to add an element to a list. I’m sure
there’s a way — maybe $foo += 'file5'; or
$foo .= 'file5';. Maybe it’s a documentation issue and not a language
issue, but whatever way it is, it ain’t obvious.

Another thing that confuses me about perl is there are a number of different
“types” (scalars, arrays, and hashes), and you can seemingly convert one to the
other whenever you want, and sometimes when you don’t want. First of all, is a
“list” the same as an array, or is it a special type of scalar? I don’t know.
Here’s how to set up an array in perl:

@foo = ( 'a', 'b', 'c' );

Now, given that @foo = ( 'a', 'b', 'c' );, it would seem logical
to me that the following two lines do the same thing:

$foo = ( 'a', 'b', 'c' );
$foo = @foo;

However, they don’t. The first one takes the last element of the array and
assigns it to $foo. (What happens to the rest of the array? And why
would you do this?). The second, incredibly, assigns the length
of @foo to $foo. If I want the length of an array, wouldn’t it
be more logical to say something like “foo = length( array )” (which,
coincidentally, is the proper python syntax)?

This posting was not meant as a “perl sucks, python rules” rant. In fact, I
don’t think that at all. Perl is an exceptionally powerful language, and I do
enjoy writing perl code. In particular, if I’m doing anything involving regular
expressions or string manipulation, perl kicks python’s ass all over the place.
However, perl does not have the most intuitive syntax, and you can write
completely unintelligible “Martian code” very easily in perl. There’s even an
online contest called Perl Golf to
see who can write the smallest possible perl program to do a particular task
— entries to this contest sometimes contain less than 50 bytes. Good luck
writing anything remotely useful in python in less than 50 bytes. In addition,
python requires correct use of whitespace to control program flow. Now,
when I first learned this, my initial thought was “How stupid is
that?”, but I’ve since found that as long as you have a python-aware editor
(emacs works nicely for me), this is not a big deal. The only drawback is that
if you want to remove an entire section of code, you can’t just put if( 0 )
{
at the top and } at the bottom like you can in perl, C, or C++.
Well, you can add if 0: at the top, but then you have to
re-indent the entire block
you want to remove. Again, with the right editor, this isn’t a huge deal.

Bottom line: perl and python are both great languages, but I have found that
the perl syntax is less intuitive and therefore harder to remember than python.
Thus, I have more trouble reading old perl code than old python code.

Note: I’m going away on vacation tomorrow for a week, so if you add
a comment to this post and I don’t respond, I’m not ignoring you. I won’t be
back online until at least next Sunday (the 18th).

Channelling Andy Rooney


Have you ever noticed that when you make a phone call to a local number but dial a 1 first (as if it were a long-distance call), you get a message saying that you don’t need to dial the 1, but then you have to hang up and dial again? Similarly, if you dial a number without a 1 that is long distance, you get a message saying that it’s long distance and you need to dial a 1. But in both cases, your call does not go through. Why the hell not? If they want to give me a nastygram telling me what I should or should not have done, fine, but then put the damn call through. The technology exists. It’s not rocket science. That’s what happens on a cell phone, so why can’t they do it on a land line?

The other day, I was making some phone calls at work to local businesses in the K-W area. Since I don’t live in K-W, I don’t know where I can call locally and where is long-distance, so in a few cases, I added a 1 when I didn’t need to. Every time, I got the “You don’t need to dial a 1” message, so I had to hang up and re-dial the number without the 1. Very frustrating.

When I call home with my cell phone, the call display stores the number with a 1 for some reason. If I then display the number, click the “dial” button, and then pick up the receiver, it dials “1-905-…”, and then I get the message saying I didn’t need to dial the 1. At that point, I need to hang up and dial the number manually. For our cell phone numbers, that’s no big deal, but if it was a different number that I don’t have memorized, I have to write the number down on a piece of paper and then pick up the phone and dial it. So much for modern technology.

This posting is yet another example of the hard-hitting hold-no-punches journablogalism that you’ll find on Cut The Chatter. See, Whimsley, I can invent words too! Though yours kind of rolls off the tongue better than mine does.

Aside: Can you “channel” someone who’s not dead?

Update: Just to prove that I invented this word myself:

"Best Buy" may not be


Best Buy has admitted having an intranet web site that is identical to the public web site, except that the prices aren’t always the same. Apparently the idea is that customers would come into the store asking about an item at a certain price, and the employees would then check the “web site”, showing the customer that the price has gone up. I have heard numerous complaints about Best Buy — not just that their salespeople are pushy (that’s true at a lot of places), but that they try to cheat customers and dupe them into paying higher prices. I’ve only been in Best Buy once, looking for something specific (don’t even remember what it was), and I didn’t buy whatever it was there, but because of all these stories I’ve heard in the past, I have been hesitant to shop there. After this latest one, they’re on my “boycott” list. Not that I really had a boycott list before (I can’t think of any other stores that I absolutely refuse to go to), but I have one now, and Best Buy’s on it. This is a little unfortunate, since I’m in the market for a Wii, and they’re rather hard to find. Removing one store from my list of possibilities will make it even harder to find, but, you know, standing up for your principles and all that.

Yappa Ding Ding wrote the other day about problems she had recently with Dell’s website. This is unfortunate, since we’re considering buying a new computer in the near future, and I was going to check out dell.ca. I probably still will, but I will be much more defensive if I end up having to speak with a salescritter.

The Observer Effect


We had a “parent observation day” in Nicholas’ kindergarten class today. This is when a few parents sit in on the class for a while (90 minutes), and just observe (a) how the class runs, and (b) how their child behaves while in class. We were not supposed to assist him at all, we were just supposed to sit and watch. Of course, Nicky was an angel while we were there. We sat and watched him sit and read with two other kids with minimal incident — one of the kids wouldn’t let Nicky hold the book, and rather than yelling and hitting (which he would do with Ryan), he calmly told the teacher what was happening. Nicky loves to throw stuff — I doubt he could go an hour and a half at home without throwing something, unless he’s asleep or watching Scooby-Doo on TV, but he didn’t throw anything the entire time we were there. Just before we left, his teacher came over and told us that Nicky was having “a stellar day”.

This would seem to me to be a prime example of the Observer Effect, where the act of observing something changes it. (I have referred to this in the past as the “Heisenberg Uncertainty Principle”, but according to Wikipedia, this is incorrect.) Nicky knew we were in the corner watching, so he behaved better than he might have otherwise. The only way around this would be to install a video camera somewhere where the kids wouldn’t see it, don’t tell them about it, and watch the whole thing from another room. But then some parents would go all “civil rights” and “Big Brother” on us and sue the school for mental anguish or some bullshit like that.

Of course, it’s possible that I’m not giving Nicky enough credit — we all have our good and bad days, and perhaps he’s just having a good day. He did get a lot of sleep last night, and ate a fair-sized breakfast, and we did get to watch in the morning before he gets tired, so maybe our presence didn’t have that much of an effect.

Trade Deadline


Today is the trade deadline in the NHL, so teams have until 3:00 this afternoon to decide whether they are going to make a run at the playoffs, or trade away players that will become free agents at the end of the season, thereby getting something for them, instead of getting zilch later. This, traditionally, is the most frustrating day of the season for Leafs fans. This is the day when the Leafs management decides that they are going to take a run at the playoffs, so they need some kind of veteran help, and they trade away prospects and/or draft picks for someone past his prime. This year, there have been rumours of Gary Roberts returning to Toronto, and I love Roberts as a player, but the Leafs need to realize that they have no chance of winning the Cup this year, so adding someone like Roberts would serve no purpose.

There are also rumours about the Leafs getting Bill Guerin, but to do that, they’d have to give up — guess what? — prospects and draft picks. Once again, if this happens, the Leafs will be trading away their future for a hopeless shot at winning the Cup this year. All that giving up the prospects and picks will do is guarantee that the Leafs will be in the same situation next year, and the year after that, and the year after that…

I’ve said it before and I’ll say it again — the Leafs need to blow up the team and start over. Signing the formerly somewhat-overrated and now vastly overpaid Bryan McCabe was a mistake. I like Kaberle, so I don’t have a big problem with signing him long-term (especially since he’s not getting McCabe-type money), and they just re-signed Darcy Tucker, but for only $3 million a year, so that’s not bad at all. I love Sundin, but I think they need to trade him now, while they can still get something for him, and start stocking up on the aforementioned prospects and draft picks, rather than trading them away.

Heard on the radio this morning — the Leafs would like to trade Pavel Kubina back to Tampa. They don’t want anything back for him; they’d just send him back to Tampa, with a note saying “My bad”. :-)

I’ve only been really following basketball for a year or two, but it seems that Raptors GM Bryan Colangelo is very well respected in the league, and with good reason — in less than a year, he’s turned the Raptors from a laughing stock into a conference-contending team. They’re not likely to win a championship this year, but they could be a serious contender within the next few years. Whenever I hear him being interviewed, he gives an air of not just confidence, but control. He is in complete control of the team, and has a plan for it. When I hear the GM of the Blue Jays, J.P. Ricciardi, talk, he gives me the same impression. The Leafs GM, John Ferguson, however, always gives me the impression that he’s doing whatever he can to just stop the bleeding. He’s not trying to make the team tangibly better, he’s just trying to keep it from getting too much worse. Unless the Leafs turn it around in a big way this season (i.e. make the playoffs and win at least one round), they really need to get rid of Ferguson.

Update: The Leafs made one deal today — trading away 23-year-old prospect Brendan Bell and a draft pick for 35-year-old veteran Yanic Perreault. Same ol’ same ol’. Sigh.

The calliope crashed to the ground


I just bought The
Essential Bruce Springsteen
from amazon.ca
— $20 for a triple CD! There’s a lot of great stuff on here, though I get
the impression that I’m going to listen to disk one a lot more than the other two.
The first song is 1973’s “Blinded by the Light”, which was covered by Manfred Mann’s Earth Band in 1977. The Springsteen version is very upbeat, almost dance-able, but
the lyrics are frequently indecipherable. The Manfred Mann version is much better
known, and is a little more “interesting”,
in that there are more speed changes, guitar licks, and keyboard fills. The lyrics are obviously the same, but I can
understand them a little better (in that I can hear the words – I have no idea
what the song actually means). I’ve always loved the Manfred Mann version — this is one of the fairly rare times that
I prefer the remake of a song to the original.

I’ve always been impressed with people who are creative, like songwriters and
artists and such. I can’t draw worth a damn, but I’d love to be able to. Gail
says that writing software is creative, and I suppose it is (you could even
consider it an “art” if you try), but it’s not the same thing. I can play the
guitar, but creating music rather than playing something that someone
else wrote seems much harder. Just as difficult, I would think, is the
ability to take a song that someone else wrote and re-work it, as Manfred
Mann did on this song, or as Joe Cocker did on his version of the Beatles’ “With A Little Help From My Friends”. It’s kind of hard to believe that this is the same
guy that wrote recorded the bubblegum “Doo Wah Diddy Diddy” twelve years
before (according to Wikipedia, Manfred Mann
didn’t write that song either).

You Suck


Went to the third Toronto Rock home game of the season tonight. They played pretty sloppy, and Watson was kind of shaky in the first half. They were down 8-3 at one point and went into halftime losing 8-4, but rookie coach Glenn Clark must have given them some kind of pep talk at halftime. They didn’t exactly come out in the 3rd quarter guns-a-blazin’, but they did score 4 goals in the third to tie it up. Whipper, and the defense in general, was much better in the second half, only allowing two goals, and the Rock won it 11-10. I love those Rock comeback wins — they had a couple of games last year, both against Philadelphia if I’m not mistaken, where they came back from 8-goal deficits to win the game.

One thing you see (well, hear) at lacrosse games that you don’t hear anywhere else (at least, I never have) is the “Sucks” cheer. When the opposing goalie allows a goal, a bunch of people stand up, point to the goalie, chant his name three times, and then yell “YOU SUCK!”. The Chicago goalie was Brandon Miller, so tonight’s chant went “MILL-er, MILL-er, MILL-er, YOU SUCK!” I suppose it’s a little juvenile, but it’s all in good fun (otherwise you wouldn’t yell it when a goalie allows his fourth goal while your own team’s goalie has already allowed eight).

The fans in Philadelphia go one better — in Philly, everyone on the opposing team sucks. Before the game starts, they announce the starting line-ups for each team (don’t know why they don’t announce the starting lineup for the opponents in Toronto), and after every opposing player’s name, the fans yell “SUCKS!” Some players, notably Portland goaltender Dallas Eliuk who played 15 seasons in Philadelphia, hear the “SUCKS!” cheer following their name, immediately followed by applause.

Note: I created all of the Wikipedia pages I linked to above.

The CENSORED Monologues


The popular play “The Vagina Monologues” ran into some trouble recently (I
think this was in Florida somewhere, but I can’t find the link), when
a woman driving her niece by the theater was “offended” when the young girl
(don’t know how old she was) read the marquee and asked what a vagina was. She
complained to the theatre, and they changed the marquee to read The “Hoohaa”
Monologues
(including the quotation marks). How stupid is this? It’s not
like “vagina”
is some vulgar or dirty or even slang word. I know that if my son read a marquee
that said The Vagina Monologues, he would probably just ignore it. If, however, he
read The “Hoohaa” Monologues, he’d laugh at it and make a big fuss, and ask what
a “Hoohaa” is. He already knows what a vagina is (well, I’m not sure he knows
what one is, but he knows that girls have one and boys don’t, and he
doesn’t consider the word dirty or taboo or anything), but I know that
he’d never let go of the word “hoohaa”, and we’d be hearing it all the time.
In any case, any child old enough to read the word vagina is old enough
to be told what it is and that it’s not a dirty word.

This reminds me of one of my favourite “my kid is so cute” stories, from when
Ryan was just two years old. Gail and I were going out, and we got a babysitter
for Ryan (Nicky wasn’t even born yet, so Ryan was definitely two). He was
sitting at the table finishing his dinner, and Lindsay the babysitter came in
and sat down next to him. She said hi, and he put down his fork, looked at her
silently for a couple of seconds, and then said matter-of-factly, “You don’t
have a penis.” Lindsay, to her credit, didn’t even flinch, but confirmed his
suspicion. He nodded and went back to his dinner, apparently satisfied with her
response.