03/13/07

How not to treat developers

I’m not sure what happened last week, but it seems that the difficult users all decided to come out of the woodwork all at once. Maybe it had something to do with the phase of the moon or the change in daylight savings time?

For those of you not paying close attention, I’m referring to these tickets.

So not to make this a rant (I think I’ve done that enough), this is just a friendly reminder that Free/Open Source Software developers are:

  1. Not your slave
  2. Generally pretty busy with things like a job and personal lives
  3. Working on the project in their free time
  4. Writing code because they enjoy it. When they stop enjoying it, they’ll stop writing code and then where will you be?

Hence, try to treat these developers with a little respect. I’m not saying you have to kiss their feet or anything like that, but remember that you’ll catch more flies with honey then vinegar.

03/1/07

Win32/Cygwin working

I’m happy to announce that I’ve used tcpreplay to send packets under WinXP/Cygwin. I have to say, the port has gone a lot smoother then I expected. I’d guess that getting basic functionality working was probably about 25-50 lines of code (most of that GNU Autoconf). While I have run into a few problems that I’m not sure yet how to resolve, things are actually going quite well so I’ve moved up Win32 support to 3.0.RC1. If anyone is familiar with creating an installer for Win32 (MSI or something like that???) I’d love to hear from you.

02/22/07

tcpreplay 3.0.beta12 released!

I’m happy to announce that 3.0.beta12 is finally out. This is a pretty important release because of the extensive changes to how different DLT/Layer2’s are supported in tcprewrite. In the past it was a big block of monolithic code which as many of you know had some serious bugs and limitations. 3.0.beta12 moves to a full plugin based architecture which makes adding support for various DLT’s very easy. Continue reading

01/13/07

No destructor? WTF?

Ok, I’ll the be first to admit that I’m no OO guru. Most of my OO coding has been done in Perl for heaven’s sake. I’ve also dabbled a little in C++. Now I’m learning Ruby. Ruby has some really cool idioms and features which really make writing code easier and cleaner. Of course, not everything in Ruby has me singing it’s praises. This is another of those rants…

Basically, I’m trying to write a brain dead simple class wrapper around multiple temporary files. One feature of the class was to be that the user doesn’t have to manually delete the temp files…. basically when the class goes out of scope, I’d hook into the destructor to delete the files automagically. I know this sorta thing is doable in Perl, Java and C++. Imagine my surprise when I found out that Ruby has no destructor, just a “finalize” method which is only called during garbage collection- NOT when the object goes out of scope. As a matter of fact, Ruby doesn’t provide any way to do what I want without using closures which severely limits my class since it’s designed to be managed remotely sorta like RPC.

For a language which seems to pride itself on it’s flexibility and ability to override just about any method, not being able to hook into when the object goes out of scope is just plain lame.

01/9/07

41 downloads/day?

I was just browsing SourceForge and noticed that they seem to have (finally) fixed the project stats. Anyways, I decided to check out the tcpreplay stats for the last two months. Did the math and people are downloading tcpreplay 40.9 times on average per day. Wow. Honestly, I didn’t think there were close to that many people downloading the source code… after all most people can get tcpreplay from BSD ports, RPM or the like.

Anyways, short status update. I had hoped to work on tcpreplay over the holidays last month, but was too burnt out to do any coding. Hopefully I’ll be able to find some time soon to continue the work on the DLT plugins. On a side note, I found someone else is working on a similar suite: Bit-Twist. Looks like he’s made some good progress in under a year.