Monthly Archives: October 2009

Drupal 101: Navigation

This post was originally published on the Idealware Blog in October of 2009.

Here’s the third in a series of posts on getting started with Drupal, the popular open source content management system. The short intro and discussion on modules are best read first. Today we’ll look at site structure, and how menus, blocks and taxonomies can make your site navigable for your visitors.

Menus

Drupal has a simple and flexible tool for creating and managing menus. You can check/uncheck standard functions; assign them to regions (left sidebar, right sidebar, header, footer, etc.); and easily create new items.

By default, Drupal offers three menus that you can add to your site:

Navigation – The main menu is dynamic. It displays items based on the visitor’s role and state of authentication. For example, an unauthenticated user might see a “Login” menu item, while an authenticated user would see “logout”. An authenticated user who is also a site manager would see the Administer menu. This menu is usually placed in a sidebar, next to the main content
Primary Links – This is often the menu for the main content areas, e.g. Home, Blog, Calendar, About. Primarily links are usually placed in a site’s header.
Secondary Links can be used for less popular pages, but ones that you want to have available, such as site maps, privacy notices, and contact links.

You can assign a menu item to any particular piece of content, or to a collection of items by content type. Drupal assigns numbers to individual items. The basic content type is called a node, so the default first page of a web site would be at http://your-site.org/node/1. If you create a blog, the first post would be at http://your-site.org/blog/1.

Tip: Be sure that the Path Module is enabled. Path lets you can rename items with friendlier names than, say, site/node/113.

 

Say you wanted blog/1 to be your front page, but you also wanted something easier to remember to appear in the address bar, you could rename it “home”, so that people could browse directly to the site at http://your-site.org/home. They would see, in the center of the home page, that first blog entry. Drupal’s general settings allow you to identify your home page; renaming a numeric page simply makes it friendlier for your users.

If, instead, you simply wanted the whole blog to be the home page, then you would skip the numbers, and not bother with a rename, as linking the front page to http://your-site.org/blog would accomplish that.

Drupal’s real power comes in when you realize that, with the CCK module, you can make your own content types, and that can be very easy. A press release will have a similar format to a blog item (title, content). So you can create a type called press_release and link a page to it: http://your-site.org/press_release. All new press releases that you post to the site from Create Content/Press Release will appear there.

Blocks

Blocks are boxes that can be placed on one or more pages or associated with one or more content types. They usually appear in the left or right sidebars. Strategically associating blocks with particular content can be a subtler way o offer navigational aids. For example, you might want to have a block with current open positions appear on your “About” page, but not necessarily with your blog. Or you might not want the job listings to appear on pages describing your services, instead featuring a “Donate Now” box. This flexibility allows you to align content in ways that make sense for the different audiences with varying interests that your site will attract.

Taxonomies

All of the above is fine for sites without a lot of content. But, once you have a library of blog entries, press releases and documents to share, you’ll want to give your visitors a way to find what they’re looking for that doesn’t involve inordinate amounts of scrolling. Search is a no-brainer, but even more important is to organize your content with meaningful labels. For this, use the Taxonomy module.

That’s it for navigation. Next week, we’ll talk about Themes and ways you can make your Drupal site distinctive.Taxonomies allow you to tag or classify your content using hierarchal terminology. For example, if your NPO serves the homeless, you might have papers on poverty and employment, descriptions of available shelters and programs, job opportunities, and much more. You can break this content down into meaningful categories, then assign sub-terms in each category. Once the taxonomy is in place, you can assign menu items to terms in your taxonomy, thus aggregating all of the relevant content on a single page. You can set up menu blocks for the sub-terms and assign each block to it’s category page. The result is a content rich, drill down web site.

Drupal 101: More on Modules

This post originally appeared on the Idealware Blog in October of 2009.
Last week, I kicked off this series on setting up a basic web site with Drupal, the popular open source Content Management System. This week we’re going to take a closer look at Modules, the Drupal add-ons that can extend your web site’s functionality. One of the great things about Drupal is that it is a popular application with a large developer community working with and around it. So there are about a thousand modules that you can use to extend Drupal, covering everything from document management to payment processing. The good news: there’s probably one that supports the functionality that you want to add to your web site. Bad news: needle in a haystack?

