Re: saving a URL/newbie rant

> Sacha wrote:
> >   /* before I added this next line it wouldn't write */
> >   HTRequest_setOutputFormat(request, WWW_SOURCE);
> Of course it wouldn't write, because you have to set the output format
> according to the libwww interface you'll use.

*** WARNING ***

I am about to rant. Do not take this too seriously!

rant {

Ok. It is clear that I haven't really understood what on earth is going
on. I think the real problem is that I haven't really grasped most of
what comes in the documentation, because it lacks a really good
from-the-top intro for clueless-people-with-no-knowledge-of-anything.

When I started using the lib I tried to read the documentation to figure
out how to get going, but I found that basically it said "Play with the
examples", then went off into the deep end describing bits of the
architecture, then left me to pore through the code trying to figure out
what the hell was going on.

I don't know if I'm the only one who feels this way, and I admit I have
a tendency to get straight into coding if I feel the documentation isn't
taking me anywhere, and so my problems are usually (at least!) half my
fault. And Henrik is very patient thank god, otherwise I would be
probably be coding from scratch right now and knee-deep in protocol
documentation. Also just about everyone on the mailing list has been
very helpful, which I appreciate a lot given that people don't always
have time to answer my stupid questions.

But I don't mean to bitch too much, because with a bit of
experimentation and a close look at the example applications (BTW is
mailto: part of standard HTML? Why doesn't Arena display it properly?) I
have been getting along ok.

Constructive suggestions I would offer are either an FAQ - searching
through the message list where messages have misleading titles is a pain
- or an intro that really starts from absolute zero, like maybe a step
by step construction of a program which eventually shows off all the
things the lib can do.

Another thing I think would help is a quick intro to how the pseudo-C++
works and how it relates to C++. An example of a problem I had:

In some code I needed pointers to streams of different types. In C++ I
would use pointers to the base class (HTStreamClass) and then call the
various public methods (free, abort, put_string etc) of that class. But
when I tried to declare an HTStreamClass* I got a "pointer to incomplete
type" error. After a good old trial-and-error session, and a good wade
through the various C FAQs I figured out that you have to use an
HTSream*, then access the HTStreamClass methods via the isa pointer. I
am not even sure if this is safe since the struct HTStream is different
for each stream.

But I guess there's no-one around with the time to do all this...

} // end rant

Anyway cheers and feel free to abuse and upbraid me at will.


"ABORIGINIES, n.  Persons of little worth found cumbering the soil of a 
 newly discovered country.  They soon cease to cumber; they fertilize."
-----> from `The Devil's Dictionary' by Ambrose Bierce