Tag Archive for webdevelopment

Mobile Traffic

Check out the growth of mobile traffic since 2009. Mobile devices now account for 10% of all traffic to our website. Mobile traffic rises at two times each year: September and January.

(Click on the image to view a larger version.)

Mobile users visit the same top pages as computer users, with one exception. Our online family and employee directory is the sixth most popular page for mobile users and ninth for all users. Update: when I remove iPads from the mobile category, the directory and athletics schedules both move up a couple of positions in the top pages list.

Will mobile traffic eventually exceed computer traffic? I don’t think this data much helps us understand that.

Currently, the Catlin Gabel website displays the same on computers and mobile devices, but we are working on a mobile theme to present mobile users with a more usable interface. It will be interesting to observe whether that affects website overall traffic and popular pages.

New Drupal School Developments

Last week, I noted some interesting developments involving Drupal and secondary schools.

New Schoolyard

NewSchoolyard launched at NAIS, promising inexpensive school Drupal sites built on a template. This fills a hole in the school website market between buying an expensive product, hiring an expensive developer, and doing it completely yourself. In addition, New Schoolyard offers products and services at different price points, allowing schools to decide how much of the work they want to take on themselves or hand over to this company.

If successful, New Schoolyard may open the door even wider for more schools to adopt open-source websites and learn how to modify them. I greatly anticipate the first sites they will create and the code that they promise to contribute to the Drupal community. I have found in my own work with Drupal that it is a challenge to create a customized site that others can then truly make their own. I wonder what strategies New Schoolyard will employ to make full ownership possible for their clients.


Around for a while but flying under the radar, DrupalSchools.net is readying for a relaunch. Go check out their list of Drupal sites, tips and tricks, and thoughts on the potential role of Drupal in changing how schools work. This site promises to serve the secondary school community and put the thoughtful use of technology before techie talk. Also check out my list of school “front door” Drupal sites that I started in 2007 and have added to a bit over time.

More interest in our work

The frequency of inquiries into our work at Catlin Gabel continues to increase. Some of these schools are tinkering with demo Drupal sites, others are launching a community intranet, and others are moving toward a new, public-facing website. More schools are discovering the benefits of working with a piece of open-source software before committing to it and sharing their knowledge and perspectives gained.

Curriculum map in Drupal

Two weeks to go until live! This week, I migrated our school curriculum map from a custom system I authored into Drupal. This allows us to ensure the longevity of this web site resource, take advantage of Drupal’s strengths in structuring content storage and display, and provide teachers with a very usable editing interface. The curriculum map stores over a thousands nodes and can be added to an existing Drupal site. This article assumes familiarity with Drupal 6 views, content construction kit, blocks, and very basic custom function programming. This isn’t a step-by-step tutorial (maybe one day).

Curriculum map course content type holds courses. The description field is not yet populated but available for course descriptions. Taxonomy categories for division, grades, and subjects are applied to this content type. A node reference field is used to connect each curriculum map course node to as many curriculum map units as necessary. The autocomplete node reference widget is used to allow the user to re-order the units as desired. It may be difficult for a user to find the correct unit node using autocomplete if it is not named creatively. It may be a good upgrade to use a view to display more identifying information than the title for the autocomplete search.

Curriculum map unit content type has a textarea field for each curriculum map category. We use the following: essential questions, habits of mind, content, skills and processes, assessment, resources, multicultural dimension, and integrated learning. In retrospect, having so many categories created a lot of work for teachers, who had to populate some of these categories x each unit x each course they teach.

We authored module cgs_curriculum_map.module to migrate content from our old system into Drupal. It creates content and unit nodes, establishes node reference links between them, populates content fields, and attaches taxonomy terms. This is not necessary for schools starting a curriculum map from scratch.

When the system displays a curriculum map course node, the units also load in a table below the course description. This is accomplished by loading a block view that displays the curriculum map category content for each unit node referenced in the course node. The view is loaded into the content_bottom template region, so that it appears just below the course description field. A simple function in cgs_curriculum_map.module returns a + delimited list of node ids of the unit nodes attached to the currently loaded course node. The display setting for the node reference field in the course content type is set to hidden to prevent unit links from appearing above the unit content itself.