A potentially easier way to add extra functionality to Drupal is to download a customized version, such as CiviCRM or Open Atrium. We’ll discuss those options later in the Drupal 101 series.

Core Modules

Drupal comes with a number of built-in modules that you can optionally enable. Some are obviously useful, others not so much. Here are some notes on the ones that you might not initially know that you need:

Primary content types like blog, forum and book offer different modules for user input. They can be combined, or you can pick one for a simple site. Since the differences between, say , a blog (individual journal that people can comment on) and a forum (topical posts that people can reply to) are less distinct than they are in other CMS’s, you might want to pick one or two primary content types and then supplement them with more distinctive ones, such as polls or profiles.Enabling contact allows your users to send private messages to each other on the site, as well as allowing you to set up site-wide contact forms.OpenID allows your users more flexibility and control as to how they log into your site. I can’t see a good reason not to enable this on a public site. Since more and more people have profiles on social networking sites and Google, tools like Facebook Connect or Google Friend Connect should be considered as well.

By default, Drupal asks new users for a name and email, but not much else. With the Profiles module, you can create custom fields and allow your users to share information much as they would on a social network.

Taxonomy is also recommended, and I’ll talk more about that next week.

Throttle should be used on any high-traffic site to improve performance.

Use Trigger if you want to set up alerting and automation on your site.

Add-on modules, must haves:

CCK (Content Construction Kit) More than some CMS’s, Drupal is a content-centric system. It doesn’t simply manage content, but the web interface is structured around the content it manages: content types, content metadata (taxonomies), content sources (RSS feeds). Out of the virtual box, Drupal has content types like blog entries, pages and stories. Each content type has a data entry form associated with it. So, if you create a number of stories, and you want to read them all, then you can browse to the page “story” and they’ll all be listed there. CCK helps you create additional content types and use a fairly robust form-builder to customize the screens.Views

The Views module lets you customize the appearance and functionality of many of Drupal’s standard screens, and to add your own. Unlike CCK, which is limited to the default layout of content types, Views lets you seriously customize the interface. One easy reason to install Views is in order to take advantage of the Calendar view, which gives you not only a full page, graphical calendar to add events to and display, but also sidebar calendar widgets and upcoming event lists.

Here’s a tip: setting up the calendar view is reasonably tedious. The best write-up explaining it (for Drupal 6) is here: http://drupal.org/node/326061. Drupal’s documentation is okay, but this is step-by-step. It does miss one step, though, which is to add the “Event Date – From date” and “Event Date – To date” to the Fields listing (with friendlier titles, like “From” and “To”). Otherwise, calendar items show on the day they were submitted instead of the day that they are occurring.

calendar_view.png

There’s a good case to be made that these two modules should be folded into Drupal’s base package, because, in addition to providing very powerful customization features to the core product, there are a whole slew of additional modules that require their presence. If you plan to install a number of modules and/or customize your site, these are pretty much pre-requisites, so just grab and install them.

Contenders:

WYSIWYG EditorsWhat-You-See-Is-What-You Get, or Rich Text Format (RTE) editors transform Drupal’s default data input boxes into flexible editors with Word-like toolbars. The WSYIWYG module lets you install the editor of your choice. I’ve done well with FCKEditor (recently rebranded CKEditor, thank you!). The WYSIWYG module lets you work with multiple RTE packages and strategically assign them to different fields and content types. Most RTE editors are very configurable, but note that, in addition to installing the modules, you need to install the editors themselves, so follow the instructions carefully.Organic Groups

If you’re building a community site, with hopes of having lots of interactive, social features, Organic Groups gives you the flexibility to not only create all sorts of groups and affiliations on your own, but let your users create their own groups as well, much like Facebook does. For an interactive site, this is essential.

E-Commerce/Donations

Many modules are available for either integrating with Authorize.net or Paypal, or setting up your own e-commerce site. The aptly named e-Commerce module and Ubercart are among the better known and supported options.

