(photo by phatman of flickr)

Another reference to go along with my previous post notes how Richard Feynman's description of the NASA engineering process,

"The usual way that such engines are designed (for military or civilian aircraft) may be called the component system, or bottom-up design"

coincides with good programming practices.  Jake Voytko notices that Paul Graham says something similar in ANSI Common Lisp,

View full post

posted in

Google Summer of Code pays college students to spend their summers writing open source code.

This summer has 3 projects that are related to OpenACS.

A Business Rule Management System based on the high-level object oriented scripting language XOTcl
Student: Franz Wirl
Mentor: Gustaf NeumannVienna
University of Economics and Business Administration

Business Rule Engines (BRE) are gaining popularity in complex situations where a high degree of flexibility and declarative problem formulation are important.  In particular, BREs enable the use of declarative programming---"What to do" rather than "How to do it"---which will allow people with limited or no traditional programming experience develop web-based applications.

View full post

posted in

What makes a design "Googly"? [googleblog.blogspot.com]


(photo by uptal of flickr)

Web application designer's can take inspiration from the Google User Experience Design Principles. These 10 guidelines are great to keep in mind and help you think about the people who will have to use your web application every day.  The principles tie directly into the Ten things Google has found to be true.

The first two are probably the most important to us here at Solution Grove.

1. Focus on people—their lives, their work, their dreams.
2. Every millisecond counts.

View full post

Session Timout Usability [www.codinghorror.com]


(photo by FABIOLA MEDEIROS of flickr)

Jeff Atwood is frustrated with web sites that timeout a session and lose the data that was typed into a form. There is a huge comment thread discussing the various ways around this.  Most of them are overly complex and try to use tricks like refreshing the page using AJAX. The simple answer of course is, don't lose the user's work.

Some commenters say you should just lock your computer, but that obviously is not appropriate in all situations. Short session timeouts are not the right answer for all situations either. 

Sessions timeouts are necessary for security in some applications, most people know about online banking, and really any application that expects users from a shared computer. The developers and administrators of a site need to balance security and usability and decide on the right session timeout.

View full post


(photo by art_es_anna of flickr)

There is often a need to take content from the web and share it in a different format. For one client, we built a web based report. The client also wanted the report to be able to be downloaded and viewed using Microsoft Word. To do this we decided to export the HTML results of the report as an RTF document.

A quick search of the web will show there aren't too many options to convert HTML into an RTF document that will work with modern CSS based HTML. One program that can do this is OpenOffice. Of course, OpenOffice can convert from any format it can read in, and can convert to any format it can save ,so this technique is useful for many file format conversions.

View full post

Ajax and Accessibility [openacs.org]

As we add Ajax-powered applications for our clients and share the code with others, there is some demand to make these features available within OpenACS and .LRN. .LRN, in particular, has a goal of meeting WAI accessibility guidelines. It is very challenging to meet these guidelines with Ajax-powered systems.

At the latest OpenACS/.LRN conference, we had a discussion on new Ajax applications and accessibility. I created a wiki page to document what we learned, including links to resources and best practices, as well as draft proposals from WAI for accessible rich internet applications.

View full post

I got back this week from the OpenACS/.LRN conference in Guatemala. There was a great bunch of interesting people there and there was a lot to learn.

I presented on an AJAX-enhanced data table, known in OpenACS as Listbuilder. The video and slides are available. The user interface was inspired by DabbleDB, which provides a collaborative alternative to spreadsheets for managing data. In our case, we needed to integrate this level of interactive data manipulation with an existing .LRN system. Data privacy was also an issue, so everything must be hosted internally. 

View full post

Part of our end-user support is to provide helpful tips and documentation matched with training videos and demos to assist clients in their daily applications. Our wiki and other content creation tools uses Xinha, a powerful What You See is What You Get (WYSIWYG) editor. 

Our latest how to is on editing a table in Xinha. Just like in any other application, creating and editing tables should be quite easy. In Xinha, editing tables is similar to that in windows. This short demo should be able to guide you.

And to provide you with more reference on other related topics, I've organized, in one reference page, all of our company's written documentation and video demos on how to use Xinha and XoWiki. This page contains links to the following topics:

View full post

posted in

(photo by Gzip)

I envy the web apps running off apache. They get an incredible speed boost thru compression just by enabling the mod_gzip module.

Websites on AOLServer 4.5 can use ns_zlib to serve compressed adp pages but I don't know yet if static files like images, cascading style sheets or javascript can automatically be served compressed.

We've been doing lots of front end development and the size of javascript and css files can take its toll on load times. 

Just yesterday I came accross this thread from the AOLServer mailing list archives where the author shares a filter for AOLServer that he wrote to serve up gzipped content if it's available. You don't need ns_zlib to use this filter as you are expected to gzip your resources beforehand. The filter will essentially ...

View full post

Ajaxian mentions SafeErb for Rails, an add-on to help secure that user input is safe. It does so by checking if you explicitly call a certain method to escape the user content.

