Web Info & Tutorials

January 3rd, 2008

***MIGNONS PETITS ÉPAGNEUL COCKER ,GARANTIE,VACCINÉ ET +*** ( MONTRéAL ) 350,00$

NOUS AVONS 5 ADORABLE PETITS ÉPAGNEUL COCKER AUSSI APPELLÉ *COCKER SPANIEL*.NOUS AVONS 3 FEMELLES DE COULEUR BLANC-BLOND ET 2 MÂLES DONT 1 CARAMEL ET 1 FAUVE. ILS SONT NÉE LE 9 DÉCEMBRE E

January 3rd, 2008

PROTAGONIZE: CHOOSE YOUR OWN WEB 2.0 ADVENTURE

Nick Bouton has released Protagonize, an
online writers’ community dedicated to the (nearly) lost art of the adventure, a type of collaborative fiction. Once an author writes a story, others can post branches to that story in different directions.

We chatted with Nick about the new site:

What was your inspiration?

Early forms of this on the web date back over a decade, when Snoot.com popularized a site called “Choose Your Own Schizophrenia”, an collaborative fiction site popular in the mid-to-late ’90s. Of course, this all dates back to the old Choose Your Own Adventure™ series that started back in 1979 and ran until 1998, published by Bantam Books.

I developed Protagonize as an attempt to modernize the collaborative creative writing arena a bit and inject a little Web 2.0 love to produce a better interface. So far, so good.

How did you use Ajax?

The site uses the Yahoo! User Interface (YUI) library quite extensively.

Here’s a brief overview of the features that use AJAX calls (thus far — still adding more):

  • Commenting (add/delete)
  • Add & remove favourites & page markers (like a bookshelf)
  • Story ratings
  • Modal dialogs (login)
  • Send to a friend
  • Contact author
  • Report an item

All of the AJAX calls I’ve written return JSON objects as results, so the transactions are quite lightweight. We also use JavaScript pretty heavily throughout the rest of the site — for example, branch previewing is all JS, and the YUI TabView control is used for managing your favourites / page markers / top rated listings; the lists are each loaded once and reformatted into different sorted views via JS.

The site also uses FCKEditor for content editing, which is a pretty JS-heavy component on its own.

What features are you proud of?

The ease of use of the interface. The TabViews were a lot of work to get working nicely and I’m pretty happy with those, too. My AJAX calls are pretty snappy (particularly managing your favourites and page markers), and I really liked using the YUI Animation effects to do fade-ins and fade-outs when showing/hiding dialogs and deleting items. Makes the whole app feel nice and smooth.
The toughest parts were probably securing the AJAX/JSON calls and dealing with user input validation gracefully (I can still work on that a bit — not very happy with the built-in ASP.NET client-side validation scripts). I’ve also had some minor layout problems with smaller-market
browsers (specifically Opera) that are a pain in butt to track down.

I’d also like to make user profiles feel a bit more personal; they’re a little cold right now without any way to put in your own image, but I think the profile blurb and quote helps people customize it a bit so far.

Future plans?

Future plans - the main large feature I’m I’m going to be adding in the next month or two is user-created and controlled group functionality. Groups will be either be open or closed membership, where closed groups would require an invitation and optionally not be displayed on the front end of the site (i.e. public/private), and open groups would allow people to join in at will. That way we could cater to your usage, private & closed groups, and allow others to use the feature in a different way, maybe for close circles of friends who don’t want other people participating in their stories.

Nick has some more cool projects coming over at Taunt Media too.

Protagonize

January 3rd, 2008

APACHE COUCHDB: CONGRATS TO IBM AND DAMIAN KATZ

CouchDB has been getting people re-energized about DB stuff recently. Some got gung-ho about the OODBMS and that fizzled and people went back to the “ug, I guess we just do the SQL thing and be done with it… and maybe use an ORM if we really hate it”.

Then the Couch came along and had us all thinking about JSON being the next “turtles all the way down”.

Well, IBM was excited enough to hire Damien Katz to work full time on it:

All the code will be Apache licensed and donated to the Apache Software Foundation, with the plan CouchDB will eventually become an official Apache project. A big plus here is the Apache license allows anyone to do pretty much anything with the code, so everything remains truly open source. I wouldn’t have done this without IBM’s commitment to keeping CouchDB open.

It is going to be to see what us JavaScript folk do with a DB that is RESTful and JSONified.

Congratulations to IBM for a great score (and to Damien too).

NOTE: Kris Zyp joining SitePen

Also, congrats to Kris Zyp and SitePen for tying the knot. Both Kris and SitePen are top notch outfits, and a great fit.

January 3rd, 2008

WINDOW.ONLOAD: ANOTHER SOLUTION TO GET IT GOING

The solutions for getting real DOMContentLoaded across the various browsers keep on rolling in. The first one of the new year involves using the IE HTC feature and differs from others due to:

  • document.write and conditional JavaScript comments
  • try() catch() and doScroll
  • having a separate file for IE

This solution uses Microsoft’s proprietary HTC feature. Of course some of this solution can be rated questionable, but as far as I can see that is the case of all of the currently available solutions. The biggest issues are:

  1. JavaScript placed in a HTC file -> incorrect MIME type on servers. The .htc file extension is required by IE.
  2. Relying on Internet Explorer error handling on HTC file parsing.
  3. Must use an external file.

The biggest advantage is the shortness of this solution: the total code is well less than 600 characters. There is another solution that is as short as this one, done by Stuart Langridge (see DOMContentLoaded for IE, Safari, everything, without document.write). However, for whatever reason his solution doesn’t seem to always work in Internet Explorer. I haven’t taken a too detailed look into the issue.

There is an update to this where the visibility setting was added “to ensure the page is not visible until the body element has been loaded entirely.”