the Design Experience Weblog Archive

I just had the idea of adding a caching feature to the OpenACS templating <include> tag. This would probably require support on the including script, and the included script. Includes in OpenACS can take arguments, so it would make sense, I think to cache on those values. In addition an includable page fragment would probably need a way to advertise whether or not it was cachable at all.

Then again, maybe its best to just cache at the database level. That is generally going to be the greatest bottleneck in an OpenACS system. The code that renders the template usually runs very quickly, and the round trip to the database is almost always the right place to improve peroformance.

One thing that would make sense is that caching decision could be made at the page level. So if one page were slow, and it had a number of included parts, it could just be cached by changing the template without diving into the underlying code.

To make it work it would be nice to finally allow a page contract for includable elements that is similar to ad_page_contract.

After writing that, I realized that the include caching is very similar to the partial rendering idea that the content repository and old aD-CMS supported. That is, a datasource could be combined with a template and written to the filesystem. Maybe that is another way to explore caching of includable content the old-fashioned way.

06:10 PM, 30 Jun 2004 by dave bauer Permalink | Comments (1)
categories: OpenACS , Open Source Content Management

Here is a links of neat math related links I found by reading a post by Sam Ruby that mentions knot theory in my news aggregator.

02:24 PM, 29 Jun 2004 by dave bauer Permalink | Comments (0)
categories: Learning

Weblogs, Schools, LDAP? [tuttlesvc.teacherhosting.com]

Another article on integrating weblogs into school information systems and directories such as LDAP. .LRN fills this need as well.

That said, I really do appreciate the simple tools loosely joined concept that Tom is thinking about when he mentions Blosjom and OS X. This is a great thing if you can web enable a users directory and get a nice weblog editing tool. You get file sharing for free then, although, I'd throw WebDAV support in there as well.

We will have to see what schools adopt. Right now I think .LRN definitely meets needs of many big schools, espcially with privacy and other rules the institutions need to follow. I'd really like it to be much easier to install and user .LRN and OpenACS, but the tools the applications use just are not part of common operating system distributions. Of course, one of the options for data storage with .LRN/OpenACS is Oracle, which isn't preinstalled with any operating system at all.

08:51 PM, 28 Jun 2004 by dave bauer Permalink | Comments (0)
categories: OpenACS , Technology and Education

Weblogs, Wikis, Schools and Scale - .LRN Steps In [tuttlesvc.teacherhosting.com]

Tom Hoffam thinks about scaling a weblog installation across an entire school. He asks if traditional weblog software can scale to provide a weblog for every class, or even every student in a large school.

I think this is where something like .LRN really can fill a gap. It is designed for managing course and school wide collaboration for universities. It is built for thousands of users and hundreds of course. .LRN is by a high performance web application server and RDBMS and provides fine-grained permissions, security, and privacy controls. Centralized install of software is not necessarily a bad thing. The central install can provide all the tools students need to collaborate.

09:39 AM, 25 Jun 2004 by dave bauer Permalink | Comments (0)
categories: OpenACS , Open Source Content Management , Technology and Education , Open Source , Learning

Trying to get tDAV (AOLserver based WebDAV server) working with the Windows XP WebDAV Miniredirector is quite a challange!

mod_dav, the apache WebDAV module has been pretty well tested and they seem to have discovered most of the pitfalls. One of which is quite irritating. Passing perfectly valid XML, some of the WebDAV properties will be parsed incorrectly if there is whitespace, such as a newline, in between the XML elements. For example:

<D:resourcetype>
<D:collection/>
</D:resourcetype>

is not correct according to WebDAV Miniredir, but

<D:resourcetype><D:collection/></D:resourcetype>

is just fine. Whitespace within other nested XML properties is fine. For example:

<D:lockscope>
<D:exclusive/>
</D:lockscope>

is just fine.

Oh well. I document it here (and liberally comment the code) for posterity.

Using the tDOM parser $d asXML -indent none will do the trick.

06:07 PM, 20 Jun 2004 by dave bauer Permalink | Comments (0)

Setting up WebDAV server support to work with Windows XP is quite frustrating. First, you cannot run on any port other than 80. Second it appears you have to use a specific method to advertise WebDAV support than I was aware of. It looks like adding the string "DAV/2" to the Server HTTP header works.

After all that, it seems you must have a proper domain name, no IP addresses can by mounted as a Web Folder.

