Archive for March, 2001

Last Day at BankOne

Friday, March 30th, 2001

Well... today is my last official day at BankOne and I have very mixed emotions. The package is nice, but I can't help wonder what would have happened if... Oh well... nothing I can do about that now.

I realized that I didn't have a consistent verison of PHP 4 on all three servers - sparky, barney and opus. Much to my surprise, sparky was the furthest from current running 4.0.3pl1. So I took the time to get opus to 4.0.4pl1 as well as building 4.0.4pl1 for sparky. I really like PHP and now that all the machines are at the current release we're in a good position to use either of the XML-RPC PHP clients. Nothing major, but since I had the time it seemed like a good thing to get caught up on.

I talked to Joel today - freshly back from vacation in the Florida Keys, and he suggested I get the CIA codebase up to the ISP and build it without PNG or FFTW support - as they have still not installed those components on the server. So I built a tar file and shipped it up with scp - gotta love those OpenSSH tools. Anyway, I get the code up and then go about modifying it for the above limitations. Not too bad, I think to myself.

Then I try to make it and get a ton of errors. Holy Cow! This server doesn't have the GTK includes installed on it! So I check and sure enough, the RPM gtk+-devel-1.2.8-7 is missing. So I send off a message to Joel to relay to them asking for this to be installed as well. I understand the desire to install 'less' rather than 'more' on servers where you're selling the free space, but the time they've lost in putting these on after the fact is more then offsetting the up-front lost revenue. Penny-wise, Pound-foolish.

When they get the GTK includes installed I'll be able to build CIA - with the limitations. If they get libpng installed, I can finish building Ploticus, and remove that limitation. Hmmm... service really is everything, isn't it?

UPDATE: - these guys at the ISP are amazing... I've been waiting to see when they get the GTK development package installed and have noticed that they only installed two of the four packages for VIM. Now it's true that they saved several MB of storage, but at what cost? Now gvim isn't there, nor is vim. The syntax highlighting is not there, but they have a form of VI... It's amazing.

They have a web-based technology look-up that does some kind of query to see what's installed on their machines, and it says gtk+-devel-1.2.8-7 was installed today, but the files aren't there, nor is the package listed in the RPM database for the machine I'm logged into. So they have a disconnect somewhere, and we're suffering for it. Oh well... what do you expect from a company that's doing this on the side... We might not have gotten a lot better service from a serious hosting site, but I have to wonder why it is that they are up and happy - with satisfied customers, and we're here fighting about what packages are installed. Holy Cow.

Some little stuff…

Thursday, March 29th, 2001

Today has been pretty uneventful. Late yesterday I had to re-arrange my 2kVA UPS as it was interferring with my SGI's monitor - a little wobble in the lower-right-hand corner of the display. Annoying, so I had to un-stack the units. Also, the stacked units were covering the CD-ROM drawer on tux so I needed to un-stack them regardless. At least now the distortion is acceptable, but I've got a lot of stuff in this office, and it's hard to keep the interference down.

I've run pupdate on sparky which updates my Solaris 7 installation with all the current patches from Sun. It's normally a real pain to do this by hand, but this script I wrote makes it a lot easier. It seems they keep cranking out patches or updates to existing patches on a regular basis and I need to keep checking to stay up to date.

I have received word from RedHat that there are a few packages that need updating and yet my traditional mirror doesn't have them yet. I've seen some of them on RedHat's ftp site, but I have always had problems getting things from RedHat's site simply because it's so busy. The files are there, and they'll make their way to the mirrors in a day or so, I just have to be patient.

Things are going well besides all this... it's quiet, but that's good too. I heard from another headhunter who saw my resume on a web site and wanted to present me to another company. I said "Sure", and we'll see if anything comes of it. No other word from the other places that I've been talking to. Tomorrow is my last official day at BankOne - after that I'm on the package which is both good and bad. Lots of emotions tied up into this place... of late, most of them are bad.