Drupal fans: what modules do you recommend? Which do you install first? Leave your recommendations in the comments.

Next week, we’ll talk about menus, blocks and taxonomies: Drupal 101: Navigation.

The Offensive Bardwell Defense

Is it 2009 or 1954?

You might have read about Keith Bardwell, a man out of his time, who, throughout his 35 year career as a Justice of the Peace in Louisiana, has steadfastly denied marriage licenses to interracial couples. For their own good, of course. And for the good of any children they might bear. Some might consider Bardwell an old coot who means well, when he defends his cruel and discriminatory behavior as being based on his concern that interracial marriages generally don’t last, and that it’s cruel to subject children to a world where they will be pariahs to blacks and whites alike. But I can’t listen to his defense of bigotry with anything but an understanding that he has a choice. He can “protect” children from the hate he perpetuates, or he can stop being hateful.

Clearly, Bardwell doesn’t get out much, if he thinks that life for interracial couples and children is all that bad. Apparently, he can’t — or won’t — imagine a culture like the SF East Bay, where my wife, son and I live happily amongst many other interracial families and suffer no more or less discrimination than most of our single or multi-cultured peers. But I’m not buying his racism dressed up as concern for the children defense. I suspect that all of Bardwell’s good buddies, including a State Attorney General who passively condoned his illegal actions, generally agree that hey, we can deal with multiple races, as long as they don’t cross-pollinate.

It’s striking to me that Bardwell’s defense is based on the usual trifecta of bigoted justifications: He “doesn’t believe in mixing the races in that way”; he doesn’t believe that interracial marriages will last, questioning their validity (in relation to single race unions); and he seeks to protect the children. This sounds a lot like the recent Proposition 8 campaign in California, which amended the state constitution to ban gay marriage, not because there’s anything wrong with gays — “We love them!” the Prop 8 backers exclaimed — but because they don’t approve of that sort of union, and it’s not valid, and, if we condone it, we’ll harm the children.

Unlike Bardwell, who had his rationalizations for racism at the ready, the Prop 8 types look like they’re grasping at straws. Asked by a judge to explain exactly what the threat that homosexual marriages hold for heterosexual unions is, an attorney for the Prop 8 coalition admitted that he didn’t know. But, he protested, there might be a threat! We can’t allow two people who love each other to be treated as equal with two other people who love each other because, um, well, there might be some unforeseen consequence for the other people!

My son’s first exposure to racism came a few years before we were planning to teach him about it, when we attempted to stay at a cliff-side inn on the Oregon coast, only to find that another family had gotten down to the beach before us and had taken the opportunity — after seeing my dread-locked wife — to etch, in large letters, “N I G G E R” in the sand, in plain view from anywhere up the bluff. We had to explain to our four year old why we had to leave the nice hotel and get back in the car. Because of the bad people; the ignorant ones, who will insult and threaten us for irrational reasons.

He’ll run into this again. In fact, we’re certain that he already has run into subtler forms of racism. But he’ll suffer less of it than I did, as a Unitarian boy growing up somewhat ostracized in a school where 75% of my classmates were Jewish (unaware, until I was older, of my Jewish roots). I clearly remember the single lunch table where the black kids sat, bused into our 99% white school from Boston. I comforted my interracial friends who were beaten by other kids for being too light-skinned; or stopped by the police for being too dark-skinned in their own neighborhood. There’s still plenty of this type of racism around, but there’s less of it than there was, and it’s easier for us to shelter our son, appropriately, from it.

And it beats what our parents went through. My Jewish heritage was a secret because, after being chased out of the Netherlands by the Nazi’s, my mother and her parents shed their religion like a blood-soaked frock. My wife’s grandmother and aunt signed the earliest petition in what became Brown vs. the Board of Education, and lived through the firestorm that signing that petition incensed in the white community. We are both still very much products of a history of discrimination, and it tempers who we are and what we want for our child.

