January 2003 Archives

iPhoto

| | Comments (0)
One of the things I didn't like about the first iPhoto was that I could use it to organize my photos, but couldn't use that information for anything useful, such as in cooperation with my online gallery. Well, that may be changing. With iPhoto 2, I can use Apple events to find out which photos are in which albums, and find out the relevant information of each photo, so I can regularly run a script that will suck out the information from iPhoto, and then update the information in the MySQL database. It will be pretty simple, actually, with Mac::Glue. I'll whip something up when I get around to it (when I get my computer back ... grrr ...). use.perl.org

BET

| | Comments (0)
Seen on CNN.com's news ticker: "SPIKE LEE CRITICIZES BET IN COLLEGE SPEECH, SAYS IT LACKS SERIOUS ENTERTAINMENT & PROMOTES IGNORANCE W/RAP; NETWORK RESPONDS IT'S ABOUT MORE THAN VIDEOS & COMEDIES".

So for fun, I jump over to BET to see what's on at the moment: Disorderlies. Q.E.D. use.perl.org

Mac OS Crashes

| | Comments (0)
My lone Mac OS box, an iMac Rev. B which I use daily for ircle, Mozilla, NiftyTelnet, BBEdit, and MacPerl, crashed today for the first time in about three months. Because, you know, Mac OS is far less stable than Mac OS X. ;-) slashdot.org

Carp::Hint

| | Comments (0)
Idea for module: don't give an actual error message, file, or line number, but just a hint.

Something's wrong in one of the DBD modules, around line 100.

The module might itself use Carp.pm to do some of the work, and should have optional levels of vagueness.

I don't have time to do this module, which may also be better suited for Acme::. Give me credit if you decide to do it. :-)

If you have to ask Why?, then this module is probably not for you, but just in case you care: sometimes it is more fun to figure out what the problem is than be told exactly what and where.

Or, it could be used as a practical joke on someone, just by changing use Carp to use Carp::Hint. :-) There's still a few months left before April 1, so time's running out ...

Now Playing: I Was Young When I Left Home - Bob Dylan ("Love and Theft" Bonus Disc)

use.perl.org

PowerBook Saga Not Over Yet

| | Comments (0)
Apparently, the order for my replacement PowerBook is in. It is a PowerBook G4/867/512/40/AirPort/combo to replace the PowerBook G4/667/512/30/AirPort/combo. It has DVI and higher screen resolution and a better screen, and no IrDA. Hopefully better AirPort reception.

Since this is not a standard configuration (the standard 867 has 256MB), it will take a little extra time, I imagine. Hopefully not much.

And hopefully they send it to me within a day or two. They received my old PowerBook on Monday, after I sent it Thursday, after I got the call tags Thursday, which had been sent the previous day, but had been ordered two Sundays before that. Sigh. Almost there ... I'll keep calling back each night for a tracking number until I get something.

Now Playing: Josephine - The Wallflowers (Bringing Down The Horse)

use.perl.org

Racial Discrimination

| | Comments (0)
It is exceedingly odd to me that anyone would think a policy that says "if you are of a race X you get preferential treatment in admissions to the university" is not racial discrimination, on its face. If race X is "white," no one disagrees. If race X is "black," some people say it is not discrimination. Please stop being silly. Really.

That's not to say I think the University of Michigan should be forced to change their policy; they are a private institution and should be allowed to have racially discriminatory admissions policies, if they so choose. But to say the policy is not racially discriminationatory is baffling to me. It is, by definition, discriminating based on race. That it is not a race you think it is bad to discriminate against doesn't change that fact.

That's my main point. I also want to add that I don't understand the purpose of it anyway. They say it is for the sake of intellectual and cultural diversity, but it seems to me both insulting and wrong to say that your culture or ideas are either determined or strongly indicated by the color of your skin. I have a lot more in common with most of the black people I know than I do with white people from South Central L.A., Oklahoma farms, or the West Virginia mountains. If you really want diversity, it should be based not on race, but on economic status, geographical location, and other factors that actually do mean something.

