Software Development

warning: Creating default object from empty value in /home/campusac/public_html/blog/modules/taxonomy/taxonomy.module on line 1387.

Distributed Databases

For a long time I've been interested in the idea of a distributed database. While it would be hard to do, one way that would make it easier is to for the local sites that were part of the decentralized database network to store the data in two parts. The first part would be data that came from that location and could be edited. The second part would be global data that would be updated based on a regular time schedule. Thus things could only be edited/deleted in one spot. Updating the local read-only database would still be messy.

Activism Network 3.2 Beta Release

I'm proud to release the latest version of Activism Network.

The new version is Beta because I did a large number of changes to the structure of the code that might have unforseen consequences. So I suspect more bugs than version 3.1.7 (which was relatively very stable and low on bugs).

The main goal of the release is to make it easier for other developers (including myself) to modify the code and to customize it. For instance, I turned the javascript navigational menu into a global array - to make it possible for you to change it all in once place, and without understanding the rest of the code.

Appeal for Help – Creating an Online Network Drupal Module

Statement of Purpose
General: Online network software that includes people, groups, events, resources (a.k.a. files), schools – and several less useful things (email lists, campaigns). Users submit information and then control it. Features include: geocoding (both US and international), mapping, total syndication using web-services (the software is separated into server and client parts), international language support, interconnections (people can be connected to groups, that can be connected to issues, that can be connected to resources and so on), and more.

Specific: Targets the needs of activists (including people new to activism, part-time activists, and full-time organizers). Particularly useful for grassroots organizations with limited resources.

Developing a Drupal Activism Network / Online Network module

I'm getting up to speed on Drupal. I read the only published book on it, which is a good introduction to the subject but is entirely lacking on the advanced stuff (there is a more advanced book coming out in mid-2007). I've read through most of the documentation in the Drupal online handbook - which has been more insightful, though parts of it are in need of editing. I'm impressed at the list of modules and thus functionality that is possible with Drupal.

While I've been following Drupal/CivicSpace for about two years, this new found interest is because I'm planning to do some Drupal consulting work to pay the bills and because I hope to convert the Campus Activism / Activism Network software into a Drupal module to make it more appealing for organizations to use as part of their website.

Monitoring Page Load Times

I've been having an on-going problem for the past several months where the site page load times (that use web services) are occasionally 12 seconds, whereas they should only be 2-3 seconds.

For instance, you will see this on a Display Event page, but not on the homepage because that is cached.

The problem is sporadic. So I now run a cron job once an hour to load nine pages using the CURL extension of PHP. Then I can file better complaints to my webhost support. I've been complaining/filing tickets for a long time on this, but they have been either blaming me or not seeing the problem.

Activism Network Development Cycle

I'm dramatically increasing the number of releases for the Activism Network project. I'm now averaging one release every two weeks.

US election watch 2006

Ok, the US Senate Race for Virginia:

According to CNN (8:50pm or so)
Allen 672,282 50%
Webb 661,955 49%
Parker 14,819 1%

According to VA Election Boards (8:50pm)
Allen Republican 679,127 50.33%
Webb Democratic 653,942 48.46%
Parker Independent Green 14,957 1.11%
Write Ins 1,303 0.10%

How can Allen have 7000 more votes at the VA Election board results (that have tended to be more updated than the CNN ones) and Webb have 8000 less votes???

I figure CNN would be getting the results after the VA election board, in which case you wouldn't expect that a canidate's vote count would drop...

Optimizing Website Page Load Time

I'm working on optimizing the page load time for this website, particularly for the homepage, and am achieving great things!

Converting Dynamic Pages to Static
If this is possible, I highly recommend doing it. I converted 20 pages into static html, which is generated once per day (I kept the original copies of the pages in PHP so that people who install this software can automatically customize them -- though on second thought, that wasn't completely necessary).

Conditional Use of Caching
While I cannot always use a cached version of the homepage, since someone migth log-in,

Networking Software - General Use

Check out this example of general usage of this software. Using Campus Activism/Activism Network for non-activist purposes -- A Soccer Network.

It's based on the latest software build (which isn't yet publicly released), and is not a finished product.

It uses .po files to translate the language into "non-activist" english. For instance, "issue" is replaced with "tag".

You also need to create your own database to store the information and several other things which I'm going to make e

AJAX and Online Networking

I think AJAX will be widely adopted by websites and lead to fundamental changes. Basically it allows you to eliminate the need for switching from one page to another, and thus reduces the pauses due to page refreshing/reloading.

Instead of loading a page, your browser requests data from the server and uses it to react to the user requests.

Google Maps, notably its scrolling features, is the best example of this.

I've been wondering what would this look like for When displaying a list of results (from browsing or searching) you could fetch 200 rows - instead of just 20, so if the user clicked on the next page (or any of the next 10 pages) it would display the results without a significant pause. You could let the client sort things in alphabetic and reverse alphabetic order.

Syndicate content