If a user wants to display a single unit in a more readable form, one may link the unit title to its node. The conventional node CCK field display presents fairly well.

A page view with exposed filters lists courses, so that a user may view courses in the desired divisions, grades, or subjects. This is a good starting point for a user.

The user interface for adding new units is currently weak. It would be clever to load the curriculum map unit node add form in a lightbox above the curriculum map course page, so that a teacher could create a new unit on the fly and still have it show up in the node reference autocomplete field. Also, some node edit form elements are named in such a way that may confuse teachers. For example, the edit tab on the curriculum map course node page will likely be construed as providing editing access to the unit nodes (you actually have to view the unit before you can edit it).

I am currently having difficulty using both arguments and filters together. The argument limits the initial course list to a single division in the division pages, but the filters attach additional criteria using ? arguments. When both exist, the view returns no nodes. It may be that the view is applying terms from one taxonomy to the other, where they don’t exist, causing the empty result set.

Use pathauto on the curriculum map content types and menu block visibility to load the correct secondary navigation menu when the view is displaying curriculum map entries.

curriculum map list view

curriculum map course view

Getting close

I have had my head down working on our new school web site for the past few weeks, hence I have not written much here.

We presented new features to focus groups: three faculty, one parent-faculty association, and one board communications advisory group. We hired a local college intern to migrate content from the old site to the new. Two staff members are working on the photo directory, site copying and backup utilities, and an emergency contacts form. Our graphic designer sent us two graphic concepts, and our web site team met and sent back comments. We received the a second revision and are preparing to send back our comments on Monday.

We are gradually taking on real users as we build up the web site. Our athletics director has started entering competition dates for next year. The arts department recently met to build out their new “schoolwide” arts program section. This week, we plan to invite employees to update their emergency contact information through our new custom form. The week after, we will likely invite all parents to update their contact information and review their directory entries online.

Our publications director has been developing her Twitter “voice” and getting to know the Facebook Pages interface in preparation for that aspect of the site launch.

So far, we have committed about $5,000 of contracted work to the project. We plan to finish the project at less than $10,000 total.

Hopefully, I will find time after site launch in July to post more information about our project!

Seeking Drupal Consultant

Catlin Gabel seeks a Drupal expert on a consulting basis to advise and assist school technology staff with the development of a new version of our public-facing web site, www.catlin.edu. The consultant will explain Drupal best practices to the school’s development team, provide suggestions for techniques to solve specific problems, and directly assist with site configuration and programming as needed. Please visit ww3.catlin.edu for examples of the ideas we are currently exploring.

To apply, please send:
– A letter describing your interest in this project
– A résumé of your Drupal development experience and computer science education
– The URLs of sites that you have developed and/or a web-based portfolio
– References to prior Drupal site clients, especially in the nonprofit and education sectors

We will select finalists based on these materials and then request an in-person or Skype interview.

Richard Kassissieh
Director of Information Technology
Catlin Gabel School
kassissiehr (at) catlin.edu

Introduction To Drupal For Schools

I presented this talk today at the BAISNet meeting on open-source software hosted at Lick-Wilmerding School. Some of the links point to internal, password-protected resources. Contact me if you would like a tour.

In the early days of the web, schools designed and developed their own web sites. Then we purchased professional graphic design and content management systems. In recent years, full-service companies have sprung up to deliver schools a complete solution. This is one possible — but not the only — modern solution for a course web site. How did we move so far away from managing our own web sites? Is it possible to turn back?

With a little DIY spirit and open-source software, it is possible. Open-source content management systems have matured and arrived. They are now a viable choice for a professional, modern, effective school public-facing web site. In a time of cost consciousness, it is imperative for us to learn this field and build our own web sites once again.

We know how to evaluate and tell other people about commercial software. Read the company’s sales materials, ask other schools for references, review a live demo or an existing site, determine the terms of a contract, monitor the site as it is developed/delivered, contract with a trainer. After the site is launched, requests tweaks/new features as desired.

The open-source ecosystem is very different from the familiar landscape of commercial software. Open-source software does not have huge advertising budgets. You won’t see The Network or The Trusted Voice or taste tests.