I had a funny thought tonight. We are told that discriminating against people based on race is wrong. We are also told that it is reasonable to discriminate against people based on their ideas (such as, for example, Nazis [oops, I did it now!]). But if your race is a determinant or strong indicator of your ideology, and if I don't like an ideology that is strongly identified with your race, then, at that point, isn't racial discrimination (in some cases) merely a practical and reasonable application of ideological discrimination?

Hm, maybe that is just overthinking things, but I was driving for many hours tonight, and I got bored. Still, the notion that you are different from me in any interesting way based on the color of your skin is just insulting and wrong. It could very well be that you are a boring surburbanite who drives a Honda, doesn't care about politics, watches The Bachelorette, and eats Twinkies, just like half the white people around here. OK, if it is true, maybe noting those facts would be insulting too, but at least it wouldn't be wrong. use.perl.org

Secrecy

| | Comments (0)
I've been watching the 1977 Richard Nixon interviews with David Frost on the Discovery Civilization channel, and the footage is extraordinary and interesting in so many ways, for so many reasons. This one segment, talking about Daniel Ellsberg and the leaking of the Pentagon Papers and the subsequent effort to keep them under wraps, seems to me to have some relevance today.

I say that secrecy for the promotion of a good cause is not bad, and I say that publicity that produces a bad result is not good. And without secrecy, we wouldn't have had the China breakthrough, we wouldn't have had the SALT breakthrough, we wouldn't have had the Vietnam settlement, and we wouldn't have had the Mideast breakthrough.

And basically what Ellsberg really boils down to, mainly, the discrediting and all the rest, what it boils down to: I didn't want to discredit the man as an individual, I couldn't care less about the punk; I wanted to discredit that kind of activity, which was despicable and damaging to the national interest.

I have no interest in condoning the specific actions Nixon's "Plumbers" took against Ellsberg. I really only include the latter paragraph to provide the context for the former (and because it's interesting, and I have nowhere else to put it!). What I am interested in is the larger question of secrecy, especially at the Presidential level.