OpenACS, the base for .LRN, has been doing this for awile now. We took a different approach. All content is escaped by default, and the programmer must decide when to let through unescaped content. Either way it's something all Web frameworks should support if they allow users to enter HTML. 

View full post

XoWiki prototypes [media.wu-wien.ac.at]


(photo by Gisela Giardino's Photos)

Gustaf has been adding new features, fixing bugs and updating xowiki at such a dizzying pace that it's hard to keep up with all the cool and nifty features.

One feature that I caught up with recently while working on a project is prototypes.

If you've been using xowiki for a while, I'm sure you're wondering how and why the en:index page keeps coming back even after you've deleted it. The answer is xowiki prototypes.

You can find the prototype for the index page along with some others in packages/xowiki/www/prototypes.

So how can prototypes be helpful to you. Let me count the ways ...

View full post

posted in

(photo by Facebook)

Solutiongrove is pleased to announce that we have comitted the Facebook API Package code authored by Dave Bauer to the OpenACS Community. The code for the package is now available on CVS HEAD.

In addition, we have upgraded the Friend Webs Facebook application to use ExtJS 2.0 while adding the following new features:

  • the ability to create, edit, and save your own Friend Webs
  • mini-feed publishing of user actions
  • viewing a friend's webs

View full post

We're very pleased to announce that Ajax File Storage UI turns 1.0 BETA and is now available from OpenACS CVS on HEAD.

What's New ? 

This release is a rewrite of the javascript code to use ExtJS 2.0. Additional changes include :

New to AjaxFS UI ?

View full post

posted in ,
This is a demo of a custom UI we created for one of our clients to assign users to groups and subgroups. This implementation is customer specific but the idea could be used in a variety of use cases. The interactive drag and drop makes a tedious task fun and faster!

 

View full post

posted in ,
I am working to document our new AJAX enhanced UIs. This one is an interface for LORS, the .LRN Learning Objects Repository. This specific use case is not at all general, but I think there are UI elements we can reuse for a more general solution.

View full post

posted in ,

Email enhanced collaboration? [www.mindthis.net]

(photo courtest of dangering) Lars Ploughman follows up to his 10-to-1 email rules post. Basically email is never ideal as the only collaboration tool, but should be part of an overall collaboration toolset. OpenACS is a collaboration tool that offers some good email integration while preserving the benefits of a collaboration toolset. For example, the discussion forums can be email enabled to send out new posts by email and to accept replies to those emails. This way, someone can refer later to a post by URL and all the email is archived in one place, and indexed for full text search. Other collaboration tools in the OpenACS platform can be enabled in the same way. Almost every applicaiton supports notification of new items and changes by email. Another tool that is becoming more common is RSS syndication. In this way the user chooses to be notified in a news reader instead of by email. To reply from there they can just click on a link and go to the collaboration web site within their browser. A collaboration toolset like OpenACS gives users the option to work with email, rss, or any combination. Of course, new communication mediums such as SMS can also be integrated with the right code. A mix of tools that fit each users work style while preseving a searchable centralized history and current status of the collaboration is a good solution taking advantage of the technology we have now.

View full post

posted in
I have been reading James Shore's weblog for some time now. He discusses all aspects of Agile software development practices. My main agile focus is testing, during design and development, but recently I found another interesting idea in a draft book chapter called Single Code Base. The idea of single code base is keeping all your clients on the same code. The exact same code, no branches in your version control repository. Most of us will find this a surpising suggestion, but it does make sense if you can possibly accomplish it. Imagine not figuring out which code can be shared between projects, and imagine not merging code between projects, or merging it back into OpenACS itself. If OpenACS was more flexible it might even be possible to run client projects with the official OpenACS or .LRN code base. How could we make this possible? What features does OpenACS need to make this type of reusability a reality? Recently in IRC Don Baccus suggested that package inheritance would improve reusability. I'd like to explore that idea more. I guess it would involve allowing a certain package to provide an optional user interface, or extended features built onto a base package. Right now the worst example of the failure of reusability is file-storage. It has everthing, including the kitchen sink, tacked onto its feature set, making the user interface confusing and the code difficult to maintain. We could imagine a simplified folder/file browser that provided the basic tools to build a file-storage like package, without all the overhead. Of course, over the years we have improved the focus of the toolkit and defined some best practices for how to use the features of the toolkit that did not exist when file-storage was originally developed. Now that we have learned from the history of OpenACS is a good time to improve it. The other major feature OpenACS needs for reusability is theming. That is, a way to package up the look and feel of an OpenACS install. Improved use of CSS and standardized CSS classes and ids would improve reusability, not to mention usability of the applications built on the toolkit. Putting all the CSS, icons and other design resources in one place, that can easily be overidden with local modificaitons without rewriting the application packges would make out-of-the-box installation of a new look and feel much simpler. Even if we never get to a single code base for every OpenACS/.LRN project, working towards that goal can only improve the adoption of OpenACS/.LRN and focus developer effort on improved applications instead of working around the limitations of reusability. (Edited for typos 2006-09-06)

View full post

posted in
This document is a how-to for delivering full-text, in-database search of Word, Excel, Powerpoint, and PDF documents using OpenACS, PostgreSQL, tsearch2, and a collection of command line utilities to convert binary formats to text or HTML. These techniques allows search to return results from both OpenACS applications, such as forum posts and blogs and from a full full text indexing of files in file-storage. OpenACS search is integrated with the OpenACS permissions model, so search results are only returned for documents the searcher can read. Full-text, in-database search will be included in OpenACS 5.3 scheduled for fall 2006. It will work with PostgreSQL 7.4 and up. (There is also support for full text document indexing with Oracle under OpenACS that will be addressed in a future post.) If you would like to use this feature now, the Search package from OpenACS CVS (HEAD) is required. To check out this package from anonymous cvs use the following command.
cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot co openacs-4/packages/search
Once you have the new search package installed, you will need the following utilities Any other document formats can be supported by installing a filter or utility to convert the document to text or html. If you install the utilities in /usr/local/bin the should work as soon as you index your documents. If the utilities are installed someplace else, you will need to edit packages/search/tcl/search-convert-procs.tcl to point to the location of the executable file for each utility. The final step is to reindex all your files. If you have documents in file-storage, a query similar to this one can be used to queue the files for indexing.
insert into search_observer_queue 
(select live_revision,now(),'UPDATE'
from cr_items ci,
cr_revisions cr
where ci.live_revision=cr.revision_id
and   ci.content_type='file_storage_object'
and   ci.name like '%.doc')
You can repeat that query changing the like '%.doc' criteria to like '%.xls', etc... for each file type you want to index. Pdfftotext will not extract text from a PDF document that does not allow copy/paste from the text of the PDF document. In this case only the text of the filename will be indexed.

View full post

Many organizations want the benefits of both a web based Forum and a email based Mailing List. It is easy to get this with OpenACS because OpenACS Forums have built in notifications and a "Reply by Email" functionality for instant notifications.

This tutorial guides you in setting up "reply by email" for the forums package. The forums package will email an article to users who are subscribed to notifications. The "reply by email" feature allows recipients of the notification to reply to the forum post by email.

The system is configured to receive the email and post the reply to the appropriate forum article. 1

View full post

posted in

LAMS Community Launched using .LRN [www.lamsfoundation.org]

The LAMS Foundation annouced the launch of the LAMS user community website using .LRN.
"LAMS creates "digital lesson plans" that can be run online with students, as well as shared among teachers. The LAMS Community allows teachers to share and adapt digital lesson plans, and discuss their experiences of using LAMS." "The LAMS Community is central to our strategy of empowering teachers to transform education using the revolutionary digital lesson planning approach offered by LAMS. Educators can now freely and openly share 'best practice teaching' in a way never seen before in the history of education," said Professor James Dalziel, leader of LAMS. "We chose .LRN for its sophisticated community management functions, complementary feature set, and our shared open source philosophy," Dalziel said.
An interesting side note in the press release is the announcement of integration between LAMS and .LRN for course management similar to the integration of LAMS with Moodle.
John Norman, Director of the Cambridge University Centre for Applied Research in Educational Technology praised the LAMS/.LRN collaboration, saying, "Both .LRN and LAMS have set the pace in the development of collaborative/active learning platforms for higher education. This integration and co-operation between the two projects will create a powerful learning environment for students".

View full post

George Siemens links to Co-opting the creative revolution over at the BBC web site. He makes a great observation that most LMSs don't do a good job of seperating the centralized administration model with a distributed learning model. He says "Certain aspects of learning should be centralized (particularly enrolment), and others should be decentralized (interaction, content exploration, learner-created content (blogs, wikis), etc.)" One partial solution that .LRN could provide is the dotFolio concept where a learner receives a personal space to organize and share their learning experiences alongside the .LRN system.

View full post

XML
Recent Entries
Categories

AJAX (13)
CCK08 (1)
MEL (14)
LAMS (3)
Tech (13)



Authors




Archive




Notifications
Icon of envelope You may request notification for Solution Grove Blog.


Syndication Feed
XML


Recent Comments
  1. Eamon Costello: thanks
  2. Dave Bauer: Using clickpass
  3. Caroline Meeks: Should we put this on Solutiongrove.com, .net, .info??
  4. Jong-Dae Park: How about redirecting users to setup password for elgg
  5. Caroline Meeks: Great job!
  6. Mark Tomizawa: Bandwidth (the human kind)
  7. Hamilton Chua: ns_zlib on OpenACS
  8. Hamilton Chua: Thanks Mark
  9. Mark Aufflick: svnmerge.py saves you the pain
  10. Hamilton Chua: Mosio, Yahoo Answers on Mobile ?



Technorati Blogs