But we have hope for the future, because, while I don’t find age and naivete to be justifications for discrimination, I do see the generational trend that seems to be eradicating it. It is a better world for my interracial son to grow up in than it was for his racial parents. But it will be an even better one if we work, actively, to resurrect a media that used to pride itself on not taking sides. And we can’t tolerate the Bardwell’s and the Prop 8 bigots who are so sure of their superiority that they can easily justify denying others the same rights and privileges that they have. This is the world that my son is growing up in, let’s make it one that he’s welcome in.

A Sane Proposal Regarding Climate Change

Blog Action Day

Blog Action Day

Today is Blog Action Day, and this year’s theme is Climate Change. Here’s my pitch for an immediate step that could be taken to reduce the production of greenhouse gases significantly, while promoting good health; improving the economy in rural America; and reducing cruelty to animals. In fact, this suggestion is so logical that it’s a travesty that I have to suggest it. It makes Sarah Silverman’s recent hunger-ending proposal look paltry in comparison. Here’s my suggestion:

Close down Factory Farms.

Elininate Agri-Business.

The Humane Society reports that as much as 18% of all geenhouse gases are produced by agri-businesses. Agri-business practices increase air pollution, water pollution, and create general health risks.

The variety of public health concerns include Swine Flu, Diabetes and childhood cancer. As to our general health, the meat produced at these farms has doubled our intake of protein and contributed to the huge increase in obesity.

As if that isn’t enough, the healthier, sustainable family farms that once fed the nation have languished, destroying the economy in rural America. If the health of ourselves and our families, and that of our planet, weren’t enough, wouldn’t this be a case for dismantling this industry?

But, as the Humane Society points out, our lawmakers are giving Agri-business a free pass and stripping the EPA of their authority to regulate them. It’s the equivalent of the Tokyo police escorting Godzilla to the city. If we care about our future, we need to take drastic steps to contain the damage that we are doing to our planet. And we should start with the big, easy, bang for buck solutions. Like this one.

Drupal 101

I’ve been doing a lot of work with the open source content management system Drupal lately, and thought I’d share some thoughts on how to get a new site up and running. Drupal, you might recall, got high ratings in Idealware’s March ’09 report comparing open source content management systems. Despite it’s popularity, there are some detractors who make good points, but I find Drupal to be flexible, powerful and customizable enough to meet a lot of my web development needs.

While you can put together a very sophisticated online community and/or website with it, you can also use it for pretty simple things. For example, the nptech aggregator at nptech,info uses Drupal’s excellent RSS aggregation functions extensively, and not much else. No blog, no forums. But, having installed and tried standalone RSS aggregators like Gregarius, it became clear that Drupal was just as good an aggregator and, if desired, much, much more. Similarly, when co-workers were looking for a site to share documents with optional commenting (to replace an FTP repository), Drupal was a good choice to support a simple task without locking out growth possibilities.

Installation

Installing Drupal can be a three click process or a unix command line nightmare, depending on your circumstances. These days, there are simple options. If you are using a web host, check to see if your site management console is the popular CPanel, and, if so, if it includes the Fantastico utility. Fantastico offers automated installs for many popular open source CMSes, blogs and utilities.

Absent Fantastico, your host might have something similar, or you can download the Drupal source and follow the instructions. Required skills include the ability to modify text files, change file and folder permissions, and create a MySQL database. At a minimum, FTP access to your server, or a good, web-based file manager, will be required.

If you’re installing on your own server, things to be aware of are that you’ll need to have PHP, MySQL and a decent web server, such as Apache installed (these are generally installed by default on Linux, but not on Windows). If you use Linux, consumer-focused Linux variants like Ubuntu and Fedora will have current versions of these applications, properly configured. More robust Linux distributions, like Redhat Enterprise, sometimes suffer from their cautious approach by including software versions that are obsolete. I’m a big fan of Centos, the free version of Red Hat Enterprise, but I’m frustrated that it comes with an older, insecure version of PHP and only very annoying ways to remedy that.

Up and Running