Much of the talk today is about whether or not we should go to war with Iraq. One thing we all need to remember is that none of us really know what our governments know. We can't know, and we shouldn't know. That's a given, though we sometimes either forget or deny it. We can't say we have no evidence against Hussein (today's discovery of chemical warheads notwithstanding); we don't know. We can't say why certain actions are being taken, such as the mobilization of troops; we don't know. We can't say we know where any of this is really heading; we don't know.

Yet just below the din of the pros and cons and assumptions, there is the sentiment that if the US knows something, it should say what it knows; that if the US had anything, it would have said by now. But this is unreasonable on its face; how could anyone who doesn't know the secrets, know if the secrets should be told?

Some say the US government should not keep secrets from its people; but secrets are a part of the rules of the game, especially when it comes to international politics. This game is about patience. Shrewdness. Not showing your hand until the perfect time. Moving everything into place before revealing the endgame. Misdirection. Secrets.

Say what you will about Nixon, but he acted brilliantly in regard to many international issues, an none of us have any reason to question the notion that secrecy was necessary for China, for SALT, for Vietnam, for the Mideast. I think, rather, that it is nearly self-evident that secrecy is required for such major diplomatic engagements.

Today Saudi Arabia was talking about a possible overthrow of Hussein. Last week there were similar rumors, that Hussein might flee to Saudi Arabia (as many other ousted Muslim leaders have done: Pakistan's Nawaz Sharif, Uganda's Idi Amin, South Yemen's Haidar Abu Bakr al-Attas, Libya's Idris al-Sanoussi).

Could it be that Hussein's exile to Saudi Arabia is the result of months, or even years, of work by the Americans and others, and that all of this has been leading up to it? Sure. Would this justify all the secrecy? You bet. Are there dozens of other possible scenarios like this that could justify secrecy? Of course.

There's just a lot we don't know, but we all act like there isn't. I am not saying people should sit on their hands, to wait and see what happens, that they shouldn't protest the war. I am merely saying that there are, necessarily, secrets; that we, necessarily, do not know what is going on. I will add only that if we do go to war, it is at that point, in my opinion, incumbent upon the President to reveal enough of the secrets that prove a real justification of it.

Just keep an open mind, and we will all together pray and hope that war is averted. use.perl.org

Not Over Yet

| | Comments (0)
I wrote this up a few days ago in my useperl journal, but figured it might be of particular interest here, too.

So my PowerBook has had problems waking from sleep (10+ minutes of sleep, usually). The video gets all screwy, or the UI just freezes.

I figure it is software, so I reinstall Mac OS X. It still happens. I try it in Mac OS. It happens there too. I reset PRAM and the power manager. Still broken.

I call Apple. They say to reset Open Firmware, so we do it, and I try it, and it is still broken.

I call back. The specialist says it is software. I say it happens in both OSes. He says it must be the directory, that I need to reformat the drive.

I try DiskWarrior first, no dice (took about 4 hours for DiskWarrior to do its magic). So I format the drive and run the Software Restore disks, so it is now back to its original state. Now it doesn't freeze, that I can tell, but the video problems are worse.

So I call Apple. The specialist notes I've not had the use of the computer for about a month now, that the logic board has been replaced three times (including once last summer), that the optical drive, half the casing, keyboard, various cables, and other components have all been replaced, and that it is time to put it out of its misery.

So now we are working on getting a replacement. It takes some paperwork, and I need to send them mine before they send me a new one, but it looks like I'll have a new PowerBook in a few weeks.

Now Playing: Halloween - Dave Matthews Band (Recently)

slashdot.org

Preloading mod_perl Scripts

| | Comments (0)
I was trying to figure out how to preload mod_perl scripts, and I was told by several people to use the PerlRequire directive. The problem is, that's entirely wrong.

PerlRequire just does a require(). But what mod_perl does, via Apache::Registry, is load the text of the script, add some stuff to it, including a new package directive, eval it, and install it into its registry. A require(), or PerlRequire, will not do anything to help here.

The correct answer is Apache::RegistryLoader. I ended up using something like this.

PerlModule Apache::RegistryLoader
<Perl>
my @pls     = qw(names of scripts or something);
my $vhost   = 'hostname.example.com';
my $docroot = '/path/to/scripts';
my $r       = Apache::RegistryLoader->new;
 
for my $u (@pls) {
    my $f = "$docroot/$u.pl";
    $r->handler("/$u.pl", $f, $vhost) if -e $f;
}
</Perl>

I know this is in various FAQs, but 1. my DNS was acting up and I was having trouble getting anywhere, 2. I found plenty of people contradicting the FAQs, and 3. I had to add the virtual host parameter before it would work properly (else it would install the script in a different package than what it would be called as later), which wasn't in the FAQ.

Now Playing: Beyond Beautiful - Aerosmith (Just push play)

use.perl.org

Why Do You Create?

| | Comments (0)
The Supreme Court of the United States seems to think people create is because, in part, because of the possibility of extensions to existing copyright terms. That is, "I would not write this song if the copyright term were onnly my life plus 70 years, as the existing term states, but only if there is the possibility that the term is increased, someday."

Or, in their words:

The CTEA may also provide greater incentive for American and other authors to create and disseminate their work in the United States. ... (the United States could not play a leadership role in the give-and-take evolution of the international copyright system, indeed it would lose all flexibility, if the only way to promote the progress of science were to provide incentives to create new works).
[Note that the justification here is taken from a law review paper by Shira Perlmutter, a vice president of AOL Time Warner.]

But this justification has nothing to do with the promoting of science and the useful arts by securing, for limited times, exclusive rights to writings and discoveries by authors and inventors. What it does is promote the exploitation of those writings and discoveries, not their existence, nor their creation. And if exploitation is the goal, then why not have more limited terms, to achieve maximum exploitation by the public? Because they care more about business, apparently, than the public good, even when the public good is Constitutionally protected.

Now Playing: One More Day, One More Night - Tom Petty (Echo)



[Note: if you saw weird chars here before or in email or something, I copied and pasted from Acrobat into BBEdit, which turned the document into Unicode or something ... urgh.] use.perl.org

Hacking

| | Comments (0)
I've decided to take a break from extracurricular hacking -- MacPerl, Mac::Carbon, MP3::Info, etc. -- until I get my new PowerBook up and running. I sorta wanted a break anyway, so now is as good a time as anyway.

One of my problems is that I need things to be in order. I like everything to be in its place. Working on a temporary box always annoys me. So working under these conditions tends to annoy me anyway.

I'll do some reading instead (novel concept ... HA! I kill me!).

Now Playing: Carolan's Concerto - The Chieftains (The Celtic Harp)

use.perl.org

Not Over Yet

| | Comments (0)
So my PowerBook has had problems waking from sleep (10+ minutes of sleep, usually). The video gets all screwy, or the UI just freezes.

I figure it is software, so I reinstall Mac OS X. It still happens. I try it in Mac OS. It happens there too. I reset PRAM and the power manager. Still broken.

I call Apple. They say to reset Open Firmware, so we do it, and I try it, and it is still broken.

I call back. The specialist says it is software. I say it happens in both OSes. He says it must be the directory, that I need to reformat the drive.

I try DiskWarrior first, no dice (took about 4 hours for DiskWarrior to do its magic). So I format the drive and run the Software Restore disks, so it is now back to its original state. Now it doesn't freeze, that I can tell, but the video problems are worse.

So I call Apple. The specialist notes I've not had the use of the computer for about a month now, that the logic board has been replaced three times (including once last summer), that the optical drive, half the casing, keyboard, various cables, and other components have all been replaced, and that it is time to put it out of its misery.

So now we are working on getting a replacement. It takes some paperwork, and I need to send them mine before they send me a new one, but it looks like I'll have a new PowerBook in a few weeks.

Now Playing: Halloween - Dave Matthews Band (Recently)

use.perl.org

Devel::FindGlobals

| | Comments (0)
This module finds all your globals and prints out their sizes (thanks to Devel::Size). Here's an example of its use. It can also return the data as a hashref instead of printing it. Is it worth putting on the CPAN?

[pudge@bourque Data]$ perl -MDevel::FindGlobals -wle 'print print_globals_sizes(exclude_match => [qw(warnings overload VERSION$ EXPORT(_\w+)?$ Exporter Carp DynaLoader)])'
 
Name of SCALAR variable                                    Size       Total Size
============================================ ====================================
$main::%08                                                   96               96
$main::%0F                                                  103              103
$main::%16                                                   41               41
$main::%17                                                   96               96
$main::%17ARNING_BITS                                        96               96
$main::%18                                                   29               29
$main::!                                                     96               96
$main::"                                                     26               26
$main::$                                                     16               16
$main::+                                                     96               96
$main::-                                                     96               96
$main::/                                                     98               98
$main::0                                                     99               99
$main::1                                                     96               96
$main::@                                                    264              264
$main::]                                                     43               43
 
