A few weeks ago we had the fourth annual RhuBarBeQue. It was cold and rainy like last year, but we still had some great times and some fantastic rhubarb dishes.
June 2009 is Geo June, which is a campaign to organized by Advantage Labs to make a concentrated effort to stabilize the Geo Module and push towards Drupal as a GeoCMS.
Geo is mainly a storage layer to hold geospatial data. What does that mean? Well, we all know about points such as latitude and longitude, but Geo helps to store other data such as lines and polygons.
Geo standardizes how all this data is stored, which is extremely helpful for modules, such as Location to store data and have the heavy lifting done for it, and makes it easy for modules such as Gmap, NIceMap, and Mapstraction to easily retrieve and display that data in lots of fun ways. Geo also provides a database abstraction layer to work with both PostGIS and MySQL Spatial.
Still not convinced of it's awesomeness, well then think Mashups! Though I am not a fan of the term, Map Mashups are all the rage and for good reason (data visualization is a great way to communicate large sets of data). By standardizing Drupal's GIS storage, it will be exponentially easier to integrate (i.e. mashup) data from your site with all those exciting external sources of data. Don't think you can collect geospatial data? Think again, more interweb explorers are becoming a lot more spatially aware and want their data represented in the context of our world. And even with lots of new open data, there are still lots of reasons to store that spatial data directly on your site.
There are many other use cases at this wiki page (feel free to add).
If you are interested in getting involved, go here. Some of the events going on or ways to participate:
Another goal of Geo June is for the OpenLayers Drupal Module to release a 1.0 (though I would be happy with a beta, personally). We have been really busy developing this module. It's fairly stable at the moment, but needs lots of cleaning up. We welcome testing and reporting bugs.
Drupal has always been good at being current with new technologies and this is an opportunity to continue that tradition. Geo is the building block for realizing Drupal as a GeoCMS, meaning that Drupal can consume, produce, collect, aggregate, display, cuddle, and mash geospatial data in a user-friendly (and developer-friendly) way. I personally don't know of anything that can currently be compared as a GeoCMS, and even with a stable Geo, we still have a long way to go, but I would love to see Drupal be the first GeoCMS.
On Saturday 2009 June 20, the Twin Cities Documentation Sprint (that's the twin cities of Minneapolis and Saint Paul in Minnesota, USA) will happen from 10AM through 5PM CST being held at Advantage Labs with sponsorships from fivefivefour and Gorton Studios. This event was crowd-sourced at one of our meeting.
We are still figuring out what areas we can focus on, but we don't actually need a specific agenda. If you have some documentation requests, please leave a comment. There will also be some members in the #drupal-docs IRC channel as well.
I use Dreamhost for some of my personal sites and for some friends. Dreamhost's basic package is nothing too powerful, but I like them; they are cheap, responsive, responsible, green, and funny. I also love some Drush. But for the life of me, the newer versions of Drush were throwing weird errors, mostly involving syntax. But when I went into the code, I could not find any syntax errors. Some of the errors suggested I was using PHP4, but I was like "No, I am definitely using PHP5 with Dreamhost."
Apparently, I was wrong! Looking through the issue queue of Drush today, I came across this comment which explains how to manually use PHP5 for the Drush alias, and it occured to me that my host could be doing that. Searching the interwebs a little, this was the best documentation on Dreamhost's setup that I could find. Apparently, Dreamhost uses PHP4 for the command line by default.
So, I changed by alias definition in my .bash_profile file to:
And voila! Drush is working!!! Thanks to ericrdb and the wonderful developers of Drush.
In the Drupal project page form there is a Project Resources section which includes the ability to add links to, you guessed it, project resources, things like Homepage, Documentation, Screenshots, and a Demo Site.
I only have a few modules that I have contributed to Drupal, and even the ones that I have contributed do not get much foot traffic. Still, I strive to be a good module contributor and maintainer, by doing things like writing good documenting in and outside the code. I also like to have links for all the Project Resources. This is not always possible. Often people (myself included) just link the Documentation to the current README.txt file in the CVS repository. I have started just linking the Changelog category to the CVS messages for the module.
I have always wanted to be able to have an actual place to demo my modules without linking to this specific site. But I never wanted to spend the time both initially and ongoing to create a demo site for each module. It's a fair amount of work, and there is always the issue of security, and concerns of users creating offensive content. So, I never did... until now!
I was asked to do a presentation on coding in Drupal for our local Drupal user group. "Coding" is a pretty general topic, and the audience at our user group is pretty varied. So, I was not sure what specifically I should present that would encompass "coding". As the time came along and I had to make a decision, I looked to the module that I currently spend most of my free time developing: OpenLayers.
OpenLayers is a free, open-source Javascript library that provides an easy interface to bring together any sort of map tiles, markers, features, and other GIS goodness. OpenLayers was initially developed by MetaCarta, now a project of the Open Source Geospatial Foundation. Think Google Maps but open-source and more accepting of other worldly GID data. The OpenLayers has many examples and gallery of sites.
Drupal is a great content management system and development framework. OpenLayers fits well into this because it basically is a really great visualization tool for content (the most obvious visualization being maps).
Last night the Twin Cities Drupal User Group had its first, of hopefully many, Drupal Happy Hours. I think it was a big success, and I personally had lots of fun. We thought about what kind of projects we could do as a Drupal group, Advantage Labs raffled off training, drank lots of good Surly beer, had heated discussions about the feasibility of contributing back to Drupal within the non-profit sector, and for some of us, went into the late hours of the night drinking and talking of Drupal. It was like DCDC all over again!
Is there really a need to answer this question? Not really. But, in wanting to talk about our Drupal community and the larger Drupal community, I would like to explain why I organized this. We already do have a regular meeting (it's the fourth Wednesday of every month at 7PM at Advantage Labs, if you're in the neighborhood). I had two main reasons for organizing this event.
The first being that our regular meetings are more formal. We usually do a presentation style approach where there is one main presenter and then maybe some smaller presentations or talks. It's great and has lots of value, but the meetings are not always that interactive, and are the "presenter and audience" sort of thing. I learn lots of great things, but having just been at DCDC and seeing how much I learned outside the regular conference hours (i.e. drinking), I thought it would be a good idea to bring that informal approach to our fair cities.
Secondly, there are many great Drupalers here in the Twin Cities, that don't make it to the regular meetings. Hell, I don't always make it. But, I think changing the context, time, and place, opens up the local Drupal discussion, and allows for people that otherwise can't make it (for whatever reason) to participate more.
My first objective was just to get people together and talk (and optionally drink) without any kind of schedule or guidelines (no laptops were opened). But, my second objective was to have a short conversation about ideas for a TCDUG Drupal community project. Meaning that as a group, we decide on a discreet project that we can do in a reasonable amount of time, that helps out the Drupal community as a whole.
We came up with some awesome ideas. The full dynamic list is here, but I will put the initial list below. From the initial discussions, it looks like a documentation sprint is in the lead (I'm sure add1sun will be happy about that).
Last week, I ended up at the Twin Cities (Minneapolis and Saint Paul, Minnesota, USA twin cities) MapServer User Group and Twin Cities Open Source Geo Chapter. After Googling for a little bit, I did not find any good examples, but from what I understand GIS and Minnesota have a rich history. Anyway, the meeting was great. Reid Priedhorsky, a computer science graduate student at the University of Minnesota, came by to give a presentation on Cyclopath, for which he is a project manager.
Well, a wiki, in the computer world is usually a web application that can be easily edited by a large audience. It usually means that the users of the site, have control over what content is on the site. Wikipedia is the largest and most successful example.
The term geowiki is a fairly new concept; in fact it was new to me, just until last week. But the idea is pretty straightforward; it brings together the idea of a wiki and applies it to a map (or other GIS). This means that a map, more specifically, it's features becomes easily editable to a large audience. For instance, you can add a new street, or note a really nice view.
The most widely known and used geowiki may be Open Street Map,
Cyclopath is a geowiki geared towards bicycling in the Twin Cities area, and is being built by GroupLens Research, a research group at the University of Minnesota. It allows anyone to edit the features on a map of the Twin Cities. Yes, anyone!
This past week, drupal.org experienced some down time; which is normal. The infrastructure team does an amazing job keeping things going as smoothly as possible, given the immensely growing community of Drupal.
But, of course, I needed to reference some functions and hooks at api.drupal.org, the community's resource for code documentation. Fortunately, there are a few places to go that have implemented the fantastic API module to help supplement api.drupal.org or help document their own modules.
This API module basically scans a directory recursively and reads the Drupal Doxygen documentation that is available and creates an easy-to-use interface to browse it all.
The API module would not be possible without in-depth, inline documentation in the Drupal code base. (We won't get into the importance of non-inline documentation.) As a programmer, I love some documentation, but I also understand how much of an after thought it usually is for most of. So, even if you think no one will read your code, think again; there's a good chance it will make it's way onto someone else's screen. And if you contribute modules, a good module has good documentation within the code.
Well, you should always document your code correctly. But, you can also set up an API site locally and for those other folks on the interwebs.
The first step was to install the API module locally so that if the Internet was not even a possibility, then I could still have an easy interface to reference the Drupal code base.
The second step was to create a public site, in my case api.zzolo.org, to help others have this information when needed. I also put a copy of HEAD up there, started to make a section for contributed modules for Drupal 6, and installed the almost-perfect-for-api-sites-theme, Pixture. Freestyle Systems did a nice job of setting up an API site with contributed module references, and is a good example. I attempted to mimic their ability to browse contributed modules; but mine is not as great as theirs.
Actions and Triggers are awesome, and they made it into core with Drupal 6. The combination of the modules creates an event and responder system for Drupal. On a basic level, Triggers are like events in (for instance, creating a comment). Actions are then the responding procedure that Drupal takes based on that Trigger.
Creating actions is explained well in this article, Writing an Action for Drupal 6, and if you have the Pro Drupal Development: 2nd Edition book, there is a good chapter about creating actions.
Triggers, on the other hand, have little documentation on how to create new ones. There are many built in triggers that provide a lot of events to attach actions to. But, when creating any critical modules, it is important to be able to set events so that logging and notifying can happen at the right points.
So, here is some example code for creating your own trigger.
This hook is not necessary to implement. But as I think it is good practice to implement specific permissions, I am including it. There is also a bug/problem with the trigger module, which restricts access control to triggers based on module name. Which I volunteered to patch and have not followed through with; my apologies.