October 2001 Archives
So there were two problems with exiting as we were: some tasks were left in the queue (including, perhaps, some "exit" tasks), and things that needed to get killed off (like the sleep timer) were not, because SIGINT was not raised. So now, we just raise SIGINT, which handles things as they should be handled, for the Stop Script command. And we have a new function to clear out the async tasks in the queue when the script starts.
I realize some of this might not make much sense ... but I am tired and going to bed.
I initially had support for contents/top/next/previous buttons, but I never had a client that I could use it in (well, I guess iCab supports it, but iCab, last I checked, has a long way to go in CSS support). But now Mozilla supports it with its Site Navigation Bar. I found I had a bug in the support makeslides offered (s/REL/REV/g, oops), so I fixed that and then added first/last/chapters support. So now makeslides is even easier to navigate, and in a nice looking browser.
I might add some logic to remove some of the navigation from the page, since it can now be in the site navigation bar ... maybe some JavaScript checking the user agent or something. <grin>
Speaking of Mozilla ... use Perl now supports ForumZilla, which allows you to read/post the site's comments in a newsreader-like interface.
I got Terk products from Circuit City, and I am pleased with them. I was going to get one 3-4 multi-switch (that's three inputs and four outputs) and three single diplexers (one for each receiver), but then I saw the dual diplexer.
The dual diplexer takes two sat signals and one CATV signal, just like the multi-switch, and outputs two combined signals (instead of four). So I just reversed it: it takes two combined signals from the multi-switch, and splits them into two sat signals and one CATV signal. Because it is not actually splitting the sat signals, but passing them through and combining/splitting with the CATV, it is OK. And it works nicely.
So I have the multi-switch in the basement, with the sat and CATV going in. Then I have three combined signals coming out, one going upstairs and two going downstairs. The two downstairs go into the dual diplexer, and then into the VCR and the two sat inputs on the TiVo. The other signal goes into the bedroom, into a diplexer, and the sat goes into the other receiver, while the CATV is split, going into the TV and then to the den, for the cable modem.
I was worried about the cable modem, but it seems just peachy in this setup.
I had some troubles, though. First, the diplexers came with this "DC Block" dongle, and nothing on the web site or in the package said exactly what it was for. It did say that the diplexers allowed DC signals to pass through, I think for powered antennas. So after a lot of trial and error, I discovered that if I did not have those dongles connected on the CATV out, that the sat signals wouldn't work at all (which makes sense somewhat, but they could have told me). And one of the dongles was broken; luckily, the multi-switch came with one, and it didn't seem to be needed for the CATV in.
My other problem was that one of my long cables from the sat was kinda busted at one end. I had a lot of extra length to work with, but have you ever tried to put a fitting on the end of a heavy-duty coax cable with only pliers and a knife? It works, though. I figure if I can attach my dual LNB to my dish arm with an electric jigsaw and duct tape, I can make this cable work without the proper tools.
So it all works, and I ain't gonna touch it again. I couldn't even if I wanted to, because my fingers are killing me with all the loosening and tightening of the coax ...
I pulled out the undefined symbols and have a working perl MPW tool for 5.7.2, with sockets and dynaloading working fine. No major tests on it yet (I might do it later; the test suite probably needs some porting, so I ph33r it), but it looks good so far. It builds, essentially.
So what'd I do? Well, I wrote a perl script to mirror my CVS trees (see the SF CVS tarballs for a 4MB listing of all the available CVS trees on the whole system) and file uploads on SF. I am going to extend the script to also mirror my files from CPAN (and other selected files, like versions of perl, etc.).
I wrote some emails.
I found a bug in MySQL, whereby I can do REPLACE INTO table2 SELECT foo,bar,baz,buz FROM table1 WHERE buz=1 and buz will not always be 1 in table2, if bar or baz is NULL in table1, whereas table2 defines those columns as NOT NULL. Yes, the schemas should match, but MySQL should either punt on the whole record, or it should fill in the columns that it can match up properly. Instead, it just drops the rest of the columns for that record. So I try to make bar NULL, and it fails because bar is NOT NULL, so it ends up making bar "", which is fine, except ... it makes the rest of the columns "" (or 0, for numeric columns, etc.). ACK!
I closed some bugs.
I got some new bugs.
I synched up some various sources.
I updated use Perl and Slashcode to the last Slash source from CVS.
I told Jarkko I would test the latest bleadperl on Mac OS.
I watched the latest (repeat) episode of Oz.
I told some people why the Bruins were right to not meet Jason Allison's demands.
I am going to try to get in a few more little things before dinner: update some picks on Pudge's Picks and maybe actually test the latest bleadperl. Yeah, I can do that.
The problem manifested itself in users getting errors that their formkeys were invalid. We first looked to see what new code there was that week relating to formkeys. None. We tried fixing the DB table where formkeys are stored. Nothing. We saw the formkey table had a lot of old formkeys, and deleted them. No dice.
We looked at formkey bug reports from a lot of our users (thanks!) and compared their formkeys to ones in the DB. Every single formkey was attached to a UID other than their own, except sometimes in the case of anonymous users, and those exceptions didn't mean anything, since anonymous users share a UID. So what is going on? Are formkeys being cached? Is rand broken?
At this point I should note that a formkey is 10 characters long and each character is a random character of 0..9, 'a'..'z', 'A'..'Z'. They need to be unique, but we never did any checks to make sure they were unique. Every once in a blue moon there MIGHT be a collision, but it's something we never got around to dealing with. The possibility of this many errors by chance is ... unreasonable.
We considered rand() being the culprit, but why did it start being a problem now, and never before? This is code that has been used for at least a year. Did something change in perl? In Apache? In mod_perl?
Well, we decided that though we could not figure out the problem, we could probably fix it. So we made the getFormkey() function, which previously made no attempt to make sure it was unique, check the DB to see if the desired key already existed. A quick lookup, not a big hit, and it would solve the problem, even if it wouldn't tell us what the problem was. We added debug code so it would print to STDERR each time it failed to get a unique key, and then when it succeeded, and how many iterations it took to get the final, unique, formkey.
Interestingly enough, it started off OK, but soon we would get a report that a call had one collision. Then two. Then three. Then five. Then eight, 10, and as many as 37. It kept increasing as time went on. And this was called right after getting the formkey via a simple call to rand(). rand() had to be the problem. The httpd children were sharing the same random seed.
But why now? Why never before? We finally tracked it down to a new template that uses rand(). The problem is not that it uses rand(), but in how we compile templates. We use Template Toolkit, and a quick-and-easy way to precompile all the templates in the root httpd, so it is copied on fork for each child (instead of each child eating up DB and CPU trying to compile them) is to loop over all the available templates and execute each one. Then they are compiled, cached into memory, and are there for each child.
But this time, a template executed rand() when executed. All the other templates and code pieces that had rand() in it would only execute rand() conditionally. But not this one, it just executed rand() when it was called. So srand() was called automatically by perl, and the seed was copied on fork into each new httpd process! Argh!
So two days later, we figured it out and added a new srand() call for each new child (we need to clean it up, but it is there and working).
I don't know how interesting or helpful this is to anyone, but it is just one of those things ...
I need to read through it more, but as I understand it, there are two polarities, and each of the 32 transponders is on one of those polarities. Each channel is on one of the transponders. When you request a channel on transponder 23, the receiver tells the LNB on the dish to switch to the corresponding polarity. All the signals from that transponder come to the dish at once, and the receiver pulls out the one it wants.
So the multi-switch tells each LNB to take one polarity and stay there, so all the channels are coming into the multi-switch at once (half on one LNB, half on the other). Then you plug each receiver into the other side of the multi-switch, and it connects the receiver to the LNB that corresponds with whatever polarity is needed. If you're like me, a big light bulb just lit up in your head as you exclaimed, "a-ha!"
A pretty neat solution for the problem. And in theory you could hook up as many receivers as you wanted to for one dish, I suppose.
Tonight I try to do some cleanup for MacPerl 5.6.1b2 (I expect its release before November). I am slightly discouraged as I find more bugs for MacPerl that I cannot fix, and must rely on Matthias to help me with. Oh well.
The idea is that medical facilities not only don't give patients access to their own records, but they also sometimes give access to those records to parties whom the patient might not approve of. So the patient is stuck not knowing what their own records say, not being able to get other medical practitioners the information they need, and losing a lot of privacy. Read more about it in British Medical Journal and the International Journal of Medical Informatics. (Sorry gnat, it is not bioinformatics, but it is close ... .)
Some of the problems they are running into are some of the same ones many of us run into daily. How to keep data secure, how to accomplish reasonable authentcation, how to protect privacy, how to be scalable. The problems are exacerbated by the heightened interest in security, however; everything in my medical record, including what is in my record, has to be encrypted. Even the "database" of patients is distributed, and only by having proper permissions can you gain access to that information.
Did I mention the whole thing is going to be Open Source? Perhaps not. So far the reference implementation is in Java, but a PING server can be written in any language, so long as it follows the API and specifications. Of course, that means a whole layer of dealing with standardizations and certifications and ... maybe Java is an appropriate language for it to be written in. ;-)
Anyway, the technical problems are significant, but not insurmountable. Public acceptance is a much tougher issue. It is very interesting, and I have only spent a day thinking about most of it, which is far too much to express here and far too little to fully grasp it all ... as with most of life. :-)
Anyway, I am not going to argue with someone in my journal anymore, as a general rule. However, might I suggest that if you say something controversial in your journal -- or say anything at all -- that you wish to invite comment on, please select Comments Enabled for that entry (or select it as the default for all new entries). Then arguments can take place in context, as comments on the journal, and won't waste our precious journal space. And if you don't wish to invite comment, I suggest that you don't say too many controversial or attacking things. Human nature often dictates that people respond, whether or not they should.
Thanks for listening, and I am sorry to those whom I've offended. Somewhat. ;-)
I am sure that some people think differently, including both Christian and Jewish theologians. But most don't. So I am just stating the fact that you misrepresented a religion you are not a part of, and that you shouldn't do that.
I find it illogical and moronic for people who say that they are 'men of god' yet say 'nuke the fuckers back to the stoneage'
Well, you can rest easy, because no one around here is saying that. Feel better yet?
I'm not attacking your faith or calling it stupid,
You did both, actually.
merely saying that there is a dichotomy in reason in saying 'god bless america' and bombing the shit out of another country and calling deaths 'collateral damage'.
That is your right. I know you are wrong, but that's OK, I don't care. I am just asking you to watch the ad hominems that you're tossing around. Say you think it is illogical. Don't arrogantly say that people who have beliefs different from yours are moronic and stupid. Accept that they believe different (see my conversation with Davorg for an example on how people can respectfully disagree). That's all I am saying: have some respect.
As long as the US isn't a police state jailing me for such opinions, I'll feel free to express them.
Again with the hyopcrtical martyr bit! I am not saying you shouldn't express your opinions. I am merely expressing my own. Why is it that when you post, you are merely expressing your opinion, but when I do, I am somehow oppressing you?
gnat has a really cool entry in his journal today about project management. I apply many of those principles, I think ... I should apply more.
If it doesn't matter who is right and who is wrong, then why bother having opinions and giving them to people and defending them and holding fast to them? You could say it is just your journal and your thoughts; well, this is just my journal, and my thoughts.
It does matter. It matters to you, it matters to me. If you want to pretend it doesn't, fine.
But America is "getting serious" because the foe has done something that is pretty damned serious. Nothing like this has ever been accomplished before by this foe, anywhere in the world. I don't see how it could justify not getting serious.
You speak, erroneously, as though the US has not been fighting these people for some time. We caught the people who were behind the attack on the WTC last decade. We caught people who tried to attack on the Millennium celebration. We are constantly fighting against them. We have been serious about it. Maybe ineffective in many respects (say hi to Lebanon, and bin Laden), but still, we have been serious, and we have been fighting this foe as much as almost anyone else.
Now, we are much more serious, because it is demanded of us.
And yeah, bin Laden does want us to perpetrate violence. He does want a war with the Middle East. That's why I've said I am glad that America's biggest priority has been to form a coalition of nations, including most of the Middle East, to fight this enemy. Pakistan and Saudi Arabia and Jordan and even Palestine are key to NOT having a World War.
As to your attacks on the religious beliefs of your countrymen, you should study the Bible a bit more before you incorrectly assume that orthodox Judaism or Christianity teaches that "thou shalt not kill" means "thou shalt not kill." The word is "murder", not "kill". If you don't know the difference, I can't help you much ... but please stop misrepresenting a religion you are not a part of. I have been battling for weeks now to get people to stop misrepresenting Islam, so it is not merely a personal issue with me.
And finally, please stop the tripe like your "Leave the rest of us who remain dubious on this conflict to grieve a ''civilisation'' that still hasn't gotten past caveman." You are the one who started this whole thing off by attacking beliefs of mine (and many others). If you attack our beliefs, please don't complain when we respond and attack yours.
I mean, you sit here attacking my religious beliefs, call me a hypocrite over them, call me stupid, and ask me to not respond? You can't be serious.
It's almost like you see yourself as bin Laden, attacking your foe (America and Americans), and then complaining when we defend ourselves, and then state that you will never go away unless WE leave YOU alone ... I don't buy it from him, and I don't buy it from you.
Anyway, I am not calling you stupid. Please offer me the same respect. Thanks.
So I have the wiring mostly done for it. I have another DirecTV receiver upstairs, though. Soon I will do some testing with diplexers and my cable, to make sure it works well with my cable modem and the upstairs TV. Then I will get the multi-switch so I can have all three receivers getting dish singals at once.
I also recently wrote a script (with some modifications to MacPerl) to ask my MP3 player (either locally if running, or over the network otherwise) what is currently playing. I just hit a keyboard shortcut from within any app, it runs a MacPerl script in the background, fetches the data, and sticks it on the clipboard.
NP: I've Been Delivered - Wallflowers (Breach)
Still good stuff, and the Millennium Plot story is still good to read online.
"I would disembowel him with my hands, because I have such hatred for what he did to me and to my friends and to other people. I would love to see Mugniyeh caught, and I would be there to listen to the sentence of his death."
Jacobsen still harbors anger at his captor. What would he do if he faced a captured Mugniyeh?
- We do not give terrorists what they want. If we were going to withdraw, we are less likely to do it now than ever. We are not doing anything wrong with our presence in the Middle East, and have no reason to back out.
- We do not abandon our friends, and shall never abandon our allies. Saudi Arabia and Kuwait are our friends. We protect them. Israel is our ally. We will do anything for them. Shall we question is Israel should be our ally? I don't think there's room here. :-) But the point is that they are, and we will not abandon them.
- We use our alliances to further our own vital interests. So while we are not doing anything wrong, we also are doing what is right for our friends and allies, and what is right for us.
So we have no reason to withdraw, and we will not do it. We will not sacrifice the interests of ourselves and our friends and our allies for the sake of people in other countries who don't happen to like it, and even if we were so inclined, we would not do it at gunpoint, because that just rewards their behavior.
As to attacking another nation, I don't see how you can say it is not justified merely because they are not attacking us. If that were the case, then any nation could simply protect and support private citizens in their borders to attack other nations, and no nation would be justified in using military force to fight back. I can't see how that logically follows.
And yes, more people will certainly take their place. This is not a reason to not act, but a challenge for the future to be overcome. I don't pretend that we can kill them all, that we can stop them from trying again, that we can stop them if they do try again, that military force will be solely effective. Military force is the least important act of what needs to be done, but it is, in my estimation, necessary. What will be more important are having our allies and our friends and the other members of this "coalition" doing what they can in their own countries to fight the battle. That is the key. Without it, we're kinda screwed.
And the reason the "Western press" has not said how many have died is because there is no way for them to know! Not even our military knows, probably.
A nation is not an artificial construct. I won't explain it to you, though, because I figure you would know what I say but merely disagree. And unfortunately, you can't buy me a beer, because I don't drink -- one more thing we disagree on! -- but the events of the last month have more than once tempted me to start. But I will gladly accept a root beer, either before or after my team beats yours in the next Quiz Show.
To compare it to bombing Belfast doesn't make sense. You would have to compare it to bombing military and communication and training targets in Belfast. I am confident that if the IRA were murdering 6,000 people in one shot, the British response would have been more significant.
And no, 6,000 people have not died in Afghanistan as a result of the bombings. Not even close. We are barely hitting any people. I'd be surprised if 500 people have died from the bombings, and I would be surprised if more than 5 percent of them were innocent civilians.
But Davorg, I ask you the same thing I ask everyone else: what should we do, then? I simply will not accept "do nothing", as hfb said. They will attack us again if we do nothing. I also will not accept "leave Kuwait and Saudi Arabia and abandon Israel." If Kuwait and Saudi Arabia WANT us to leave, we probably should; but they don't. And we will not abandon our ally, Israel. So what should we do? If we do nothing, they will kill more of us. I do really want to know what you think we should do. You are a pacifist and I respect your opinion on the subject, and I don't see how this can be solved by pacifism. So please enlighten me (I don't say that sarcastically).
America and the UK are doing the bare minimum of what we are obligated to do: destroying their military and communication and training capabilities as a precursor to going in and taking them out, and doing our best to avoid civilian loss of life.
As to jjohn, of course the US/UK response will cause more terrorist attacks in the short run. No one is talking about it much because it is a foregone conclusion. What is there to debate on the point?
The "media" is rallying around Bush because he is doing a damn fine job, by any standard. While I find much of the media coverage distasteful, I don't find it any more distasteful than normal. It's just necessarily magnified by the circumstances. I don't think it is in any way rational, however, for you to compare the lack of virtues of the initial attack to the media coverage thereof. Please, let's have a little bit of perspective.
And what's WRONG with displaying patriotism? For some people it is superficial. But for many people it isn't. What's sad isn't that they are displaying their patriotism, but that so many people -- like you -- can't see the sincerity of it.
I am surrounded by diehard cynics who would rather think the worst of everyone and everything. People actually are patriotic, you know. People actually like the President. People actually know that what America is doing is distasteful but they happen to believe, logically and rationally, that it is necessary. You can hide behind your arrogant and self-righteous indignation at how we are all insincere and moronic sheep, but the fact is that many of us know what the hell is going on as much or more than you do, and we still believe what is going on is the Right Thing. Get over yourself.
Yes, there is a lot of nonsense going on. There are stupid people, and a lot of them. People are using the patriotic sentiment to pressure people into doing things they don't want, to stifle opposing views, to take advantage of others, and to justify evil and immoral acts. But for you to group everyone together in that is just like me saying all Afghans deserve to die ... which is something I'm not doing.
I am GLAD people jumped into the flag business. There's nothing bad about that in any way whatsoever, unless you believe it is wrong for me to want a flag, or you think capitalism is bad. Somehow, jjohn, I don't think you believe either of these things.
But people want flags, for good reasons, whether you like it or not. I want a flag. I had one that I purchased from the Veterans Association years ago and which I've flown on selected occasions every year, but lost it somehow in the last year. I wanted to go buy one and couldn't find one. I want more people to make and sell flags, so I can replace the one I lost. It is simple fact -- again, whether you like it or not -- that my patriotism, and that of many others, is not superficial at all and it is not in any way devoid of meaning.
You don't have to share in my patriotism, if that is your wish. But just because you don't share in my patriotism, that doesn't mean it doesn't exist. Just because hfb don't believe in God, that doesn't mean that He doesn't exist. I don't mind people who don't like what is going on. But when "leftists" turn around and condemn my beliefs as invalid, it is more than just a little bit specious.
Jjohn, I love you. HFB, you scare me ;), but I love you. But dammit, stop being so dismissive of beliefs you don't agree with. This is what we call intolerance and closed-mindedness, the things that liberals often rail against but don't hestitate to jump right into when it suits their purposes. If you disagree with the military action, fine, say so, and tell us what we can do instead. If you disagree with the jingoism -- and I am not immune to the concerns -- fine, say so, but don't lump everyone together, and don't you dare dismiss the patriotic and pro-militrary-action beliefs as invalid just because they are shared with people who rightfully deserve our disdain.
For those of you who think I am, as jjohn said, "UNABLE OR UNWILLING TO HEAR DISSENTING OPINIONS," please don't waste my time. I welcome opposing views. I run this site and don't in any way stifle the views of others, whether they are about the military attacks or Microsoft or Mac OS.
Many of my best friends, on this site and elsewhere, disagree with me. This is just another hypocrisy of the left -- one I hope jjohn is not falling prey to -- as though arguing against what I disagree with is somehow evidence of lack of ability or willingness to accept dissent. It is nonsense, so please, leave it alone, if that's what you're thinking.
And by the way, the US Flag Code states "However, when a patriotic effect is desired, the flag may be displayed twenty-four hours a day if properly illuminated during the hours of darkness." Also, you can display "all-weather flags" in foul weather.
Lastly, Davorg (if you've read this far!), I know you won't agree, and I respect that, but I just thought I'd share a quote from James Burnham of the National Review: "You know, it's simply not true that wars never settle anything."
And the only thing about being American that I think constitutes a lack of dignity is our propensity to bitch and moan and be self-righteous about every damned thing.
Slash is moving along, too. We haven't put out the beta yet, but it is not for lack of forward motion. We just see a lot more places to improve the code, and then hit the occasional wall (as always happens in this sort of thing).
On Friday I am going to talk to some people about a cool project called PING (Personal Internetworked Notary and Guardian), an Open Source medical records system where the patients control their own medical records. It sounds very very cool.
And read use Perl; journals.
I have the site set to send me mail when a "friend" posts a new journal. I hope it is working.
Also note that when you create a journal entry, you can enable discussions for that entry. Or you can enable comments for all new entries in your Journal prefs (see edit/delete).