Development Seed Blog
Week in DC Tech: August 18 Edition
Web Strategy, Networking, and More Amazing Weather
Web Strategy, Networking, and More Amazing Weather
The mild summer weather continues as we move into the third week in August, and no matter how worrisome strange weather trends are these days, we must admit the last few weeks have been pretty nice. Local tech events also continue to buck the August trends in DC, with many scheduled and past ones still getting great turnouts. Here are some of the events we’re looking forward to this week.
Tuesday, August 19
7:00 pm
NetSquared’s Pimp My Nonprofit: Like giving advice you don’t have to implement yourself? Workplace Fairness is redesigning its website and their team is looking for strategic help with design, usability, and finding a way to display a lot of content in a non-threatening way. Come out to give your two cents.
6:00 – 9:00 pm
Week in DC Tech: August 11 Edition
Drupal, Authors, Happy Hours, and Beautiful Weather
Drupal, Authors, Happy Hours, and Beautiful Weather
It's a gorgeous start to the week here in Washington, DC with sunny and cool weather that makes it hard to believe it's August - and not May. It looks like our luck will hold out for most of the week too. If you can avoid the pull of backyard barbecues and outdoor happy hours, come out to some tech events this week. The walk there and back will be beautiful, and there's some interesting chances to dork out with other techies. And for a full list of what's happening in tech this week, head over to DC Tech Events.
Monday, August 11
7:15 - 9:00 pm
DC Drupal Meetup: We're gathering tonight at Stetson's to talk Drupal and play some competitive foosball. Come out to talk to Drupal developers, users, and those just interested in the platform - or just to show off your foosball ferocity.
Tuesday, August 12
7:00 pm
George Pelecanos Reading: It's not tech-related, but George Pelecanos is one of DC's most well known celebrities. He'll be at Politics and Prose to talk about his latest book Turnaround.
Washington, DC Drupal Meetup + Round Robin Foosball Tournament Tonight
Come Out for Drupal, Beer, and Foosball
Come Out for Drupal, Beer, and Foosball
Tonight we're having our monthly Drupal meetup at Stetson's Bar and Restaurant. Usually Washington, DC is a ghost town in August with Congress shutting its doors and most people fleeing the heat. But this August is definitely an exception - Congress has stuck around longer than usual and its downright comfortable outside. So we're expecting a fun get together tonight.
We'll start off with the usual round of 5-minute lighting talks. This is the time to share what you're working on with the group, and it's a great way to lead into more detailed conversations later on in the evening. So far we have two speakers on the docket - Mike Haggerty and Andy Laken, who will be saying goodbye too as he moves to Montana. Also, Addison Berry will be making an appearance tonight, so hopefully we can twist her arm to present as well. If you would like to talk, just post over here and come ready.
After last month's highly competitive, post-meetup foosball games, we've decided there is an obvious need for a more foosball action. So tonight we'll be having the first ever DC Drupal Round Robin foosball tournament. Come ready to play and with some quarters in your pocket.
Migration Tricks and Challenges
What's your approach?
What's your approach?
This Wednesday we finished a migration from an old site running on OpenACS to a relatively complex Drupal site with organic groups, events, imagecache, attachments, books, and the whole spiel.
Having gone over budget on migrations before, this time we wanted to take a more systematic approach and make sure that we at least learned something if we wind up eating hours.
This is the approach we came up with:
1) Analyze, analyze, analyze
2) Write reusable code :)
3) Share our experience
1) Analyze, analyze, analyze
A problem in several previous migrations was that the real time hogs appeared late on the scene. Problematic data webs passed under our radar when estimating projects but took all our attention when the days got late. Another issue we had run into was that seemingly simple tasks turned out to be quite twisted and time consuming.
Improved Aggregator for Drupal 7: What's Under the Hood
An Overview of Its New Features and a Request to Test Drive It
An Overview of Its New Features and a Request to Test Drive It
The patch for an improved aggregator for Drupal 7 is now available on Drupal.org #236237. This code is result of Aron Novak's Google Summer of Code project and it is available as a Drupal project with regular patches against Drupal HEAD #236237. The patch has been out for a couple of weeks, so it's high time to talk about what improvements it aims to bring to Drupal core.
Before I dive into the details though, I'd like to point out that several people requested to break the patch into smaller pieces as it is rather big and touches on more than one functionality of the aggregator. We yet have to work on this, however I do think that there is a value in presenting the proposed improvements as a whole. So here we go.
There are four major differences in comparison to the existing aggregator:
- Extensible architecture - allows external modules to add or replace functionality
- Per feed content type configuration of aggregator
- Replaces aggregator's XML parser with a SimpleXML based parser
- Replaces aggregator's category system with taxonomy
1. Extensible architecture
This change is the widest reaching of all. At its core, there are the concepts of parsers and processors for aggregator. Parsers download and parse feeds, normalize feed data and expose it to other parts of the application. Processors grab feed data and act on it. For example they create database records for feed items.
In order to define a parser or a processor, one of two hooks need to be implemented:
- hook_parse() for defining a parser
- hook_process() for defining a processor
According to the parser/processor architecture, the new structure of aggregator is as follows:
- aggregator module - implements API and standard download routines
- syndication_parser module - standard RSS/Atom/RDF parser module that is supposed to ship with core. Can be used independently from aggregator.
- aggregator.light.inc (part of aggregator module) - this implements a processor that stores feed items as lightweight database records just as the current aggregator does
The implementation of parsers and processors can be seen in syndication_parser module and in aggregator.light.inc. There is also a feed-items-as-nodes implementation in the project version of aggregator for Drupal 7. To my knowledge, the parser/processor architecture was first introduced in Drupal by Ted Serbinski with SimpleFeed, and it also exists in FeedAPI.
Current discussion points around the extensible API are:
Setting Up a Two-Way SMS Gateway with Gnokii and Drupal
Gnokii Sends and Receives SMS Text Messages Using USB or Bluetooth
Gnokii Sends and Receives SMS Text Messages Using USB or Bluetooth
In addition to all of the work being done on the SMS Framework, we have also started researching how to quickly create our own two-way SMS gateway for sending and receiving SMS messages. It is a proof of concept based on needs we are hearing from development agencies. Our solution is based around gnokii, an open source project that can be used to control the various functions of any mobile phone it supports. gnokii sends and receives SMS text messages over a USB or Bluetooth connection with the phone.
In our setup we’re using a Nokia 6102i mobile phone, gnokii 0.6.8 (installed using Macports) and a MacBook Pro with Bluetooth.
A daemon, written in Python, manages the process of sending and receiving messages and a Drupal module acts as the end point on the Drupal side. The daemon periodically checks the phone for incoming messages and the server for outgoing messages. If a message is found it is processed and passed to the other side.
An outgoing message that originated from a Drupal module will be stored in a queue temporarily. The daemon checks the queue using an HTTP request. When it finds the queued message it connects the phone, sends the message, and clears the item from the queue. Incoming messages are handled in a similar fashion. When a message is first received it is queued on the mobile phone temporarily. When daemon finds the message waiting on the phone, it passes it to the server using an HTTP request and deletes the entry from the phone.
We are making the daemon open source so check out the code in the Drupal CVS repository and let me know if you want to talk about this.