Once installed, Drupal advises you to configure and customize your web site. There are some key decisions to be made, and the success of the configuration process will be better assured if you have a solid idea as to what your web site is going to be used for. With that clearly defined, you can configure the functionality, metadata, site structure, and look and feel of your web site.

  1. Install and enable Modules. Which of the core modules (the ones included in the Drupal pacckage) need to be enabled, and what additional modules are required in order to build your site? This is the first place I go.
  2. Define the site Taxonomy. While you can build a site without a taxonomy, you should only do so for a simple site. A well structured taxonomy helps you make your site navigable; enhances searching; and provides a great tool for pyramid-style content management, with broad topics on one level and the ability to refine and dig deeper intuitively built into the site.
  3. Structure your site with Blocks. You can define blocks, assign them to regions on a page (such as the sidebars or header) and restrict them to certain pages. On the theory that a good web site navigates the user through the site intelligently, based on what they click, the ability to dynamically highlight different content on different pages is one of Drupal’s real strengths.
  4. Theme your web site. Don’t settle for the default themes — there are hundreds (or thousands) to choose from. Go to Drupal Theme Garden and find one that meets your needs, then tweak it. You can do a lot with a good theme and the built in thee design tools, or, if you’re a web developer, you can modify your themes PHP and CSS to create something completely unique. Just be sure that you followed the installation suggestions as to where to store themes and modules so that they won’t get overwritten by an upgrade.

This just brushes the surface, so I’ll do some deeper dives into Drupal configuration over the next few weeks.

How and Why RSS is Alive and Well

This post was first published on the Idealware Blog in September of 2009.

rss.png
Image: SRD

RSS, one of my favorite protocols, has been taking a beating in the blogosphere. Steve Gillmor, in his blog TechcrunchIT, declared it dead in May, and many others have followed suit.

Did Twitter Kill it?

The popular theory is that, with social networks like Twitter and Facebook serving as link referral tools, there’s no need to setup and look at feeds in a reader anymore. And I agree that many people will forgo RSS in favor of the links that their friends and mentors tweet and share. But this is kind of like saying that, if more people shop at farmer’s markets than supermarkets, we will no longer need trucks. Dave Winer, quite arguably the founder of RSS, and our friends at ReadWriteWeb have leapt to RSS’s defense with similar points – Winer puts it best, saying:

“These protocols…are so deeply ingrained in the infrastructure they become part of the fabric of the Internet. They don’t die, they don’t rest in piece.”

My arguments for the defense:

1. RSS is, and always has been about, taking control of the information you peruse. Instead of searching, browsing, and otherwise separating a little wheat from a load of chaff, you use RSS to subscribe to the content that you have vetted as pertinent to your interests and needs. While that might cross-over a bit with what your friends want to share on Facebook, it’s you determining the importance, not your friends. For a number of us, who use the internet for research; brand monitoring; or other explicit purposes, a good RSS Reader will still offer the best productivity boost out there.

2. Where do you think your friends get those links? It’s highly likely that most of them — before the retweets and the sharing — grabbed them from an RSS feed. I post links on Twitter and Facebook, and I get most of them from my Google Reader flow.

3. It’s not the water, it’s the pipe. The majority of those links referred by Twitter are fed into Twitter via RSS. Twitterfeed, the most popular tool for feeding RSS data to Twitter, boasts about half a million feeds. Facebook, Friendfeed and their ilk all allow importing from RSS sources to profiles.

So, here are some of the ways I use RSS every day:

Basic Aggregation with Drupal

My first big RSS experiment built on the nptech tagging phenomenon. Some background: About five years ago, with the advent of RSS-enabled websites that allowed for storing and tagging information (such as Delicious, Flickr and most blogging platforms), Techsoup CEO Marnie Webb had a bright idea. She started tagging articles, blog posts, and other content pertinent to those working in or with nonprofits and technology with the tag “nptech”. She invited her friends to do the same. And she shared with everyone her tips for setting up an RSS newsreader and subscribing to things marked with our tag. Marnie and I had lunch in late 2005 and agreed that the next step was to set up a web site that aggregated all of this information. So I put up the nptech.info site, which continues to pull nptech-tagged blog entries from around the web.

Other Tricks

Recently, I used Twitterfeed to push the nptech aggregated information to the nptechinfo Twitter account. So, if you don’t like RSS, you can still get the links via Twitter. But stay aware that they get there via RSS!

