drunen is currently certified at Journeyer level.

Name: Ian Cahoon
Member since: 2000-07-19 06:08:18
Last Login: N/A

FOAF RDF Share This

Homepage: http://ian.cahoon.com

Notes:

I work on vovida.org, providers of open source voice over IP protocol stacks and applications.

    http://www.vovida.org/~icahoon

Making a living writing open source software has been a dream of mine since first messing around with Linux back in the 0.92 Slackware days.

I have experience with VoIP, especially h.323, and am currently using the OpenH.323 protocol stack. http://www.openh323.org . It's a nice stack, better in some respects than the some other commercial h.323 stacks, just not as complete.

Projects

Recent blog entries by drunen

Syndication: RSS 2.0
elanthis: STL algorithms has a for_each. Boost's Lamba Library may also be of interest.

Had a friend of mine point out the wonderful C++ feature of pure virtual destructors.

I.e.

class X
{
  public:
    ~X() = 0;
}

X::~X() {}

This is apparently legal C++ (Sect 10.3 and 10.4). It seems counter intuitive and yet apparently serves a purpose. If no other methods of a class are abstract, a virtual destructor can be used to prevent the instantiation of the class.

As well, it seems it is legal to provide a definition of any pure virtual function. Thus the meaning of a pure virtual method is that it prevents the instantiation of a class and that all pure virtual methods, minus the destructor, can be optionally defined.

This is a slight conceptual difference than what I had thought of pure virtual functions. In practice I have never defined a pure virtual function. And the notion of defining a pure virtual destructor is disturbing. I really believe that explicitly declaring and definition constructors as protected conveys the intent much clearer than a pure virtual destructor ever could.

Sometimes I wonder how stuff like this ever gets into standards.

Just heard about Mozilla's leaky. Wow. I am constantly impressed by the quality (and quantity) of useful things coming out of Mozilla. I really should take a harder look at their code, to see what can be easily reused.

An interesting thing happened using gdb on linux today. If I try to block on poll() in a multithreaded program, poll wakes up continuously, thanks to SIG32, aka SIGRTMIN. Seems pthreads is using this to change thread contexts, and gdb doesn't seem to get it. However if I block on pthread_cond_timedwait, this isn't a problem, nor is it unexpected, since pthread_cond_timedwait can't be interrupted via a signal. Perhaps there is a gdb handle command I havent tried yet.

I was thinking about writing a signal handler that caught SIGSEGV and SIGABRT that basically dumped the stack using the backtrace call in /usr/include/execinfo.h. Too bad the linux kernel just won't dump core the right way for multithreaded programs. Too bad the kernel doesn't know about pthreads.

I've been thinking about using the sgi's state threads package. It looks interesting, despite being NPL.

What I wouldn't do for a g++ that could do precompiled headers.

1 older entry...

 

drunen certified others as follows:

Others have certified drunen as follows:

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page