The key to evaluating open-source software is to enter the community and try the software. Take Drupal as an example. You can search the forums for helpful community members, view everyone’s support issues, browse hundreds of community-contributed modules, read community-authored user and developer guides, read case studies by real users, join affinity groups, and build a test site to evaluate the suitability of the software for your purposes. Hire a Drupal developer or another if you like.

You may have concerns about running your public-facing web site on open-source software. That’s all right. Start with lower-stakes projects and get to know the software and the process well. Build up your own familiarity and comfort level through experience.

Drupal.org has over 350,000 registered users. Version 1.0 was released in 2001. The current version is 6.9.

Peer schools using Drupal include Burke’s, Seattle Academy, Billings, and Meridian. College Prep uses Plone. Notable, Amherst College runs its main, public-facing web site on Drupal.

Other options: Plone, Joomla, WordPress

Once you go through this process and become a convert, how do you convince others? It may help to guide your school colleagues through a "lite" version of the steps you experienced. At Catlin Gabel, we formed a committee of ten major stakeholders in the web site project (admission, development, human resources, technical staff). I added to this group a parent who also works for an organization that provides technology consulting services to environmental organizations. We redesign our web site about once every six years. Drew redesigns organization web sites as his daily work. One of the most compelling answers was, "What about all of the R&D that companies put into their products? Open source communities probably devote a hundred times’ R&D into their ‘products.’"

Social Features

I pushed Drupal at my school because of its emphasis on social features. The White House has a blog. The Vatican has a YouTube channel. 40-somethings are joining Facebook in droves. Now is the time to introduce social features to your public-facing web site. Drupal is built around social features. Blogs, RSS feeds, tags, media support, and a powerful content management system are all strengths in Drupal.

Education-specific Drupal distributions: Social Media Classroom, DrupalEd, FunnyMonkey Commons. Will we see a distribution specifically for a school’s public-facing web site? Shall we create it together?

At Catlin Gabel, I first launched a community intranet portal to facilitate anyone’s media publishing. This site is organized around media types. All users may post articles, audio files, movies, and calendar entries, maintain a blog, and build an electronic portfolio. We also host other community content here, such as a carpool map, school archive, and summer jobs bulletin board.

With this experience under our belts, we are now taking on our main, public-facing web site. We plan to fully integrate community features throughout the site, not just in a dedicated section. Our constituents seek to engage with the school through its web site. Middle and upper school students seek authentic representations of student experience at the school. Commenting on all News articles. Making comments visible to all registered users. Providing user accounts to faculty, staff, students, alumni, parents, applicants, board members, and friends of the school. Approved "site editors" will be able to edit all static pages (not restricted to own department). Every user will have a blog, and blog content will be aggregated by topic (tags or content searches). Existing newsletters will fold into the blog and news functions.

Specific Features of Drupal

Drupal has a very small core and then hundreds of contributed modules. Let’s take a look at the core.

  • River of news
  • RSS feeds
  • User profiles
  • Search
  • Blog for each user
  • RSS aggregator
  • Forums
  • Commenting
  • Contact forms
  • File upload
  • Taxonomy (tagging)
  • Hierarchical content type (book)
  • Menu, theme, and content independent of each other
  • Revisions

Now let’s take a look at some commonly-used contributed modules:

  • Content Construction Kit (CCK) — page, news item, calendar event, athletic event, trip, curriculum map entry …
  • Views — define criteria to select content and then a format to display it
  • Calendar — control over categories, display formats
  • Image — image galleries, embedded images
  • Organic Groups — classrooms, clubs, teams, affinity groups
  • Notifications — email subscriptions by content type, keyword, or author
  • WYSIWYG editors — button-level control, link buttons to custom code
  • LDAP integration — same username/password as your other network systems
  • JavaScript functions (jQuery) — usability enhancements (AJAX)
  • Wiki — wiki markup if desired, otherwise revisions + editing rights + diff
  • Page functions — print, email, PDF

Fine-grained control

  • Position of administration functions
  • Per-item control of menus (user and administration)
  • Role definitions and permissions
  • Per-field control over content definitions
  • Ability to embed PHP code and write custom modules (Blackbaud integration)

Exciting additional features demonstrate the Drupal community’s ability to integrate promising new technologies.

Getting Started

