Case Study: A Small Non-profit Infrastructure Rebuild

At a small non-profit I consult with, we were able to take an office in the depths of chaos and confusion due to an unstable and unreliable technology foundation and rebuild it into a productive and flexible environment based on simple technology that repaid itself in under a year. The benefits to productivity and morale were also very tangible, though not measurable in financial terms.


CPOSC 2009

Here's the abstract for the session I'll be sharing tomorrow at Central Pennsylvania Open Source Conference. I've posted some "further reading" as well as a couple versions of the slide deck to help people retain the information. These conferences cram a lot in.

Linux has many advanced network traffic monitoring and manipulation capabilities. In this session we’ll assume you have command-line access to a Linux firewall or router between your network and the outside world. We’ll explore the tools available to most distros and how they can be used to gather and manipulate information from the network. We’ll primarily discuss tools available from the command line such as tcpdump and iproute2. The first will help us discover what is flowing and the second will help us manipulate it in the direction desired.


Arduino Project Video - Advanced Blinky Lights

I'm working on learning the Arduino, an electronics board with many interesting application for getting the physical world and the digital world to interact. It has been used to create interactive art, musical instruments, mass transit alerts, rc helicopters and super accurate espresso machines along with tons of other things. It has been used to take input from websites, streams of water, wii nunchucks and various items you might not expect.

For now, I'm just blinking lights and sounding alarms. I've given it three patterns for blinking 5 lights and am demonstrating the ability for me to instruct the arduino which pattern to use for the blinking. I'm also pointing out some other interesting things I stumbled on as I tinkered.

Arduino Project - Advanced Blinky Lights from Josiah Ritchie on Vimeo.


Using Bazaar to Manage Your Multi-site Drupal Environment

I've found a solution to my own needs for version control of my drupal multi-site environment. I'm sure there is room for improvement as I'm far from a master at any version control system, but this is now working for me. I welcome your advice on ways to change or enhance this environment, but first a few words on my goals and why I chose Bazaar over the other options.


A Brief Personal History of CCK & Views

I think back not so fondly of the Flexinode days. My first experiences with Drupal included the now defunct flexinode module and I never really got comfortable with it. That's probably part of why I went to Xoops for awhile. I comfortably ran a community site around Biometrics on Linux for a year or so on Xoops and think it is still an option worth looking at, but when I came back to Drupal after the release of version 5, everyone was raving about CCK and Views.

I didn't shed a tear when I found out Flexinode was done. It pioneered the idea of describing your content rather than putting it all in one big box, but CCK clearly trumped over it in implementation. Drupal 5 had become much more interesting. At this point, I had yet to really learn Views and part of that was because views was still ugly and unruly in the interface. It clearly had power to demonstrate the potential of CCK, but only if you could wield it. I messed with Views some, and put it to a bit of use, but the true power evaded me because the interface didn't communicate how the module worked. Module developers were beginning to move toward CCK and solutions to many problems that had previously required custom content types began to be solved by new modules that extended both CCK and Views and recipes to put all the pieces together. This helped to solidify Views and CCK as part of the vast majority of Drupal sites.


Ubuntu Intrepid on an old Dell PowerEdge 1400SC

I had an old Dell PE 1400SC that I wanted to run Ubuntu 8.10 (Intrepid) on. It turns out this required some dusting and cleaning of the digital type, but a little extra attention and it's humming along great now. If you're running into the same thing, maybe I can show you the way and save you some time. The two primary problems I had was an old BIOS firmware and a missing kernel option after install.

Upgrading Firmware
So it turns out that Dell has some firmware upgrade options for Linux based computers, but if the computer doesn't yet have an OS and you can't get Ubuntu installed yet because of the OS you have to pull out a Windows disk and install. I tossed a small IDE drive onto the same ribbon cable that the CD drive was on and popped in a Windows XP CD. Not intending to leave it installed for more than a couple hours, I don't believe licensing is an issue.