Name of ARRAY variable                                     Size       Total Size
============================================ ====================================
@DB::args                                                    56               56
@main::+                                                    108              108
@main::-                                                    108              108
@main::ARGV                                                  56               56
@main::INC                                                  100              419
@main::_                                                     68              437
 
Name of HASH variable                                      Size       Total Size
============================================ ====================================
%Config::Con fig                                             144              144
%main::@                                                     92               92
%main::ENV                                                 1175             4824
%main::INC                                                  540             1345
%main::SIG                                                 1255             4424

Now Playing: It's Nice To Be With You - The Monkees (The Monkees Greatest Hits)

use.perl.org

I Don't Believe

| | Comments (0)
Some spam from this morning:

You're not going to believe what's happening to me now.
someone is doing an experiment on me.
I mean an experiment on a living creature.

it's kind of hard to explain this situation.

Base: liquid thing interacting with human body in itself.
1. they raise some koreans(about 20) and put liquid thing into their body.
2. Using satellite, they located korean's liquid thing around me and also put liquid thing
        into my body, also liquid thing in my body is interacting with that korean's liquid thing.

can you believe this?
please, trust me !! (served in US Army as SWAT team).
maybe next time i can explain more details about this situation.

The funny part is that I found the most glaringly unbelievable part about it that there are no SWAT teams in the U.S. Army.