My journey: insideCatlin, public-facing shadow site, Shasta Mountain Guides, 3D Cell Explorer, San Diego Hat Co, summer school registration, test installation for new site

Lessons learned: start small, grow gradually, distinguish yourself with modern features, don’t just talk about open-source, rather provide hands-on demos.

That’s it for this session. Will get into specific site design issues in the second session.


Early Drupal strategies

I am leading an internal team to move the public-facing web site of our PS-12 independent school to Drupal. In this post, I share accomplishments and decisions made so far in an attempt to spread any knowledge that is useful to other institutions and gain your feedback. I consider myself an intermediate Drupal user, so some of the following may seem trivial to advanced users, whereas beginners may find it helpful as they get started. A test site is available for you to view. I have included module and content type lists at the end if you would like to jump directly to them. Many thanks in advance for any advice or feedback you may provide!

Page and News content types

We recently made the decision to give news more prominent billing than we do in our current site. We realized that news is more important than calendar information, for instance. At the same time, we will still require the ability to post descriptive content about school programs that doesn’t change all too often. First-time visitors to our school will still require this, and they are a very important audience. How could we provide for both within Drupal’s structure?

We want to have as many school departments and divisions manage their own site content. Therefore, adding pages to the Book hierarchy or adding News items to one or more sections needs to be as easy as possible. In Drupal 6, Book nodes can be of any content type. This will serve us later, though for the time being I am only adding Page nodes to Books. I did modify the Page content type to allow comments and add fields for multimedia content. I configured Book to automatically create menu items, as we don’t want to trouble our site editors around campus with navigating Drupal’s menu administration pages, which will get quite long in a large site.

landing page

I have included News content by embedding a manual PHP-driven database query in each top-level landing page. Users will click on a primary nav link and find a page with the category outline in the left-hand menu and the news for that section in the body of the page. News can be posted to multiple site sections (taxonomy terms), whereas Pages can only be posted to one place in the book hierarchy. Our web site editor was very pleased to see how easily we could move pages around the hierarchy, even from one book to another.

Will we want to post a single page to multiple books? I am not sure that this is desirable, since users may benefit from a predictable hierarchy (where is that page? what section am I in?). However, we may also find a way to configure this in Drupal, or we could write a script to pull content from the desired node when in a specific page. The ability to insert any node into a book is going to be a great boon if we need to create a custom content type with code to pull content from other nodes.

Book Access has been troublesome so far. I at first assumed that we would want to grant editing privileges at the book level, to those people who need to able to edit that book. However, not only has book access not worked as advertised, but I have also come to the realization that more open access may in fact better serve our purposes. We know and trust our web site editors, and time is precious. Why shouldn’t all users blessed as editors of our books be able to edit any of them? Some institutions have even wikified their entire site. We can mitigate (unlikely) problems by turning on revisions and setting actions to notify the web site editor when changes are made to the books. Presto.

Classroom and team pages

Organic Groups seems the obvious choice for classroom and team pages. Small communities build up around classrooms and teams at our school. Parents want to know news and upcoming dates, teachers and coaches want to contribute content, there are scores and reports to publish, and we want to expose most of this to the public for people to see our school in action.

Organic groups allows us to mark some content as public and some as private, maintain descriptive and news items, invite others into the group, and allow users to maintain short lists of their favorite groups in the site. I will want to further investigate how to set multiple moderators for a single group, suppress other groups from the audience list, and make subscription management easier.

Organic groups could also permit other affinity groups to spring up within the school around issues, initiatives, or interests. Again, it helps enormously that community features are core to the Drupal ecosystem. These features are well developed, well-documented, and widely used, making it easier for us to make our next web site more capable of community strengthening functions.


On our current site, the home page feature image is randomly selected from a set of photos. Each photo has as caption. I am experimenting with enhancing this feature by: 1) using a Flash-based slideshow to cycle through images on the home page; 2) linking each image to related pages within the site, so that it also serves as a navigational element. The test site currently uses MonoSlideshow, but Slideshow Pro also has a standalone version that pulls image information from a XML file and a Drupal module. I would like to take this one step further by writing an extension to automatically updated the XML file based on the contents of a particular image gallery.