Well... Joesph's home from school, so that's good. I'll go play up there for a while and take the phone with me in case anyone calls. It's been a slow day for Science... wish I had Dexter's fountain of ideas to work from - that little guy's got a lot of spunk.

Late today I got a message from the project lead for bidwatcher asking me if I could go through the CVS files for bidwatcher and make sure everything is there. I jumped at the idea and made the changes and sent back a diff file for the latest changes. It's nice to be able to help out in projects like this. I really like doing it. Well... it looks like my changes will make it into the next release of bidwatcher. Yippee!

XML-RPC and New UPS

Wednesday, March 28th, 2001

One of my current interests is the communication between machines for the purposes of solving a problem. Like having a 'calculation engine', or 'valuation server'... machines that did a non-GUI activity very fast and was available for anyone to use with a minimal of fuss. A few months ago I heard about XML-RPC and the more I read about it the more interested I became. I've always liked good, solid RPC designs - CORBA, RMI, but this is nice in that it has clients and servers for a host of languages - PHP, Perl, Tk, Python, C/C++, Java. These make it very easy to host on a platform that's just about anything you want, and have a client come in from just about anything.

This morning I decided to get into it a little more and picked up a PHP client/server implementation from Useful software that works fine on the PHP 4.03pl1 I have installed on sparky and barney. What I wanted to do was to set up a server on sparky and hit it from a client on barney.

The docs don't give you a lot of help here, but it doesn't take a lot to figure it out, either. Basically, you need to install the directory in a central location. I chose /usr/local/xmlrpc-php on sparky and /usr/xmlrpc-php on barney - these are reasonable defaults for Solaris and Irix, respectively. Then I edited the PHP files so the include() directives pointed to the installed directories. Finally, I linked the server.php file to my public_html directory on sparky and copied the client.php to my public_html directory on barney. I could then edit client to point to sparky and /~drbob/server.php.

At this point, I was able to go to barney and pull up http://barney/~drbob/client.php and it worked perfectly!. I couldn't have asked for a better result. The XML-RPC standard uses XML over HTTP, so it's a natural to have a server written in PHP. With all the capabilities PHP has, it's easy to see that any complex processing could be shelled out to any language and the only thing the PHP server needs to do is the basic interface. Very nice.

Now I'm in the neighborhood looking for a good project to use this on. One that comes to mind is the Quip Solver. It takes a cyphertext and a key and returns a plaintext. This would be OK, I suppose, but it's not exactly what I had in mind. Maybe I'll do it just for fun and practice... But I'm still looking for a better project.

Today I finally received the other half of my APC Smart-UPS 2000 that was supposed to arrive yesterday with the first half, but got lost on the truck and arrived today. After letting it sit for a few hours (as recommended by the docs), I moved it into place taking the 900VA UPS that was covering barney and putting it on wally. The 2kVA now covers tux and barney and is operating at a very low load. Excellent! It's nice to know that I can now put all three major machines on the net and have them protected nicely against outages.

NT Incursion

Tuesday, March 27th, 2001

Now I can see why people use NT - heck... I have two machines myself, and use them on a daily basis. But what's caused me trouble today is the DOS-Unix CRLF conversion problem. Specifically, The Weather Channel is now servicing two different pages/servers - one is Unix-based, and the other is NT-based. How do I know? One has redundant CR codes on every line and the other doesn't. Normally, I'd be OK with this, but sed doesn't allow for a regexp matching the control code. This makes it very hard to get rid of them. Thankfully, Solaris has dos2unix and it can strip the codes while leaving Unix files intact.

It just goes to show that once again, scraping screens is hard work when you can't pin down the screen to scrape. And while I understand load balancing, it really helps if the load balance between machines of the same type - at least of the same CRLF-design.

I also sent all my patches to the bidwatcher crew... I like the idea of having a single status line - as in the original version, but I understand the need for different UIs. Heck, we could even make it a preferences item and have them changed on the fly. Anyway, I sent in the patches and we'll see what they are going to do about it. I read on the forums that they are trying to get the 1.2.1 tar file updated, and maybe they'll incorporate these fixes and put up a 1.2.2. We'll have to see.