Now Playing: Hidden Track - Diana Krall (When I Look in Your Eyes)

use.perl.org

iSync Disables Conduits

| | Comments (0)
iSync (the final 1.0 version released recently) will disable a few conduits that it conflicts with. But it also disables my third-party conduits. Uncool. use.perl.org

Also Missing in Safari

| | Comments (0)
Since no one else has mentioned it that I've seen: Site Navigation bar (you know, the LINK REL stuff).

Now Playing: Love - Poundhound (Massive Grooves From The Electric Church of Psychofunkadelic Grungelism Rock Music)

use.perl.org

Mac::Glue Thoughts

| | Comments (0)
I am kinda thinking aloud about some things ... feel free to toss in your two cents.

$ osascript -e 'tell app "Finder" to get name of startup disk'
Sweeney

startup disk is what AppleScript calls a property. Each class can have properties, some of which are read-only, some of which are read-write. If you open the Finder's dictionary in Script Editor, under the application class you will see numerous properties, one of which is startup disk. Classes can also have elements, which are essentially other classes which can be referenced by some identifier (name, index, ID).

get startup disk -- <i>startup disk</i> is property of Finder
get name of startup disk -- <i>name</i> is property of <i>startup disk</i>
get disk 3 -- 3 is the numeric index of the wanted element <i>disk</i>
get disk "Sweeney" -- "Sweeney" is the name of the wanted element <i>disk</i>

Each element is an object of a specific class. Each property also is of a specific class type, and inherits from that class type. So startup disk is an object of class disk. If you select the disk class in the dictionary, you see what elements and properties it can have, and what else it inherits from (in this case, the container class). If you look at the container class you can see it inherits from item, which describes the name property. So we can get the name of startup disk because it isa container isan item which has a name.

I needed to figure out how all these things worked together for Mac::Glue to work, since I am essentially rewriting AppleScript in Perl syntax. One of the downsides is that in order to take full advantage of Mac::Glue, you need to understand a lot of this stuff, too, at least somewhat. So in Mac::Glue, the above would be:

$finder->get( $finder->prop('startup disk') );

Tell the Finder to get the property startup disk. Simple, right? The get method and startup disk property both belong to the Finder's dictionary, and since Perl doesn't really keep context for OOP, we need to remind it what object we are working with. But with tchrist's help, I do have code that will allow me to do:

for ($finder) {
    $disk = get(prop('startup disk'));
}

It imports AUTOLOAD into the current namespace, and then that AUTOLOAD calls the unknown methods on $_ (which for() set for us). Freaky. But I digress.

The other lines would look like this:

$finder->get( $finder->prop(name => of => 'startup disk') );

I am thinking of ways to make the syntactic sugar of unnecessary, but it is difficult, because with properties and elements are basically the same thing; prop('foo') is just a synonym for obj(property => 'foo'), it is the name of the element property.

$finder->get($finder->obj(
    property => 'name',
    property => 'startup disk'
));

That makes even less sense. But if we had simply name => 'startup disk'", then it would try to get the element name whose identifier is "startup disk". I'd need to know that name is intended to be a property, not an element (I can't look at "startup disk" for the answer, because I could be asking for something actually named "startup disk" instead of the property). Witness the other two:

$finder->get( $finder->obj(disk => 3) );
$finder->get( $finder->obj(disk => "Sweeney") );

And it still makes perfect sense when extended:

# tell app "Finder" to get name of item 12 of disk "Sweeney"
$finder->get(
    $finder->prop(name => item => 12, disk => "Sweeney")
);

Right now, it is essentially figured out by counting: if there is an odd element in the list, it is a property. This works fine except for when you are getting a property of a property. Is it possible to do it this way, to figure out that name is a property? I believe that properties and elements cannot share the same name, so that I can do this. Do I want to even try to do it, will it make it more or less confusing?

Now Playing: Forever Friends - Jon Gibson (Forever Friends)

use.perl.org

PowerBook Saga Over

| | Comments (0)
At some point in November, the optical drive on my PowerBook G4/667 stopped ejecting. It was still under warranty. I called Apple, and they shipped out a box. I didn't want to send it out immediately, because I rely on it so much, so waited for Christmas, and sent it in for repair on December 19.

I received the PowerBook on December 23. They received it, repaired it, and sent it back on December 20. Neat. I opened it up, and they replaced half the case, and the optical drive, and it all worked great.

Except that now it wouldn't run off the battery. If you pressed on the battery compartment, the LED on the AC adapter would flicker on and off. Clearly a hardware issue.

I called them, and they went through the whole thing with me, testing it, and I convinced them it needed to be sent back in. They shipped out another box, I got it on the 26th (not the 24th ... don't know why), and sent the computer out on the same day. They got it on the 27th, fixed it, sent it back, and I got it on Monday again, the 30th.

Except that it was not fixed. It still had the same problem.

I called them back and this time they could not reference the last two times, because their systems were down for the week for an upgrade. They couldn't see any of the previous repair issues in the computer. They were able to send out a new box to me, which I received on the 31st, and sent back out that afternoon.

They received the computer on Jan. 2. They did not look at it until Jan. 3. They did not repair it until Jan. 6, because they part the broke twice (the logic board, apparently) was unavailable. I called on Jan. 6 to find out the progress, and the woman I talked to couldn't really figure it out -- apparently they are ironing out problems in the new systems -- but she assured me she would find out what was going on and call me back.

She didn't.

The phone system said they had not received my computer; the web site said it was still on hold; their computer system said it was in testing. Who to believe?

The next day -- today -- I called back. The phone system still said they had not received it, and the web site was down entirely. However, their computer system told them to tell me they had shipped it.

I finally received it today, Jan. 7, about three weeks after this all started. I am none too pleased with Apple repair services. Frankly, they suck. The phone people were OK, but the actual repair people were just horrible. Sigh. slashdot.org

Grrrrrr

| | Comments (0)
I finally figured out why remote Apple events from AppleScript weren't working for me. Mac OS X is broken such that sending remote Apple events aren't working if the password contained an "@". I don't know if this is exclusive to AppleScript (I doubt it, but haven't tested).

Now Playing: How Stupid Mr Bates - The Police (Message In A Box)

use.perl.org

Mac OS X.2

| | Comments (0)
TechTV reports Jobs will be previewing "Mac OS X.2" in the Macworld keynote next week. That better not be the name of the OS. At least "Mac OS X 10.2" is a name that makes sense, if more than a bit confusing, and at least it doesn't conflict with existing versions of the OS. But we already have a version ten-dot-two. This can't be right.

I was trying to find out if TechTV will be broadcasting the keynote. I'd rather watch it on TV than on streaming Internet video (call me crazy). As usual, it is not listed on TechTV's web site, but that doesn't seem to mean much. Although, I don't think it has been on TechTV in some time. Bah. slashdot.org
<pudge/*> (pronounced "PudgeGlob") is thousands of posts over many years by Pudge.

"It is the common fate of the indolent to see their rights become a prey to the active. The condition upon which God hath given liberty to man is eternal vigilance; which condition if he break, servitude is at once the consequence of his crime and the punishment of his guilt."

About this Archive

This page is an archive of entries from January 2003 listed from newest to oldest.

December 2002 is the previous archive.

February 2003 is the next archive.

Find recent content on the main index or look in the archives to find all content.