Outside of the home page, I am using the Image module, including galleries. I have not yet seen the need to go to ImageCache and appreciate the simplicity of automatic creation of gallery pages. If Image Gallery Access works as advertised, then I will be able to distinguish albums to which ordinary, authenticated users can post from those that are reserved for web site editors. FUpload appears to provide batch uploading that should work nicely for site editors, parents, and students (should I worry about Flash version compatibility?). Missing at the moment is the ability for an authenticated user to create a new image gallery, which would be great if someone is posting sports photos and wants to create a new sub-gallery for each game. If we decide to limit the number of photos posted on this server, then prolific photographers may be better off using Flickr, anyhow.

Embedded Media Field appears to work great, except that I can’t figure out a way to wrap body text around the embedded item. This may be fine for relatively unprivileged, authenticated users but probably not sufficient for web site editors.

I have recently switched from TinyMCE to FCKEditor and am loving it so far. Everything seems to present and work better with FCKEditor, especially embedded images. Do you know of a way to limit file browsing capability to user directories for some roles? I wouldn’t want any user to have access to the primary embedded image store for the site. I would also like buttons and filters to elegantly embed files, uploaded media, and third-party media all within the WYSIWYG interface. I wonder how difficult it would be to write those extensions and make them available to some roles and not others.


Drupal, as community software, offers the exciting opportunity to invite many different constituencies in our community within the site and provide features such as comments, blogs, directories of people, and photo upload privileges specifically to them. I have created the following roles so far:

anonymous user
authenticated user
applicant for admission
faculty/staff member
job applicant
web site editor

User Profiles

I haven’t begun to explore this yet. In some cases, the user profile is a critical function. For example, we want alumni to edit their information through the site: contact details, schools attended, place of employment, interest in the career network, etc. Faculty members will have short biographical passages to help describe themselves. This means that some roles will use different profile fields from others — I need to learn how to make that happen, and whether to use nodes for user profiles in these cases. On a related note, real names will need to be visible throughout the site — I have used Authorship for this before and will need to evaluate it and investigate alternatives once more. Authorship does not have a Drupal 6 version at this time.


Opening commenting is a really exciting opportunity. We currently do not have this feature in our current site, yet we know that our users have a lot to say, and we want to draw them more tightly into the school community. At the same time, independent schools try to maintain a decent level of control over publicly-available content. Drupal’s commenting system seems perfect for this — allow all authenticated users to see and post comments, allow all web site editors to administer comments, and do not use a moderation queue at all. Done.

One downside I can see at this time is that a blog author may in the future want the ability to moderate their own comments. I’m not sure whether this would require a lot of hoop-jumping-through in Drupal, as compared to a blogging platform such as WordPress.


I have done a little investigation here, not very much. I have set up Calendar and CCK Date. I am finding setting up calendar Views to be bit involved. We will make extensive use of list views of calendar items by taxonomy terms in blocks throughout the site.

The custom content type for Athletics events looks great — opponent (node reference), bus departure and return times, result, score, notes will serve their function well. One glaring omission for Drupal 6 is Time. The last I read, developers are testing a Drupal 6 version. We will need this CCK field in order to have additional times for the day of the event (such as bus departure and return times).

We have yet to decide whether Drupal’s calendar could meet all of our internal, public calendaring and resource reservation needs, or whether we should install a proper calendar server.

Migrating Custom Functionality

We have built over the years a lot of custom PHP and Perl scripts that we plan to migrate into Drupal over time. Many of these will wait until year two or three of the project. They function fine now, and we have to first roll out the core functionality of the site.

Applicants for admission can complete an inquiry form, sign up to visit the campus, and download admission forms online. All of these functions pull data from our Blackbaud database in order to function. We could migrate these (rather large) scripts into Drupal, gaining additional benefits: applicants for admission would become authenticated users and be able to read and post comments, gaining greater visibility into the site.

Our current volunteer signup and management system keeps track of multiple events, caps signups for specific time slots in order to automatically distribute volunteers to where they are needed, and produces summary lists for volunteer coordinators. If Signup can do all this, then we will move this feature to Drupal in a flash.