Updates and CallBacks

Monday, March 26th, 2001

This morning I looked into two updates for some Open Source tools I use all the time - bidwatcher and GAIM. Now, previously I had said that I didn't like the stream of bugs in GAIM updates, but as long as I checked to see if the fixes I'd submitted are in, then I think it's a reasonable thing to try and compile it to see how it goes. Thankfully, it went well, and other than the problem of AOL blocking out the Oscar protocol from AIM-clones, it's fine.

I also tried to upgrade to bidwatcher 1.2.1 but the gzipped tar file on the site was improperly made and couldn't be gunzipped. Thankfully, the 1.2.0 file could be and I downloaded it and built it. What I saw was a very mixed bag, and as a result I'm staying with my modified 1.1.9.1 version.

The designers decided to update the code to make the right-clicking on the auctions easier, but then they added two status bars at the bottom of the window. Now I don't claim to be a UI expert, but that's almost by definition excessive. They have one for error messages and the other for bid status updates. Now if you have an error, then the bid status has got to be bad, and if you don't then you have no need to display an error, and the status is seen. Therefore, there's only reason to have one. One - that's all.

So I sent off a few messages to the bidwater forums and we'll see what happens. I think I'll patch the code to have a single status bar just because I can't imagine what on earth they must have been thinking of. The best solution is to use the status bar at the top of the window for all needs and leave it at that. Maybe that's what I'll put in and see how it flies.

I also need to make some calls about the interviews and call about the new 2kVA UPS for the office. Not a lot, but enough to keep me off the streets as they say...

UPDATE: I fixed the 1.2.0 version of bidwatcher to use a single status line - the one that already existed in the older version, but also allowed the new users to have their dual-status bar UI. I've emailed the maintainers to see if they're interested in the optional improvements. We'll see if they come back interested.

I called about the interviews and told the headhunters how it went. I also found out that one of the places I was really interested in was getting back in touch with them. It might be really nice to hear from a few of these places this week. Good.

Finally, I called about the UPS and it should be here tomorrow - they say. What I'm hoping for is to be able to switch out one of my 900VA for this new 2kVA and put barney and one of tux's supplies on it. I figure that's about 1000W which should give me about 23 min of support on the 2kVA. At 115 lbs. this is a serious UPS which is very much in need in this office. Anyway... then I'll take the 900VA and put it on wally the NeXTSTEP machine and get rid of that awful TrippLite that I never should have gotten in the first place.

More Interviewing and Weather

Sunday, March 25th, 2001

Today in a slightly different order...

I had some really good interviews on Friday. Glad to have them. Both groups thought I was more than qualified for their projects/positions, and I was able to really talk to both of them at the depth that I want to to try and get to know someone. The first person believed they had the ideal group I've always been looking for - but I think he was a little too impressed with my qualifications. I got the sense after he said "You're more than qualified for any position we have..." that he was concerned that I might not like being at the level I would be at in his group. Don't know. I'll certainly have to learn more about that place before I can make a decision.

The second place was a gas - huge new project, lots of problems, lots of visibility, very little time. RedHat Linux is a target platform, and that's an overall combination that's very attractive to me. The work would be in a large distributed computing environment and there would be all kinds of challenges to overcome. When we pulled it off, it would certainly be an impressive feat. Very much a career highlight project.

Don't know what will happen, but it's great to have good interviews.

I had a problem on Saturday with getting the weather forecast from The Weather Channel. I think the most likely possibility is that the MediaOne cable modem went down. This is aggrivating. What I decided I needed to do was to make it a little more robust and put in a looping mechanism that would re-try the grab after a delay of 10 mins. This seemed reasonable, and I put in a fail-safe that if the time became 11:00 am, it'd fail outright. Hopefully, this will mean that I have less problems missing data from the moring pulls.

