On Fri, Mar 04, 2011 at 09:58:18PM -0800, Brit Butler wrote:
> 
> I wrote the CL Web Primer tutorials you were referring to. The code on
> github should actually work provided you load Leslie's form-widget
> stuff from contrib after weblocks and before clockwork.

I use weblocks installed by quicklisp-beta, which actually comes with this
form-widget, so I should be fine? I think the problems arise before it
comes to this form-widget.

> The site was
> running at http://clockwork.redlinernotes.com and certainly was up
> when I published that document. It's gone down in the past week or so

Then I must have tried just after the failure. Looks like we both were
bitten by

http://groups.google.com/group/weblocks/browse_thread/thread/b24a2c14a07e267c

I am currently recompiling sbcl-1.0.43 so I can try again.

> Why do you say, "This tutorial even fails to create a working
> application at all?"

Well, I also said that it's the best tutorial I could find ;-)

Unfortunately, there's no link to it from the prominent
http://trac.common-lisp.net/cl-weblocks/wiki/Tutorials page, so it takes
a while to find this tutorial.

> You should be able to create the app by working
> through the tutorial unless I forgot to note Leslie's form-widget
> code. That would be a gross oversight.

You mentioned the form-widget thing.

For me, the problem seems to be that at the end of part2, the reader is
left with code snippets which do not form a complete program, although
section "A few reminder methods" near the end says that the user should
already be able to submit the reminder form and a reminder will be
instantiated, persisted and scheduled. Then one clicks onto the links
to your versions of the files, and sees code that don't match the code 
in the tutorial at all.

Then the third part continues introducing more snippets with this funky
calendar script, although no working code exists at this stage. IMHO, it
would be better to have a _working_ state with ugly calendar form first.
In a later step, this can be improved by adding this funky calendar.

It's only at the very end where things are supposed to come together.
So the only option left to the reader is to cut-n-paste the code fragments.
And at the end, he gets an error like

  BOUNDING-INDICES-BAD-ERROR: The bounding indices 0 and 10 are bad for a
  sequence of length 8. See also: The ANSI Standard, Glossary entry for
  "bounding index designator" The ANSI Standard, writeup for Issue
  SUBSEQ-OUT-OF-BOUNDS:IS-AN-ERROR

and after resetting the session

  SIMPLE-ERROR: Cannot render NIL as widget. Symbol not bound to a function.

This time I double checked that I follow the tutorial exactly. And I have no
clue how to find out what I did wrong.

> The tutorial diverged somewhat
> from the github timeline for various reasons: pedagogy and clarity
> being two of them. Additionally, some things were just rewritten over
> time. In particular, Leslie asked me to rewrite to use form-widget and
> I did.

Yeah, that's an additional problem. But IMHO, the main problem is that there
are no intermediate safe islands. Only snippets that are put together at the
very end. And if it don't work at the very end, that's it. You're lost without
being able to go one step back to see where exactly the failure was.

IMHO, a better approach would be to start with a very simple program and
gradually extend it creating a series of _working_ programs as you go. Every
lisp book I've seen advertises this interactive incremental work flow as one
of the strengths of lisp. Collecting code snippets and putting them together
at the very end seems to be the exact opposite to me.

> In the third post you link to (Part 3 of my series) you can clearly
> see how SCHEDULE, GET-EMAILS and GET-TIMESTAMPS all tie together in
> the "Putting it all together..." section of the post.

Yeah, I see. But at this stage I've already given up. Including funky
calendars before even having a _basic_ working skeleton was definitely
beyond my expectations. Storing all those new concepts without seeing
any intermediate islands to rest on just don't seem to work for me.

That would not be that big a problem if it would actually work when you
put it all together in the end.

> I spent a good deal of time on those posts
> though and it would've been nice to receive comments asking questions
> or telling me things I could clarify. I wanted to write good tutorials
> but never heard what people found confusing or needed help learning
> about. Then I got busy. *sigh*

I very much appreciate your work. It was not my intent to criticize you.
I think I already wrote that this tutorial is the best I could find.

-- 
You received this message because you are subscribed to the Google Groups 
"weblocks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/weblocks?hl=en.

Reply via email to