Job applicants can, using another site, view and apply for jobs at the school. This seems like a prime candidate to move to Drupal, which has better designed file submission features than our current system. It will be key to leverage Drupal to provide good workflow management functions for the human resources office — the ability to flag applicants for certain categories, add notes to applicant files, invite supervisors to review applicants online, and send mass emails to those declined for the position.

Social network sites

Connecting with constituents through social network sites is a hot issue right now for independent schools.We want to meet our constituents where they are, in addition to drawing them into our site. At the same time, we want to leverage existing content and processes as much as possible while making this happen. I am happy to find out about Ping.fm, which should allow us to automatically generate Twitter, Facebook, and other status updates from specific News items that we post to our site. With no additional effort, we will broadcast our news items to our users’ communities and cultivate follower lists around the web.

Content types

Here is a list of content types in our test site so far.

Athletic event
Blog entry
Calendar event
Classroom (node for organic groups)
News item
Page (modified to serve as the main content type for descriptive pages)
Team (node for organic groups)


(so far)


Learn How To Program

(If you already know how to program, then learn how to program better.)

drupal icon

We often joke that independent schools aspire to be like small colleges. Witness the naming of University High School, College Preparatory School, and University Prep. Here’s a good way to emulate our tertiary friends — develop in-house programming expertise. As colleges and public school systems have learned, in-house programming expertise helps an educational institution develop best fit solutions at reasonable cost. We work in the field of technology. We should learn the tools of the trade and become producers, not just managers.

We are attempting to build the site development capacity to produce our next public-facing web site. Last year, we met with three local Drupal development companies in order to gain some perspective on the size and complexity of our challenge. We learned two critical lessons from these meetings. Local development companies preferred to take on the entire project rather than assist us with doing it ourselves, and we needed more in-house development expertise if we expected to pull off this project ourselves.

We have succeeded in improving our development expertise this year. I have accepted the challenge to master Drupal, especially version 6 and custom module development. I have learned through experimentation, books, forums, and specialized distributions. That’s the beauty of open source. The process is social and constructive. It’s easy to build up momentum. I build test sites and share my experiences through forums, Twitter, and on-campus conversations.

We have also increased our development capacity through hiring. In filling our open database specialist position, we did not count on gaining a programmer, but we were able to do so. Programming is a particularly useful skill in database management, since schools have seen so much growth in database-enabled web site services, such as grades, attendance, directories, reporting, and so on. Add our computer science teacher, and we may now have the capacity to build and support our own Drupal-based site. A particularly compelling web site project might even entice our computer science students to contribute.

The economic crisis has increased the importance of self-sufficiency. A first-class web site is integral to meeting our communication goals, but we should not pay FinalSite or Whipple Hill $50,000 for it. Developing a sophisticated site in Drupal or Plone will provide us with the capabilities and future flexibility that the school needs at a more reasonable cost. The effort we now spend building this expertise will be worth many thousands of dollars in the future.

Can you do it? Anyone can improve from their current skill level and add value to their work. Not so long ago, I moved from full-time teacher to half-teacher, half-academic technology specialist. My colleague in the IT department wrote the school’s first Perl script to collect student course requests. I was fascinated and studied the syntax in the script to write my own first, simple web applications. Two years and one school later, I installed and then learned to modify YaBB, a Perl-based discussion forum system. I then wrote a series of increasingly more important web applications for our school: student announcements system, single sign-on code snippet, community service hours tracker, alumni notes interface, and admission inquiry system. I am still a relatively amateur programmer, but I continue to learn from my peers and improve the quality of my work.

My next challenge is to move from custom, standalone development to configuring and adding functionality to a popular content management system. I now have an expert programmer as an office colleague with whom I can partner and from whom I can learn. If my dream comes true, I will gain collaborators at other schools who wish to share Drupal configuration tricks and develop new functionality for their public-facing web sites. Stay tuned to find out what degree of success we attain.

Web Site Design Portfolio

This portfolio shows major sites I have designed and built for organizations.

Catlin Gabel School (2009-present)
The school’s main, public-facing website provides a complete content management system, multimedia publishing tools, user accounts for students, staff, parents, and alumni, and ties into the school’s student information system. A layer of the site is login-protected, so that community members may publish articles, photos, and videos to the school community.

Catlin Gabel website

Tools: Drupal and Blackbaud, including custom PHP development.