On the CIA front, Joel has been trying to get a lot of work done as quickly as possible in the last few days of this week. He's going on vacation next week, and wanted to get something for Dako to look at before he left. I had plans, and that made for a conflict that I'm not at all sure Joel was happy with the outcome. But that's life... The Dako slides seem to be giving the code a hard time, but I honestly haven't done more than put the slides in the system, and run two of them through. I didn't spend any time looking at the results, but when I do we'll see how well we're handling the Her2 process, in general.

Also, it's the end of March, and it's snowing outside. I'm tired of the cold. This has been a very long, hard winter, and I'm ready for a break.

Weather and Interviewing

Thursday, March 22nd, 2001

I had to change the script that processes the page from The Weather Channel's site because they changed the format of the information. Not a big deal, but when you're scraping stuff off the pages, it's a constant battle to stay abreast with their changes. It would be much nicer if they simply offered a database link that I could connect to... 🙂 In any case, the change was pretty easy to make once I knew what the problem was.

Then I received a call back from one of the headhunters I'd been dealing with in my latest round of job searches. The company I had interviewed with a few days ago was still uncertain about me - and the only negative things they could think of were the fact that I didn't wear a suit, and what they considered to be my limited experience with C++.

Now I don't usually rant in this journal, but here's something I'm going to rant about... I've been doing C++ work for over 15 years - OK, not every day all 15 years, but I don't write Java every day, all day, and I'm still outstanding at it. Yes, I've taken a few years off from C++ - sticking primarily to C and Java and web tools, but I'm as good in C++ as I ever was. More importantly, the technical interviews I've had with this company have all seemed quite fine with my technical skills. So much so, that they've said to my face the C++ isn't an issue. But to the headhunter they say different.

So it's one of two things - they are looking for a reason to ding me, or they aren't honest to me or the headhunter. Either is bad. Both means I don't like them.

Then there's the dress code. Now I'm not a slob - I'm very neat in appearance, and take great pride in a clean cut appearance. I bathe regularly, brush my teeth twice a day, and make sure to wear clean, pressed, clothes.

But not a suit.

I don't mind if others want to wear one, and I'll admit that there may be deep-rooted emotional damage in my background that is the root cause for this aversion to suits, but I just won't wear them. I don't own one. I can't image buying one. I own three ties, and only wear them and a sports coat in times of death and marriage. I look very nice in a button-down collar Lands End shirt and slacks. I always have polished shoes, and never try to pass off "hiking boots" as business shoes.

But that wasn't good enough for this one person. No... he was surprised that I didn't wear a suit to meet with the President of the company. Now mind you, the President himself wasn't surprised, it's this other person... but that's beside the point. The person making this judgement upon me was unkempt, wore hiking boots, and for an IT Director had the most incredibly messy desk I've ever seen. While a certain amount of clutter is normal, once the clutter stands for more than a few weeks, it fails to have any value and just indicates sloppy organizational skills. This was the man passing judgement on my dress...

Thankfully, experiences like this make me all the more convinced that this is not a place I want to work. For if they make these judgements in light of their own incredibly poor showing, then it's a situation that's bound to be bad sooner or later. I'm a very neat and orderly person, and I couldn't care a whit about what someone wears - so long as it's neat and clean. But if this place, or even just this person, is making these kinds of judgements about me, and then not being honest to either me or the headhunter, then I'm glad they're only so-so about me. I'm certainly only so-so about them.

I'm willing to give everyone a second-chance. I think a lot of the problems we have these days is because people rush to judgement and don't give second-chances. So if this place were to call me and talk up-font about these issues, I'd probably be fine with it. After all, maybe he'd had a bad day and maybe he worshiped the ground the President walked on. I don't know. But I do know that one rush to judgement is fine - so long as it's talked out. Failing to talk it out, or making another is unacceptable for me.

And so the search continues...

OpenSSL/OpenSSH

Tuesday, March 20th, 2001

