Thursday, June 28, 2007

Friggen emacs

This is with the default emacs that ships with Red Hat 4, with no customization to the color scheme whatsoever:

[dheitmueller@b4 gsoap]$ cat foo
Line 1
Line 2
Line 3
Line 4

[dheitmueller@b4 gsoap]$ cat bar
Line 1
Line 2
Line 3a
Line 4

[dheitmueller@b4 gsoap]$ diff -u foo bar
--- foo 2007-06-28 11:29:35.000000000 -0400
+++ bar 2007-06-28 11:29:43.000000000 -0400
@@ -1,4 +1,4 @@
Line 1
Line 2
-Line 3
+Line 3a
Line 4

Expand the image above. See anything wrong with this picture?

Tuesday, June 26, 2007

Recycling #1 and #2 plastic in New York City

Since I got a flyer in the mail from the city a few weeks ago, I have been making a more concerted effort to pay attention to the trash and recycle as much as possible.

One big question I had was in regard to plastic. The flyer said only type #1 and #2 bottles could be recycled, but I kept running across other plastic containers that were clearly marked with the #1 and #2 recycling symbol.

It turns up, they shouldn't be recycled, and the NYC website explains why:

Recycling Symbol


There's also an interesting explanation as to why there aren't recycling bins on street corners (something I've often wondered as I looked for places to throw away soda bottles):


Encrypted protocols

I haven't worked on encrypted protocols since my last job and had forgotten what a pain in the ass it is. You don't have the luxury of being able to sniff the wire with Ethereal to see why the traffic is malformed or which peer is not behaving as expected.

Spent the entire afternoon debugging my integration of OpenSSL and gSOAP. I have worked with gSOAP for about five years, and OpenSSL for even longer, but had never used the two together.

So I broke out Eric Rescorla's ssldump so I could decrypt the traffic, and discovered that it doesn't support AES based SSL cipher suites. gSOAP picks the strongest cipher available by default, and there apparently isn't any way to set the cipher suites in the gSOAP API. I had to recompile OpenSSL with AES disabled.

Looks like I'm going to have to extend gSOAP to have this support, since we are going to need to be able to define which ciphers to use. In particular, I need to be able to downgrade from AES to RC4 at least in order for ssldump to allow me to debug the traffic. There is also almost certainly a business requirement to be able to disable weak ciphers. I'm a bit surprised that there is no way to do this in the default build.

Had a salad tonight for dinner. Watching Grey's anatomy.

Still not sleeping, which is pretty annoying.

Paris is Free!

Paris Hilton being release from jail after 23 days is CNN's front page headline.

Oh yeah, and in far less important news another twelve soldiers died in Iraq on Saturday.

I feel sick.

Sunday, June 24, 2007


Went down to New Jersey yesterday to celebrate Jen's birthday. Was good to see everybody. Jayden is getting SO BIG. Caught the train back to the city this morning.

At the office now trying to get caught up on some work. I can hear the gay pride parade on the street below.

Wow it'a a beautiful day. I love summer.

Friday, June 22, 2007


Thanks to Symantec's tech support, I successfully got my software to properly integrate with Veritas Cluster Service. Did a clean install of my agent, it automatically detected my cluster and all the Oracle databases, and they now appear in the unapproved list. Woohoo!

Watched Ghostbusters on DVD tonight.

Going to New Jersey tomorrow for Jen's birthday.

Tuesday, June 19, 2007

Perl Mongers NY

Met up with the Perl Mongers NY group ( tonight down at the Peculier Pub on Bleeker street. Met some pretty cool people. Talked shop. Some discussion of perhaps doing a talk at some point at PerlSemNY on the intricacies of embedding Perl.

Work continues. Did a ton of testing today. Reported bugs. Lunch with Shamoun and Packy at the diner.

Monday, June 18, 2007


Had a nice weekend. Vikki came out to New York. Saturday lunch at Crooked Tree. Saw Shrek 3. Lots of fun.

Left work today at a reasonable time and met up with Carter in Bryant Park to see Annie Hall. Played some scrabble; got beaten pretty badly. Ended up at a diner on 44th street after the movie where her friend Matt and I traded Carter stories to her chagrin and our amusement.

Work is plugging along. Making progress but it seems pretty clear that I'm going to have to kick it up a notch.

Sunday, June 10, 2007


Went to Philly this weekend. Played Scrabble with Vikki and Michelle in Rittenhouse Square Park. Watched Jesus Camp on DVD. Did some work in Cosi Sunday morning.

Spent all evening at the office working on the Komodo debugger stuff. Made some pretty good progress. Got the fork() support working pretty much how I would expect it to. Exchanged some email with perl5-porters on the signal handling issues I found. A relatively productive evening.

Thursday, June 7, 2007

More fun with the Komodo debugger

Successfully navigated around the $SIG{ALRM} problem I was having with my embedded perl distribution and Komodo. Unfortunately uncovered another bug where the IDE does not disable the "break" button if the DBGP stub tells it that asynchronous operations are not supported. In fact all hell breaks loose and the IDE appears to lock up if you happen to push the button.

Also discovered that the debugger stub doesn't properly handle doing a fork() in Perl. For example, if you do the following:

print "Starting up\n";
my $pid = fork();
if (!defined($pid)) {
print "fork failed";
exit 1;

if ($pid == 0) {
while (1) {
print "I am the parent\n";
sleep 3;
} else {
while (1) {
print "I am the child\n";
sleep 1;

If you try to debug this program, both processes will be updating the Komodo debugger IDE simultaneously and the IDE will become quite confused. I discovered this the hard way when I set a breakpoint in my server code, the code stopped, and then the execution pointer in the IDE continued to move because the other process was updating it.

I have written a preliminary patch which overloads CORE::fork in a begin block. Looks like it is basically working (a second debug connection is established for the child and appears to work as I would expect it) but I have a bug to work out where Log4Perl is failing now as a result of my change.

Also, still having more problems where the DBGP source command isn't working as expected, so when I browse the stack the IDE shows the wrong source files. I already fixed a similar issue in the debugger stub, but it looks like there is another case I didn't see before. Seems reproducible though, so I should be able to trace through it.

The globals window doesn't appear to work at all. I haven't even looked at that yet.

And browsing the stack only shows the local variables for the innermost frame. Was planning on looking at integrating the debugger stub with the CPAN PadWalker module so you could see the locals at any frame. Looks like the IDE fully supports it and is sending the proper DBGP commands, so if I get the stub to return the proper content, I am relatively confident that the IDE will render it properly.

On one hand, I think Komodo is a great product and the developer has been very helpful on the forums. On the other hand, I really wasn't expecting so many integration problems. Most of these are pretty straightforward to fix but the $295.00 pales in comparison to the cost of the amount of time I have burned over the last four days.

In a bit of irony, I have done all the work using the evaluation version since I wasn't going to buy any licenses until I was confident the debugger would work with our application. Maybe I can trade the half a dozen bug fixes I have made for a license key.

Tuesday, June 5, 2007

Fun fun fun

Had another fun long day at the office (8am-8pm) since the computer room temperature alarm got me out of bed at 7:35 am. Spent the bulk of the day ironing out issues with the ActiveState Perl debugger stub. For some reason $SIG{ALRM} doesn't behave consistently in my embedded Perl (resulting in my process exiting arbitrarily).

Bought a book on XUL programming tonight. Wrote a "Hello World" extension to Komodo. Looking at the DOM model to see what will be necessary to start exposing more info in their debugger user interface. In particular since my application has an emphasis on remote debugging of multiple sessions simultaneously, it would be good if there was a tab that showed the properties of all the debug sessions in progress. Pretty neat stuff.

Since Komodo itself is written in almost entirely JavaScript, I can see the vast majority of the source code. Certainly helps with extending it, since all I have to do is look at the source. Just had to unpack the jar file and there was all the XUL and JS files.

Writing Komodo Extensions:

Komodo Extensions Forum with lots of useful discussion and examples:

Friday, June 1, 2007


Went out with Dan to Flight last night until 11pm. This morning I'm still feeling like crap from all the drinking and bar food. Ugh.

Going to Jersey this weekend. Fun fun.