I use RSS to track Idealware comments, Idealware mentions on Twitter, and I subscribe to the blog, of course, so I can see what my friends are saying.

I use RSS on my personal website to do some lifestreaming, pulling in Tweets and my Google Reader favorites.

But I’m pretty dull — what’s more exciting is the way that Google Reader let me create a “bundle” of all of the nptech blogs that I follow. You can sample a bunch of great Idealware-sympatico bloggers just by adding it to your reader.

Is RSS dead? Not around here.

Why We Homeschool

homeschool

Warning: This entry is a little off of the usual nptech topic. Feel free to skip if you only come here for the geeky thoughts!

The decision to homeschool our kid wasn’t a slam dunk, but it was the right one. We made it after thoroughly investigating everything — our son’s learning style, both through the school system and via our local Children’s Hospital; every public, private, and non-public school within about a six town radius; and conversations with educators, administrators, parents and other experts. Given what we now know about how our son learns and what options are out there, we aren’t guessing that this is the best route.  We’ve verified it.

But we are constantly questioned about the decision.

We are conscientious, aware parents who value our son’s education and happiness highly (just like you!) and we have identified and followed the path that will work out best for him.

There is no need to be offended if your child’s best environment is a different one, like a public school.

There is no need to be panicked about his psychological well-being:  He has lots of friends, makes new friends easily, and is well-behaved, polite and happy.

There is no need to worry about our qualifications:  We know what we can teach him and we know where to find museums, extra-curricular programs and classes, qualified tutors and other external resources in order to get him what he needs.

Do we have opinions about public schools, and what they’re like under the testing-obsessed No Child Left Behind act, in a system where the key educational decisions are made by the middle-management bureaucrats and local politicians?  Sure.  But our opinion isn’t that children can’t succeed in those schools.  It’s that children who are conducive to that learning environment do well, and we have it on good, credentialed authority that our kid won’t.

Do we think our curriculum, which mixes standard K-12 materials with lots of trips, history and science classes, arts, gymnastics (circus school!) and hands-on activities is, in many ways, superior to the brick and mortar experience?  Of course! We can do a lot of  training that is targeted to our son’s learning style, as opposed to mostly desk-bound training generalized for a 20 to 40 child audience.  We appeal to his creativity, and let his interests guide an appropriate percentage of the curriculum. Schools can’t afford to provide this level of individualized attention and responsiveness to their students.

Are we sheltering and insulating our child from a heathenous, corrupting culture that would steer him away from the path of God and righteousness? No, we own a TV and he watches it.  And we rest pretty heavy on the heathenous side of the scale in the first place.  We are protecting him from a lot of character-building bullying, peer pressure and anxiety, but we are extremely reassured that he has plenty of character all the same.  My friend Jane has a joke about this:  “Yeah, in order to give my  homeshcooled kid the school social experience, once a week I take her  into the bathroom, beat her up and steal her lunch money.”

I think that last one is the big one — I think a lot of the well meaning questions about socialization (a word that every homeschooler has ample reason to simply loathe) boil down to a concern that our child won’t be able to cope as an adult because he missed out on the sheer brutality of spending five days a week with a slew of other children, experiencing all of the social confusion and frustration that they experience and inflict on their peers.  Our kid experiences self doubt and frustration.  He knows what it feels like to be criticized, and he can be critical of others.  He might not get kicked and ridiculed with the intensity that we were when we went to public schools; he might remain a quirky, individual who doesn’t take fashion cues from The WB; but homeschooling him has not resulted in some sort of avoidance of human doubt and discomfort.  In that, he’s a lot like every other kid. And he’ll deal with it, learn from it, and become an adult that shows no external signs of having been homeschooled.

It’s just getting to be a bit much, being constantly questioned about something that we did the work to identify as the right thing for our child.  It is not an affront on society.  It’s what’s best for someone who we not only care incredibly about, but are actually responsible for.  So, please, if you know us, have a little faith — we show pretty good judgment and intelligence in the other things we do, why would we be any different about something as important as this?