Today I decided that I wanted to get into the more secure connections. Not that I think my systems are open to massive attacks, but there's a chance that something might be going wrong, and I want to at least have the tools to protect myself. So I got OpenSSL and OpenSSH and decided to figure them out.

The first thing is to build OpenSSL. It's easy and builds cleanly depositing itself into a reasonable place in /usr/local/ssl. Then build OpenSSH. If you've done it right, the defaults will make a working sshd - but you still have to get it to start up and shut down properly. So I spent a few minutes putting it into the chkconfig system on Linux and Irix, and then made a simple script for Solaris. Nice.

Now I have SSH running on all of the machines that touch the world, and that's good. I also have the clients on several others which is even better. Now I can get to places a little more securely. One of the nicest clients is PuTTY for Windows 95/98/NT/2000 - excellent piece of code.

Cleaning up CIA

Monday, March 19th, 2001

Today I decided to clean up the Her2 processing of CIA. Basically, we needed to have a controlled two-pass system - the first to gather the stats on the cell nuclie and the second to gather the stats on the stained membranes. This needed to be thought out before coding as the file names, as well as database records, would tend to walk all over each other. With a little help from this journal's design I decided to be smart about it and have a single command-line argument (-m) indicate to CIA that it needed to do both passes.

First, I had to differentiate which pass I was on - that was pretty easy, actually. Then when I had that, I just modified the names of the output files to include a "_nuc" in the middle of the name for the first, 'nuclear', pass. This worked out great. Then I made the main code fork off a second process (could have used multiprocessors here but opted against that) and have it do the first pass, then when it finished, the second pass on the stained matter would work. In truth, there's no conflict between the passes, and it could have easily been done at the same time. It's an easy change, and if we get the processor horsepower I can do that. But for now, it's serial.

When I ran this it all worked beautifully. I was really happy that I could easily add in the default options when dealing with a membrane sample - like ditch the aspect ratio, etc. Very nice indeed. So now it has automatically generated filters on both passes, and everything is ready for production data. I'm pretty happy with the clean-up.

I'm still unable to build this on the production site, but that's up to Joel as much as anything - they don't seem to be as responsive to me as to him, so I'll just send on what I need them to do to him and let him deal with it. I was trying to get Ploticus to compile, but needed the XFree86-devel RPM loaded, and so I sent a message off to him. After Ploticus, then we need FFTW and then we can build CIA.

GAIM Releases

Sunday, March 18th, 2001

Today I got the latest GAIM release - 0.11.0pre7 in the hopes that the MSN section would be fixed and then MSN, Yahoo, and AIM would all be working again. Well... the MSN section is functioning fine, but the Yahoo code is now generating a crashing error about memory allocation that I believe is related to the GDK/GTK code. When I try to login to Yahoo, I get "Out of memory during ridiculously large request." I've tried to track this down, but due to timing issues with the login, I can't seem to get it pinned down.

This is further complicated by the horrible error message that is given to me. When I try to narrow it down in gdb or ddd I get nothing. So I've sent off messages to the GAIM folks, and I hope they can shed some light on this. I'm getting a little tired of all this breaking, but I understand that this is what some folks do when they release code. What I need to do is to get things working and then stay on that release until I hear from these guys that they have a significant, stable release, then I can move to it.

UPDATE: - I've taken the time to track down all the possible issues and found the problem - sloppy coding by the developers. There is a routine called yahoo_parse_config() where a (char *[]) array is getting parsed for configuration values. This code makes two mistakes - first, is doesn't check at the top of the loop for empty strings, and secondly, it assumes that the result of a strchr() is going to be not-NULL. They then use this assumed value in a calculation for the size of a malloc-ed array. Bad Style. When I added the checks for the empty strings and then for the result of the strchr() everything worked. It's amazing when you look at it. All these problems could have been solved with just a little defensive programming. What a shame.

Anyway... I submitted a fix for both problems to the maintainers and we'll see if it gets incorporated into their code.