Visit our main site CampusActivism.org
Software Development
Refactoring
Submitted by akreider on Thu, 01/05/2006 - 01:53.So over Christmas I finished reading Code Complete 2 and Refactoring. Both are good books and very highly recommended for anyone doing software development. Code Complete 2 is the more accessible of the two. It's good because it doesn't follow any specific school of software development. So instead of giving you hype about "extreme programming" it provides you with best practices that are based on surveys and studies done by researchers.
I also ordered most of the books recommended at the end of Code Complete 2 in the reading list for developer's. So that's more than 12 books I hope to read this year.
Categories or Tags?
Submitted by akreider on Wed, 12/21/2005 - 19:08.From the beginning, I figured that using a limited number of categories was the best way to organize the listings on CampusActivism.org.
However recently, there has been a growing movement towards tagging as an alternative method of categorization.
Flickr lets users upload images and give them any tag they want. Livejournal lets you give any name you want for your interests. del.icio.us lets you choose any tag you want for your website bookmarks (which are shared with other users). Similarly, Google, the best search engine, doesn't use categories (whereas its poorer counterpart, Yahoo, does).
Optimizing MySQL - strings vs integers
Submitted by akreider on Wed, 09/21/2005 - 19:42.I've been logging my slow MySQL queries, with "slow" being defined rather harshly as anything that takes more than 0.01 seconds. However, when you are only dealing with 1000-30,000 records and simple selects, they shouldn't take much longer than that.
One thing I've noticed is a MAJOR difference between how MySQL treats integers versus strings in the WHERE clause.
For instance, if I do
SELECT *
FROM zipcodes
WHERE Zip=19104
This works fast if Zip is stored as an integer. If you want to store Zip as a string (to support codes like 00213, or because you are using a 7 character field to also support Canada which uses a mix of letters and numbers), then you can run into problems.
International Geocoding
Submitted by akreider on Mon, 09/05/2005 - 15:01.I created an international geocoder using the GNS data. It converts a city, state (optional), and country into a longitude and latitude.
It has about a 90% success rate.
Taking Friendster and MySpace Down - Building a Noncommercial Alternative
Submitted by akreider on Sat, 08/27/2005 - 21:29.MySpace was recently purchased as part of a $550 million deal. I think part of its value lies in trying to build profiles of people so that corporations can sell them products and target online advertizing.
We need a noncommercial/free/open social network that won't sell out to corporations and that will end the need of having to maintain a profile on seperate commercial networks so as to stay in touch with friends.
I believe I have a good idea to make it work. The technical aspects of creating a friendster or myspace is relatively easy. A good programmer or team could crank it out in a year or so. The trick is publicizing it.
Find Radio Stations
Submitted by akreider on Fri, 07/29/2005 - 16:06.I'm creating a website to Find Radio Stations using the FCC database and a Google Maps interface. Pretty basic stuff so far, except the innovative use of Google Maps to show where stations are located.
And, where Google has good satellite data, you can actually see the antenna towers!
Advocacy Developers Conference II - July 11-13, San Francisco
Submitted by akreider on Thu, 06/16/2005 - 22:45.I hope to attend and meet people. Yay networking!
Aspiration is pleased to host AdvocacyDev II. The second in a series of events that began with the first Advocacy Dev gathering in June 2004, Advocacy Dev II will convene organizers and activists using free and open
source (F/OSS) online advocacy tools, and developers and designers
building those tools.
Activism Network - Internationalization
Submitted by akreider on Sun, 05/29/2005 - 18:24.Currently the Activism Network software will only work well for users in Canada and the US (or other countries that are really really small).
The major limitation that is stopping its productive use in English-speaking countries is that I'd need national databases of zip/postal codes that would include a longitude and latitude.
For instance, I would love to expand this software to work in the UK, Ireland, Australia, New Zealand, and perhaps the Phillipines (note: the Phillipines has one of the highest rates of use, however it also might require bilingual support) - however I need to get postal code databases for these countries. Ideally I'd like to get free databases, but if they can be obtained for a small cost (<$100) then I might be willing to do it, especially if one or more activists in those countries expressed interest in using the software.
Activism Network - Another Progress Report
Submitted by akreider on Sun, 05/29/2005 - 17:04.I've decided that I need to stop "crying wolf" by trying to estimate when I will have a piece of software done because I have constantly missed my own deadlines by embarassing amounts. But on the other hand, I should practice creating deadlines so that in the future I will be able to make accurate predictions.
Here goes! I'm going to predict that I'll release an alpha client for the Activism Network by June 15. This is aimed at website developers who want to help me customize/improve/test it, and to generate excitement within the CivicSpace community. Then a beta/production worthy release will follow in a month or so (depends on whether I take a badly needed vacation, and whether I start working more on creating a board of directors, found an official organization, and fundraising.).
Relational Databases - How to Implement in PHP
Submitted by akreider on Mon, 04/11/2005 - 14:57.When I first started programming for CampusActivism.org I wasn't aware or able to find out how anyone had implemented the "relations" part of a database as a data structure.
So I came up with my own method. Basically I have a giant two dimensional array -- relations[object-1][object-2] which contains information on whether or not a relationship is possible.
(I also created an array that stored whether or not the person who controlled object-1 had persmission to add or delete relations to object-2 -- this was necessary because of my somewhat unique permissions system.)
Now the problem I'm running into is that there are often two relations permissible between two objects -- relationships that I need to treat differently. For instance, I have groups as an object and they can be related to another group because they are 1) a parent group in a network, or 2) a child group in a network.