Once I did the typical install I acquired the firmware. Don't go with the default BIOS download. It requires floppies and I don't know about you, but I don't even have any in my office. The other will install from the running XP install. Select the proper one from this PE 1400SC BIOS Download page.

Then all you have to do is run it and your first problem is solved. Be sure to remove this drive before you install Ubuntu as this will end up holding the boot sector and you'll have some difficulty removing it later.

Won't Boot Intrepid After Install
After having done the complete install of Intrepid, I went to boot up the system and enjoy my fresh Linux goodness, but it was not to be. I receive a message complaining about a bad UUID and suggesting rootdelay be added to the kernel and some other things. Then it bounced me to the BusyBox prompt.

  1. At the busy box prompt, type reboot
  2. When the Grub prompt comes up, hit 'e' to edit the default line
  3. At the end of this line, type rootdelay=50
  4. Then hit 'b' to boot the box, this works, but is only temporary

In order to make the rootdelay stay between kernel upgrade and other process that upgrades grub, I also ran through this process after logging in.

  1. Run sudo vim /boot/grub/menu.lst
  2. Find the line starting with # kopt=root=UUID...
  3. Add rootdelay=50 to the end of that line. (type i in vim to insert text)
  4. Save and exit the document (hit your ESC key to leave insert mode and then :wq to write and quit vim)
  5. Run sudo update-grub
  6. Run sudo reboot just to prove that it worked

You should now be up and running. That old iron in renewed to its former glory through the power of linux.


Making Content Creation More Friendly in Drupal

This is a super simple way to make adding content to a drupal site just a little bit more comfortable. If you've created a Content Type, then you know you have the opportunity to change the "Title" and "Description" field names. The first time I ran into this I had trouble figuring out why I'd change these. The more I get into Drupal I find more and more reasons to tweak this.


Taking Drupal Mobile with Domain Module

I've been playing around with the idea of a mobile site for awhile now. This evening I've created the very basic beginning of JosiahRitchie.mobi. I used the Domain Access module for Drupal to create a second domain for JosiahRitchie.com that has the same content. Using the Domain Theme module that comes with Domain Access, I can then provide a handheld theme. My current one is pretty much the Zen STARTERKIT theme with a few things stripped out of the page.tpl.php. I'll look to improve it in the future.


Changing the Wording of "Submitted by" for Drupal Pages

I've found myself wanting to change the wording of "Submitted By" in a drupal blog and pages for a church site. When you only have one or two authors and the primary point of the site isn't blogging or writing, then "submitted" seems like a somewhat awkward term. Changing this is really quite simple. Here's a quick tutorial.

  1. The first thing you'll want to do is turn on the Theme Developer module. It is one of the ones in the Dev Module.
  2. Then click the little button in the lower-left to activate it.
  3. Select "Submitted by" and check out the dark grey box that appears. You'll notice that it identifies a function that is providing this. It also identifies a number of other function names it looks for to provide this.
  4. You should click on that to take you to a Drupal site that will show you the function.
  5. Copy this function into your own theme's template.php file. This is a hook so rename the first part of the function to the name of your theme. The function name will look something like themename_node_submitted(). It should be one of the candidates in the grey box you originally found the first function name in.
  6. Inside the code you pasted into template.php, you'll notice the words "Submitted by". Simply change that to your preferred wording. Mine was "Written by".
  7. Then you just need get drupal to recognize this new function by emptying your cache by going to the Admin-> Site Configuration -> Performance page.

A Church Drupal Installation Profile

I've been thinking an Installation Profile for churches would not only be helpful to me, but also many others so I spent some time yesterday playing around with the idea and made some progress. I haven't figured everything out, but I started with the phpedu_profile-6.x-1.1-beta1. (As you can see my efforts are directed at Drupal 6.) phpedu_profile was far more complicated than I expect to need so I cut out a lot, most of it even. Then I exported content types from a church site I've done and used their code to import. I also have views, but haven't yet figured out how to import them.