Tag Archives: drupal

Year-end Reflections

This post was originally published on the NTEN Blog on December 24th, 2015.

As years go, 2015 was a significant one in my career. The work of a CIO, or IT Director, or whatever title you give the person primarily responsible for IT strategy and implementation, is (ideally) two parts planning and one part doing. So in 2015—my third year at Legal Services Corporation—we did a couple of the big things that we’d been planning in 2013 and 2014.

First and foremost, we (and I do mean we—I play my part, but I get things done with an awesome staff and coworkers) rolled out the first iteration of our “Data Portal.” The vision for the Data Portal is that, as a funder that works primarily with 134 civil legal aid firms across the U.S. and territories, we should be able to access the relevant information about any grantee quickly and easily without worrying about whether we have the latest version of a document or report. To reach this vision, we implemented a custom, merged Salesforce/Box system. This entailed about a year of co-development with our partner, Exponent Partners, and a move from in-house servers to the Cloud. We’ll complete our Cloud “trifecta” in early 2016, when we go to Microsoft’s Office 365.

This was particularly exciting for me, because I have been envisioning and waiting for technology to reach a level of maturity and… collegiality that makes the vision of one place where documents and databases can co-exist a reality. Integration, and one-stop access to information, have always been the holy grails that I’ve sought for the companies that I’ve worked for; but the quests have been Monty Python-esque through the days when even Microsoft products weren’t compatible with each other, much less compatible with anything else. What we’ve rolled out is more of a stump than a tree; but in the next year we’ll grow a custom grants management system on top of that; and then we’ll incorporate everything pertinent to our grantees that currently hides in Access, Excel, and other places.

I’m working on a much more detailed case study of this project for NTEN to publish next year.

Secondly, we revamped our website, doing a massive upgrade from Drupal 7 to… Drupal 7! The website in place when I came to LSC was content-rich, navigation-challenged, and not too good at telling people what it is that we actually do.The four separate websites that made up our entire site weren’t even cross-searchable until we addressed that problem in early 2014. Internal terminology and acronyms existed on the front page and in the menus, making some things incomprehensible to the public, and others misleading. For example, we often refer to the law firms that we fund as “programs.” But, in the funding world, a “program” is a funding category, such as “arts” or “environment.” Using that terminology. along with too buried an explanation that what we actually do is allocate funding, not practice law ourselves, led many people to assume that we were the parent office of a nationwide legal aid firm, which we aren’t.

The new site, designed by some incredibly talented people at Beaconfire-RedEngine (with a particular call out to Eve Simon, who COMPLETELY got the aesthetic that we were going for and pretty much designed the site in about six hours), tells you up front who we are, what we do, and why civil legal aid is so important, in a country where the right to an attorney is only assured in criminal cases. While civil cases include home foreclosures, domestic violence, child custody, and all sorts of things that can devastate the lives of people who can’t afford an attorney to defend them. This new site looks just as good on a phone as on a computer, a requirement for the Twenty-Teens.

My happiness in life directly correlates to my ability to improve the effectiveness of the organizations that I work for, with meaningful missions like equal justice for all, defense against those who pollute the planet, and the opportunity to work, regardless of your situation in life. At my current job, we’re killing it.

The End Of NPTech (.INFO)

After eight years, I’ve decided to shutter the nptech.info website, which will also disable the @nptechinfo twitter feed that was derived from it.  Obviously, Twitter, Facebook and Google Plus have made RSS aggregation sites like nptech.info obsolete. Further, as Google ranks links from aggregators lower and lower on the optimization scale, it seems like I might be doing more harm than good by aggregating all of the nptech blogs there. It will be better for all if I spend my efforts promoting good posts on social media, rather than automatically populating a ghost town.

Long-time Techcafeterians will recall that NPTECH.INFO used to be a pretty cool thing. The history is as follows:

Around 2004, when RSS first started getting adopted on the web, a very cool site called Del.icio.us popped up.  Delicious was a social bookmarking site, where you could save links with keywords and descriptions, and your friends could see what you were sharing (as well as the rest of the delicious userbase). Smart people like Marnie Webb and Marshall Kirkpatrick agreed that they would tag articles of interest to their peers with the label “nptech”. Hence, the origin of the term. They let about 50 friends know and they all fired up their newsreaders (I believe that Bloglines was state of the art back then — Google Reader was just a glimmer in some 20%er’s eye).

Understand, referring information by keyword (#hashtag) is what we are all doing all of the time now.  But in 2005, it was a new idea, and Marnie’s group were among the first to see the potential.

I picked up on this trend in 2005.  At lunch one day, Marnie and I agreed that a web site was the next step for our experiment in information referral.  So I installed Drupal and registered the domain and have kept it running (which takes minimal effort) ever since.  It got pretty useless by about 2009, but around that time I started feeding the links to the @nptechinfo Twitter account, and it had a following as well.

Yesterday, I received an email asking me to take down an article that included a link to a web site.  It was an odd request — seemed like a very 2001, what is this world wide web thing? request: “You don’t have permission to link to our site”.  Further digging revealed that these were far from net neophytes; they were SEO experts who understood that a click on the link from my aggregator was being misinterpreted by Google as a potential type of link fraud, thus impairing their SEO.  I instantly realized that this could be negatively impacting all of my sources –and most of my sources are my friends in the nptech community.

There is probably some way that I could counter the Google assumption about the aggregator.  But there are less than three visitors a day, on average. So, nptech.info is gone, but the community referring nptech information is gigantic and global.  It’s no longer an experiment, it’s a movement.  And it will long outlive its origins.

Adventures In Web Site Migration

This post was first published on the Idealware Blog in April of 2010.

I recently took on the project of migrating the Idealware articles and blog from their old homes on Idealware’s prior web site and Google’s Blogger service to our shiny, new, Drupal-based home. This was an interesting data-migration challenge. The Idealware articles were static HTML web pages that needed to be put in Drupal’s content database. And there is no utility that imports Blogger blogs to Drupal. Both projects required research and creativity.

The first step in any data migration project is to determine if automating the task will be more work than just doing it by hand. Idealware has about 220 articles published; cutting and pasting the text into Drupal, and then cleaning up the formatting, would be a grueling project for someone. On the other hand, automating the process was not a slam dunk. Database data is easier to write conversion processes for than free form text. HTML is somewhere in the middle, with HTML codes that identify sections, but lots of free form data as well.

Converting HTML Articles with Regular Expressions

My toolkit (of choice) for this project was Sed, the Unix Stream Editor, and a generic installation of Drupal. Sed does regular expression searching and replacing. So I wrote a script that:

  1. Deleted lines with HTML tags that we didn’t need;
  2. stored data between title and body tags;
  3. and converted those items to SQL code that would insert the title and article text into my Drupal database.

This was the best I could do: other standardized information, such as author and publishing date, was not standardized in the text, so I left calling those out for a clean-up phase that the Idealware staff took on. The project was a success, in it that it took less than two days to complete the conversion. It was never going to be an easy one.

Without going too far, the sed command to delete, say, a “META” tag is:


That says to search for a literal “less than” bracket (the forward slash implies literal) and the text meta and delete any line that contains it. A tricky part of the cleanup was to make sure that my search phrases weren’t ones that might also match article text.

Once I’d stripped the file down to just the data between the “title” and “body” tags, I issued this command:

s/\<title\>(.*)\<\/title\>.*\<body\>(.*)\<\/body\>/insert into articles (title, body) values (‘\1’, ‘\2’);/

This searches for the text between HTML “title” tags, storing it in variable 1, then the text between “body” tags, storing it in variable 2, then substitutes the variable data into a simple SQL insert statement in the replacement string. Iterating a script with all of the clean-up commands, culminating in that last command, gave me a text file that could be imported into the Drupal database. The remaining cleanup was done in Drupal’s WYSIWYG interface.

Blog Conversion

As I said, there is no such thing as a program or module that converts a Blogger Blog into Drupal format. And our circumstance was further complicated by the fact that the Idealware Blog was in Blogger’s legacy “FTP” format, so the conversion options available were further limited.

There is an excellent module for converting WordPress blogs to Drupal, and there were options for converting a legacy Blogger blog to WordPress. So, then the question was, how well will the blog survive a double conversion? The answer was: very well! I challenge any of you to identify the one post that didn’t come through with every word and picture intact.

I had a good start for this, Matthew Saunders at the Nonprofits and Web 2.0 Blog posted this excellent guide. If you have a current Blogger blog to migrate, every step here will work. My problem was that the Idealware blog was in the old “FTP” format. Google has announced that blogs in their original publishing format must be converted by May 1st. While this fact had little or no relationship to the web site move to Drupal, it’s convenient that we made the move well in advance of that.

To prep, I installed current, vanilla copies of WordPress and Drupal at techcafeteria.com. I tracked down Google’s free blog converters. While there is no WP to Drupal converter, most other formats are covered, and I just used their web-based Blogger to WordPress tool to convert the exported Idealware blog to WP format. The conversion process prompted me to create accounts for each author.

To get from WordPress to Drupal, I installed above-mentioned WordPress-import module. As with the first import, this one also prompted me to create the authors’ Drupal accounts. It also had an option to store all images locally (which required rights to create a public-writeable folder on the Drupal server). Again, this worked very well.

With my test completed, I set about doing it all over again on the new Idealware blog. Here I had a little less flexibility. I had administrative rights in Drupal, but I didn’t have access to the server. Two challenges: The server’s file upload limit (set in both Drupal and PHP’s initialization file) was set to a smaller size than my WordPress import file. I got around this by importing it in by individual blogger, making sure to include all current and former Idealware bloggers. The second issue was in creating a folder for the images, which I asked our host and designer at Digital Loom.com to do for me.


The final challenge was even stickier — the posts came across, but the URLs were in a different format than the old Blogger URLs This was a problem for the articles as well. How many sites do you think link to Idealware content out there? For this, I begged for enough server access to write and run a PHP script that renamed the current URLs to their former names — a half-successful effort, as Drupal had dramatically renamed a bunch of them. The remainder we manually altered.

All told, about two hours research time, three or four hours conversion (over a number of days) and more for the clean-up, as I wasted a lot of time trying to come up with a pure SQL command to do the URL renaming, only to eventually determine that it couldn’t be done without some scripting. A fun project, though, but I’d call it a success.

I hope this helps you out if you ever find yourself faced with a similar challenge.

Drupal 101: Look and Feel

I’m wrapping up the Drupal 101 series with some talk about Drupal themes, and some additional info on topics that we’ve already covered. The goal of these posts is to give new Drupal administrators an idea about how Drupal works, and some pointers to the key add-ons and resources in the broad Drupal ecosystem. For reference’ sake, we started with an intro, moved on to Modules, and then covered navigation. So, now that we have a functional web site, what does it look like?

Getting Themes

Drupal comes with five or six themes to choose from, and, if you use them, then your site will look very, um, uninspired. This might not be a problem if your goal is not to impress your visitors, but simply provide information or functionality, but, if you’re putting up a website for your organization, you want one that stands out from the crowd. So you have two choices: you can find a better, less common theme, or you can customize one of the default themes.

The first place to go is to Drupal Theme Garden. This is where many Drupal theme designers share their work. Here, you can either find a theme to use (or customize for your use), or get a good idea about the types of things you can do with your theme.

Customizing Themes

From the Administration menu, you can modify any theme’s main text elements, deciding whether or not to display your site’s mission or slogan, name or logo. And you can replace the default “droplet” logo with your own logo (a no-brainer!). Assuming that you’ve started with a theme that you really like, this might be enough. But, if you want to do more serious customizations, such as moving the logo to the center of your header or changing the site colors, you’re going to need basic web 4.0 programming skills and, most likely, some level of comfort with the PHP scripting language.

Most themes consist of one or more style sheets, a number of “tpl” files with PHP/HTML code laying out various page elements, such as blocks, footers and sidebars, and one called page.tpl.php that establishes the overall page layout. The main styles are usually stored in styles.css, and you can make a lot of changes to your site’s appearance here, modifying default background colors and images, placing and resizing content.

If that’s not enough, most customizations can be done using WordPress’s internal macros and functions, meaning that you won’t have to worry about assigning variables or what goes into the foreach loops. WordPress has simple commands that you can insert into a page to loop through your posts and display them or list your categories in the sidebar. A nice breakdown of the WordPress functions can be found at WpExplorer.com.

If you do modify the stylesheets and templates, make sure that you are storing your themes in sites/default folder and that you’re properly backing up whenever you do an upgrade. If you modify theme files in the main themes folder, and then upgrade to, say, a Drupal security fix, your modifications will be overwritten. In general, themes remain functional from dot release to dot release (e.g., what worked for Drupal 6.1 still works in 6.9), but the Drupal maintainers often make dramatic changes in number versions, so don’t assume that your theme in Drupal 6.9 will not be messed up if you upgrade to Drupal 7 (coming soon).

More Installation Options

In the first Drupal 101 post, I mentioned Fantastico, a two-click installer for Drupal available on most hosting services that use the cPanel site management interface. I subsequently ran into this useful article about Elefante and Simplescripts. These are packages that you can use to install a variety of popular open source applications, including Drupal.

In addition to application installers, there are other options for installing Drupal:

Customized Drupal installations like Open Atrium and Acquia come with more modules and functionality.There’s been some development and discussion about Installation Profiles, a Drupal add-on functionality that lets you define additional installation details, such as module defaults and inclusion of additional modules and data for distributing custom Drupal installations.


What I hope this Drupal 101 series has done is to offer some context and guidance for people new to Drupal who are about to give it a try, and some backing to my initial proposition that Drupal’s strength is it’s flexibility. Along the way, I’ve received tweets asking “Why Drupal?” and my answer is that Drupal isn’t the only CMS out there, or necessarily the best one for your web site. There are a huge variety of commercial and open source options. In fact, my personal website runs on a combination of Frog CMS and WordPress, because I wanted a simple tool for integrating RSS feeds, which Frog provides, and a powerful blogging platform. On the other hand, last week the White House ditched their commercial CMS for Drupal. So this series might also inspire you to look elsewhere, particularly if a more traditional, tree-structured content management interface will work better for you than Drupal’s layout by association model. Whichever way you go, we suffer more from a surfeit of good options than a lack of same.

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.


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 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.


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.


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.


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.


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.

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.


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.

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.

More RSS Tools: Web Site Integration

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

Those of you who visit pages besides the blog here at Idealware have noted that my article Using RSS Tools to Feed your Information Needs is up. If you’re new to Really Simple Syndication, my hope is that my guide will help you become more efficient and effective in your use of the web. If you’re an old hand at RSS, then I’m hoping the article will serve as a good tool when trying to impress others of the value of syndication.

RSS is a big topic, and writing the article was, in one respect, a challenge: in order to write a solid, intermediate guide to RSS use, I had to narrow the scope a bit. My initial interest and eventual obsession with RSS was sparked by two things: The overall usefulness of a tool that brings the web info I’m interested in to me; and the possibilities of using RSS as a publishing platform. So the article covers the first use well, but omits many cool things, like RSS Pipes, OPML, web site integration, and aggregators/portals. I hope to take these on over the next few weeks here in the blog.

Let’s start with web site integration. If you manage a web site, then you know that the name of the game is fresh content. While RSS will not eliminate the need to actively maintain your site, it can supplement your content in an automatically refreshing stream, as well as serve as a publishing medium.

If your site is built with a content management system (CMS), then you are probably already most of the way there. Most CMS’s have built in RSS aggregators that allow you to select the relevant content and publish it to a section of your site. If it isn’t a standard feature of your CMS, then browse the catalog of add-ons and extensions and you’ll probably find it there. Of course, if you use a commercial CMS, as opposed to an open source product, you might have to pay more for the add-on.

If you don’t have a CMS, a minimal amount of PHP scripting expertise can accomplish the same thing by using pre-built RSS functions libraries like Magpie RSS. Magpie is a set of PHP routines that you copy to your web server, allowing you to write minimal, simple code that identifies the feed and publishes it to a page. the heavy lifting is done by the Magpie — all you do is reference the feed and format the appearance of the items.

The simplest use is in republishing content on the web that’s pertinent to your site. You can aggregate news relevant to your cause, or sample topics of related interest from blogs on the web. For an example, look at the nonprofit technology news aggregator that I set up at nptech.info. This uses Drupal‘s built-in RSS aggregator to create a three-section web site republishing nptech blogs, items tagged “nptech” on the web, and general technology news.

But it doesn’t stop there — if you post open positions on Craigslist, you can eliminate the need to also update your web page by simply subscribing to a search for your open jobs. The strategy here is in using RSS not only to add content, but to maintain content that currently requires a Webmaster’s attention. If you post your events to a site like Upcoming.org, your events page can be a simple RSS feed. If you link to related sites and associates, you can automate that as well by setting up an account at a bookmarking site, such as Delicious, tagging sites that you want to be linked to your web site with a unique tag, and then subscribing to that tag. And this concept works just as well for graphical content at Flickr, or videos at Youtube.

I’ll be posting soon about additional ways to manage RSS feeds, and I want to take a deeper dive into Google Reader, which takes it all to another level. In the meantime, if you have great stories about integrating RSS feeds with your web site, please share in the comments.

Here with the Wind

Techcafeteria landed on it’s third (or fourth, if you count the ibook I developed it on) web host this week. I have hope that this is one that won’t merge with a bigger, awfuller company or forget to tell me that they regularly overload their servers to the point where my web sites go down. I’ve had a run of bad luck. I host seven or eight domains, including a couple of sites for friends, so I like to get a decent reseller’s account.

I was with Dotable, a nice outfit out of Australia run by a guy named “Aussie Bob”, and it was a good place to be – decent pricing, really responsive support, mostly stable. I recommended Dotable often because the problems were minimal in relation to the great communication and supportive attitude of the staff.

A few months ago Bob announced that he was retiring and handing over management to another company. In short order, the new service deleted a (dormant) Drupal site off of one of my domains without telling me; and changed my mail records to point to a new spam filtering service, without informing me. Since one of my “client” domains routes his mail through EasyDNS (on my recommendation), this resulted in two days of mail being completely lost. During the crisis, every support ticket I put in got a “we’re forwarding this to our admin” answer. The admin had a backlog, I bet, because I wasn’t getting responses for days, and the responses I got were not helpful, and ducked the ones like “why did you change my MX record without telling me?”

Anyway, my friend/client is active on Green America’s forums (they used to be Coop America), and he’d heard very good things about Canvas Dreams, an Oregon hosting service with a wind-powered server farm and the exact plans and setup that I was looking for. So I made the move, and Techcafeteria,NPTech.info and Krazy.com, along with my other projects, are all a bit greener and happier today. And it does seem to me that this server is faster than the one I was on with Dotable. Those of you who actually visit the site (I assume that most of you simply subscribe) might have noticed some weirdness this morning as I adjusted a few things, but the blog came over without a noticeable hitch.

So, welcome to the same site, at it’s new green home.