insideCatlin (2006-present)
This intranet web portal provides operational tools for the members of Catlin Gabel School. Teachers provide students with course materials and interactive discussion areas, departments publish commonly-used forms, and individuals schoolwide exchange information such as community service hours and textbook orders. The portal is organized by commonly-desired content and transactions, rather than by tool.


Tools used: Moodle, Drupal, Blackbaud database access, and custom Perl and PHP scripts.


Shasta Mountain Guides (2005 – present)
The guiding company uses this site to publish trip information, collect reservations, solicit customer questions, and sell merchandise. Customers may browse through trip descriptions, photos, and testimonials and then book a reservation online, including payment. The co-owners maintain the Backcountry Blog and photo galleries on the site. A live weather feed and equipment lists help hikers plan their trips.

Shasta Mountain Guides

Tools: Drupal, osCommerce, custom Perl scripts, custom graphic design


San Diego Hat Co (2001 – present)
This web site allows the company to quickly publish an online catalog of hundreds of items to wholesale customers twice each year. Within the login-protected site, customers browse or search for hat styles, zoom in to view close-up detail, and see available colors for each style. The site also includes static pages for company information and an online store for retail customers.

San Diego Hat Co

Tools: Web Site Baker, osCommerce, custom Perl scripts.


Maru-a-Pula School (2006 – present)
The school upgraded its web presence with a content management system and custom graphic design (Elavacion, Inc.). I moved the hosting service to the U.S., to improve upon the reliability of Botswana-based hosting services.

Tools used: Drupal


San Francisco University High School (2002 – 2006)
This site provided for all of the public-facing web site needs of this school community: a description of the school program, faculty and staff contact directory, admission inquiry toolkit, alumni profile and notes tools, and Arts department mini-site.

San Francisco University High School

Tools: Dreamweaver, custom Perl scripts.

insideUHS (2002-2006)
This intranet school portal provided the community with communication and information tools: course web sites, athletics schedules, community service project database, independent study project database, community announcements, schoolwide events calendar, student photo directories, online file access, and student discussion forums.

Tools: Moodle, YaBB, phpBB, FileMan, Blackbaud database access, custom Perl scripts.


site snapshot at The Internet Archive (original site no longer available)

Gateway High School (1999-2002)
The graphic design of this site communicates the school’s unique position as a public charter school in San Francisco. Learning Center and People receive high visibility, and student work is featured on the home page.

Gateway High School

Tools: Dreamweaver

www.gwhs.org at the Internet Archive

Make life easier with Fluid

Use Fluid to create a standalone application from a web page. Their site declares, “Your web browser is for browsing.” We alt-tab to quickly switch between desktop applications, but we option-alt-arrow (or some other combination) to switch between browser tabs. As applications increasingly move to the web, I often find myself instinctively reaching for alt-tab when my application is actually running within a browser tab. Also, it is easy to quit the browser completely, closing a web application I actually need.

For example, when I develop a web application, I typically run Cyberduck and Smultron from the desktop and phpMyAdmin and the web application I am developing in Camino, my preferred web browser. Now, I can run phpMyAdmin in its own, separate desktop application, allowing me to alt-tab to it whenever I please. Yes, I know that I could run a desktop mySQL manager, but I prefer phpMyAdmin.


You could also use Fluid to keep a Facebook, Twitter, or Yahoo! Sports window open separately from your browser.

Fluid’s about page explains that other, similar projects exist, one even open-source and cross-platform.

Fluid seems awfully similar to Mozilla Prism. What gives?

Fluid was very much inspired by the excellent Mozilla Prism project, Adobe Air, and other, earlier Site Specific Browsers like Bubbles. Many people think Prism was the first product in this category, but actually, Prism itself was preceded by other SSB products. Fluid’s goal is to be the best, most native-feeling SSB for Mac OS X Leopard. Prism is cross-platform, which is a huge benefit for lots of users. However, many Mac users prefer a more tightly-integrated, Mac-like SSB application. That is Fluid’s niche. Fluid is a thoroughly native, Cocoa Mac OS X application. No compromises or least-common-denominator tradeoffs.


One day, we may exclusively use web applications. In the meantime, Fluid seems helpful.