That is all I have figured out so far.

Thanks to the wonderful MS client bug tracking page at http://greenbytes.de/tech/webdav/webfolder-client-list.html

I'll post some more tomorrow as I learn more about this. I think I'll be rereading the w3c-dist-auth mailing list to see if anyone else has ideas.

11:15 PM, 17 Jun 2004 by dave bauer Permalink | Comments (0)

In AOLserver 4.0.5 to enable HTTP Keep-Alive support you have to add three parameters to the config file under ns/parameters

maxkeepalive $maxconnections; # should be equal to maxconnections
keepalivetimeout 30; # in seconds I suspect
keepaliveallmethods true; # enables keepalive for all methods

Now this is all nice but on line 260 it checks for status code 200 before setting keepalive. There is a lovely comment telling exactly what is going on:
/*
* Output a connection keep-alive header only on
* any HTTP status 200 response which included
* a valid and correctly set content-length header.
*/

Did I mention AOLserver is some of the best C code around? I don't know C but I can read it.

I am writing a WebDAV server and a very common result is a 207 Multi-status response. I am trying to mimic the mod_dav behavior as close as possible to figure out how to properly support MS Web Folders and I wanted to eliminate that variable.

So on line 260 I changed it from:
((connPtr->responseStatus == 200 &&
to (((connPtr->responseStatus == 200 || connPtr->responseStatus == 207) &&

This works and Keep-Alive is enabled for status code 207.

Update: I don't think it affects the Web Folders support after all (see the next post about XML and whitesapce for the definitive answer) but it might improve folder thumbnail view displays where the client has to do a GET for each image. Windows Explorer keeps track of the last time it downloaded the image and passes an If-Modified-Since header, so hopefully the server will return a 304 Not Modified response and everyone will be happy.

Update2: This has been fixed for AOLserver 4.0.7, and their code is better than mine.

09:50 PM, 17 Jun 2004 by dave bauer Permalink | Comments (2)

I wanted to write a shell script to run a command a few times simultaneously to do some crude load-testing and timing, and I searched google (of course.) I found this article over at Developerworks that gives a pretty good tutorial on what sort of things should be in your script including input testing and providing feedback on what is happening or what went wrong during a script run.

04:40 AM, 13 Jun 2004 by dave bauer Permalink | Comments (0)

I have created a tsearch2-driver package for OpenACS. It uses the latest tsearch2 add-in for PostgreSQL. It should work with any version of PostgreSQL that works with tsearch2. It simplifies the install because tsearch2 includes an in database parser. The previous tsearch1 driver used the OpenFTS external parser.

I have it running on this site, and it seems fast enough. There are not that many documents though, only around 4000.

The driver is very basic. It doesn't yet support OR or NOT queries, but the query parser does, so it will be straightforward to add it. In addition tsearch2 supports multiple dictionaries, so it might be possible to index content based on the language it is written in.

References:
http://www.sai.msu.su/~megera/daveb/gist/tsearch/V2/

01:10 AM, 06 Jun 2004 by dave bauer Permalink | Comments (0)
categories: OpenACS

Papert on Project Based Learning [www.ultralab.org.nz]

Derek's Blog has a link to a series of interviews with Seymour Papert on Project Based Learning. The interviews look interesting and I will be checkng Derek's blog on project based learning in the future.

It is part of http://www.ultralab.org.nz/textpattern/index.php and related to http://slartibartfast.ultralab.net/tomsmith/?q=import which I found from a link on http://dev11.otherworks.com/theotherblog/Articles/2004/05/28/quUxhHqfYd from http://careo.elearning.ubc.ca/cgi-bin/wiki.pl?SmallPiecesLooselyJoined/FenceSitter which is part of the session on collaboration "Fast, Cheap, and Out of Control" using available technology such as weblogs, wikis and IM. It seems there will be a "discussion" on the centralized vs. decentralized model, but most people seem to realzie there will be a bit of both.

OpenACS and .LRN are a centralized system in that the toolkit can provide all those collaborative tools, and tie them together in interesting ways. I'd like to see how seperate tools can be intergrated with each other and with OpenACS and .LRN as well.

08:57 AM, 02 Jun 2004 by dave bauer Permalink | Comments (0)
categories: Technology and Education , Learning

XML

Notifications

You may
request notification for the Design Experience Weblog.

Syndication Feed

XML