Fork me on GitHub

May Day 2007: Digg Users Revolt, Kevin Rose Spins

May Day is a traditional day of the people, a holiday celebrating movements that work for the betterment of the "lower classes". It was a strange coincidence that May Day 2007 coincided with the largest ever online anti-censorship protest against a news site with user-driven content., the target of the protest, is a website that promotes itself as a democratic news aggregator but has repeatedly been accused of censorship.

The protest was in response to a Digg user's account being deleted for posting the numbers 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 (which constitute a key that facilitates the decryption of HD DVD content).

Arrr... Drupal Install Profiles Be Disruptive

Tonight I attended a Vancouver Drupal meeting in which Bryght founder Boris Mann talked about Drupal install profiles (no, he wasn't dressed like a pirate at the time).

Install profiles are basically "recipes" for Drupal installations. They detail what modules should be enabled and how they, and the system, should be configured. Install profiles are necessary because Drupal has hundreds of modules. The Drupal culture's ideal is that a module should act as a flexible component: most useful when interacting with other modules. Because of this, Drupal's modules can be combined to create complex, varied web applications.

Free Geek Is Alive and Well in Vancouver

At the last Vancouver PHP Association meeting, Dave Repa from Vancouver Free Geek gave a presentation about the organization. Vancouver Free Geek seeks to create a branch of Free Geek, an organization dedicated to teaching people about socially and environmentally responsible computing.

Nearly all "recycled" e-waste gets processed in China and India. Repa showed slides detailing the recycling techniques, many of which are, ironically, harmful to the environment and the health of the workers.

Can Open Source Culture Challenge Offline Monopolies?

Unlike proprietary software, which often relies on a wide array of tricks to lock in users, open source software must have merit to survive. In the open source world it's survival of the fittest, not the fattest. Because of this, and the fact that software can be so easily duplicated, open source has been transforming the business of software development and making steady gains in all product sectors.

Unfortunately, the open source model hasn't yet been adopted to the retail world where the power of monopoly still prevails. While product diversity flourishes, vendor diversity shrinks. Independent retailers haven't yet found a way to asynchronously challenge the big boxes.

FXneoCache: Speed Up FX.php-Driven FileMaker Web Applications

I recently worked with Neo Code Software, Canada's largest FileMaker development and hosting company, to develop FXneoCache, an open-source tool that speeds up FileMaker-driven PHP web applications written using iViking's excellent FX.php.

FXneoCache extends FX.php, adding file or MySQL-based query caching.

Create Psychedlic Art and Animation From Math

I've never had the patience nor inclination to really get into math, but when there's software that provides some non-mathematical audio/video output to an equation I can't help but poke at it.

Mac OS X comes with a neat little application for doing just that. It's called "Grapher" and resides in the "Utilities" folder (inside "Applications").

Using Django's New Form Engine

The Django web framework's new form engine (not yet released, but available from the project's Subversion repository: see the Django installation page) eliminates much of the pain in creating and updating data submitted by users.

As an example I've written a Django app using a design pattern that is likely to be familiar to those coming from a PHP background.

This simple example allows the creation, updating, and deletion of contacts.

Project Setup

Start a project named 'myproject' and, within the project, an application named 'contacts'.

$ startproject myproject
$ cd myproject
$ python startapp contacts
$ mkdir html

Timing Drupal Module Loading

When tweaking a Drupal install module overhead is something to take into consideration. Below is a modifcation to the Drupal 4.7 drupal_load function (which exists in includes/ that puts module load time into a global array:

Four Exciting Django Developments

On day 2 of the Vancouver Django Jam I got a chance to meet the Django web framework's lead developer Adrian Holovaty and get the scoop on the latest developments in Django (including the generation of end-user interfaces to data!).

Revamped Form Engine

Django's biggest improvement (currently available only via Subversion) is the revamping of the form engine. While the previous form engine required tedious additions to templates (to deal with validation errors and the like), the new incarnation does it all for you, creating all form HTML and allowing form definitions to be generated from models. This is a big deal as it will greatly improve the speed of Django development.

Vancouver Django Jam

Yesterday afternoon, when saner souls were watching the SuperBowl, Paul Prescod and I presented introductions to the Django web framework at the kickoff of Vancouver's first public Django-centric event: Vancouver Django Jam. My presentation "Basic CRUD in Django" (which is designed to show neophytes the hard, but conceptually familiar, way of doing things) can be downloaded here as a PDF, here in Apple Keynote format, or here online.