August 13, 2008

37 Signals Live : Episode 2

Jason Fried and David Heinemeier Hansson in the kitchen at 37 Signals offices.

Jason Fried and David Heinemeier Hansson broadcast to 883 people from out of the kitchen at the 37 Signals offices. Audio is coming shortly. Please note that the audio is a bit choppy (due to broadcasting issues and bandwidth issues with Verizon in South Africa). I've normalised the audio as well as tried to remove as much noise as possible.

Feel free to download a copy of the audio file of the 37 Signals Live : Episode 2. The audio is being served from BingoDisk.

January 5, 2007

Opening up Pandora's Box

I've started opening up Pandora's Box by releasing more code under liberal Open Source licenses.

More code to be released in due course.


Quick update py-clickatell was mentioned before when an earlier revision was made available.

Continue reading "Opening up Pandora's Box" »

July 29, 2005

Apache and OpenSSL Issues

Occassionally apache with mod_ssl just breaks after doing an operating system upgrade or even just upgrading openssl. Doing a backtrace against the httpd.core file (gdb httpd httpd.core) I got a backtrace which revealed to me the following:

(gdb) bt
#0 0x00000018 in ?? ()
#1 0x28445162 in RSA_new_method () from /lib/
#2 0x28444eea in RSA_new () from /lib/
#3 0x2845e7e8 in RSAPrivateKey_asn1_meth () from /lib/
#4 0x2846a8a6 in ASN1_item_ex_new () from /lib/
#5 0x2846a6c3 in ASN1_item_ex_new () from /lib/
#6 0x2846621c in ASN1_item_ex_d2i () from /lib/
#7 0x28465c85 in ASN1_item_d2i () from /lib/
#8 0x2845e89f in d2i_RSAPublicKey () from /lib/
#9 0x28459b2c in d2i_PublicKey () from /lib/
#10 0x284585b5 in X509_PUBKEY_get () from /lib/
#11 0x28457615 in X509_get_pubkey () from /lib/
#12 0x28375749 in ssl_util_algotypeof () from /usr/local/libexec/apache/
#13 0x2836d226 in ssl_pphrase_Handle () from /usr/local/libexec/apache/
#14 0x28366f3f in ssl_init_Module () from /usr/local/libexec/apache/
#15 0x08057092 in ap_init_modules ()
#16 0x0805fd83 in main ()

Basically what the backtrace gives us back informs us that there is a problem with OpenSSL. Normally the way to resolve this is to recompile apache+mod_ssl as well as php's openssl extension using portupgrade and force it to do the upgrade, and magically next time you run "apachectl startssl" it works.

June 22, 2005


Been looking at pgmemcache which was written by Sean Chittenden of the FreeBSD project.

I'm in the process of submitting a patch for the port for pgmemcache to the FreeBSD project for it to be included in the ports tree. The status of the ports tree addition are on the pgmemcached pr page.

June 14, 2005

Anyone using SourcePuller under FreeBSD?

I've downloaded SourcePuller to see if it runs under FreeBSD so that I can submit a port for SourcePuller to the FreeBSD project for others who are interested in the software. It's been a while since I've hacked any decent c code so the question is:

Compiling libsccs/open.c
In file included from libsccs/libsccs.h:346,
                 from libsccs/open.c:32:
libsccs/proto.h:162: error: syntax error before "comparison_fn_t"
*** Error code 1

Do you see anything weird in this snipbit of code?

void string_list_sort(const char **list);
const void *find_in_sorted_list(const void *el, const void *list,
                                unsigned count, size_t elsize,
                                comparison_fn_t cmp);
int interpret_timezone(const char *s);

May 6, 2005

cvs to subversion migrations

A little known secret has been found for downloading version control databases (cvs, subversion, darcs) etc. to syncronise a remote repository locally for working remotely.

[WWW] Lele wrote a Python tool able to keep in sync various kinds of repository: it works for various revision control systems, so I'm actually using it to collect under darcs various pieces of software that compose a [WWW] Plone instance, digesting patches coming from three different VC, CVS, Subversion, Darcs and (still partially) Monotone and Codeville, preserving history.

April 29, 2005

Code readability

Jim Winstead, Jr. brings up a point which deals with the subject of bad code readability which Neil has brought up previously.

It's the simple things like taking the time to make your programming easier. For example Jim shows us the following example:

$query = "SELECT id,name,url,rss,md5sum,method,updated AS up,"
         . "       UNIX_TIMESTAMP(lastchecked) AS lastchecked,"
         . "       UNIX_TIMESTAMP(updated) AS updated"
         . "  FROM blogs "
         . " WHERE updated > NOW() - INTERVAL 10 MINUTE AND method = 0"
         . " ORDER BY up DESC"
         . " LIMIT 10";

Which he goes onto mention that he is now doing it like:

$query= "SELECT id,name,url,rss,md5sum,method,updated AS up,
                  UNIX_TIMESTAMP(lastchecked) AS lastchecked,
                  UNIX_TIMESTAMP(updated) AS updated
             FROM blogs
            WHERE updated > NOW() - INTERVAL 10 MINUTE AND method = 0
            ORDER BY up DESC
            LIMIT 10

Which makes it easier to copy and paste into the mysql command line utility. I'm known for having extremely long lines of code for SQL queries when I was programming in PHP back in the day. Also in certain ways it can make it worse when you have long long lines which you are trying to debug and are unable to figure out quickly what your 900+ character SQL query is doing!

A line like:
$categories = $dbh->getall ("SELECT directory_company_category_map.company_id, AS category_id, AS sub_category_id, directory_categories.category, directory_sub_categories.sub_category_name FROM directory_categories LEFT JOIN directory_sub_categories ON LEFT JOIN directory_company_category_map ON LEFT JOIN directory_companies ON WHERE AND AND AND directory_company_category_map.company_id='" . $listings[$i]['id'] . "'");

is quite a bit to process ;) It looks way better like:

= $dbh->getall ("
    directory_company_category_map.company_id, AS category_id, AS sub_category_id,
FROM directory_categories
LEFT JOIN directory_sub_categories
LEFT JOIN directory_company_category_map
LEFT JOIN directory_companies
. $listings[$i]['id'] . "'

April 11, 2005

Gallery 2 Beta 1 is out

I've done the ole 'cvs up -d -P' on my gallery site and then ran through the upgrade scripts. Only the user albums seems to be borked (again) and hence it is still not working. When I one day have a chance to look at it, I might consider fixing it.

March 25, 2005

Why Switch?

The Scobleizer found the following which I picked up via John: has decided to switch from ASP.NET to PHP. Brian Bailey blogs about their switch:

    As we began evaluating our options, one of our developers moved to another department so we began to search for his replacement. As I evaluated the resumes we were receiving, I began to have the sense that we were continuing down the wrong path [in using .NET]. Here are the top ten factors that influenced the decision to change direction.

Jason Fried once upon a time said:

"It's all a matter of trust. If you don't trust your developer to choose the right environment, then how can you trust him to build the best application?"

December 24, 2004

Movable Type Comment And Trackback Closing Script (PHP)

I've hacked together a script which closes commenting and allowing trackback pings to blog entries that are older than 15 days. You can view it over here.

This is a early christmas present. It was written using PHP and PEAR DB (which should be in your include_path).

I was trying to get Kasia's perl based comment closing script to work but it did not and I was not in the mood for perl a few days ago and I hacked up the following php script.

It's been done by others before (Jeremy has it on his blog, mine is better cause it's longer!) but in the spirit of "not invented here" I wrote my own script which closes MT entries to comments and pings.

The idea is to cron it and forget about it and it has worked in that capacity well enough for the last few weeks.. so if anyone wants to use it (or they just like to amuse themselves by reading perl written by a Java programmer) the code is available here.

Remember you need to change the database connection details and you are good to do.

Horde Installer

So I started fiddling on my Horde installer for setting up a webbased webmail solution using the Horde Application Framework and Horde IMP. I got round to automating downloading of the distfiles if they do not exist on the local machine.

===> Extracting for Horde 3.0+Imp 4.0+Ingo 1.0+Kronolith 2.0+Mnemo 2.0+Nag 2.0+Turba 2.0
>> Checksum OK for horde-3.0.tar.gz.
>> Downloading
>> Checksum OK for imp-h3-4.0.tar.gz.
>> Checksum OK for ingo-h3-1.0.tar.gz.
>> Checksum OK for kronolith-h3-2.0.tar.gz.
>> Downloading

Next set is to start working on the webbased installer so that users can run the script via their webbrowser and then setup and configure various Horde modules and choose which modules that they would like to install.

I'm hoping to have a working solution soon to submit to the horde project so that other people can start hacking on this as well so that we can have a decent horde installer which can be used for multiple tasks as well as choosing your nearest Horde mirror for downloading the tarballs from prior to downloading the modules. It would also need to explain how to securely setup the software to download and have nice screens with help embeded in them for users to follow what to do.

December 10, 2004

New OpenCD 2.0 Available

The OpenCD version 2.0 is out. There are screenshots
available online to see what the cd browser looks like seeing that is based on Gecko technology.

They have also added Firefox, Thunderbird, as well as updated versions of old favourites like Mozilla, OpenOffice, AbiWord, and Gimp.

Also there no chance of going to jail for distributing copies of the software on this cd as they are Open Source!

November 24, 2004

cvs to subversion migration

So I'm busy migrating CVS Repositories from SourceForge over to a locally self-hosted solution. One of my pet irritations with cvs2svn is that it insists on thinking each module is part of the same "project". Highly annoying.

November 22, 2004

Maybe you should be using perlbal?

Starts making you wonder why they aren't using some software such as perlbal from Danga Interactive? Or doing LSNAT on a FreeBSD box?

Site notice On Saturday, The Register suspended service by third party ad serving supplier, Falk, following security issues detailed here.

Falk fixed the problem within six hours of notification. Here is its summary of what went wrong:

Saturday, 20th November 2004 Falk eSolutions clients using AdSolution Global experienced problems with banner delivery between 6.10pm and 12.30pm GMT. This started on Saturday morning with a hacker attack on one of our load balancers. This attack made use of a weak point on this specific type of load balancer. The function of a load balancer is to evenly distribute requests to the multiple servers behind it. The system concerned was only used to handle a specific request type to our ad server and has now been investigated.

The use of a weak point in one of our load balancers led to user requests not being passed to the ad servers. Instead the user requests were answered with a 302 redirect to a compromised website. This happened with approximately every 30th request. Users visiting websites that carry banner advertising delivered by our system were periodically delivered a file from the compromised site. This file tries to execute the IE-Exploit function on the users' computer.

November 2, 2004

New releases from the Horde Stable

Heard via the grapevine that the Horde Project has released beta major versions of certain software applications which they maintain. Some cool news none the less considering I use Chora and IMP and various other applications for personal usage.

Whatever this day might bring to the world, there are some really good news: the Horde Project released beta major versions of their VIPs (very important programs) today. This is very exciting because we will try to release RCs (release candidates) once per week until the applications are stable enough to meet our requirements of production releases. Read further for the most important changes since the ALPHA versions.

October 11, 2004

Gallery version 2

I've just checkout of CVS the latest CVS version of gallery2 and I'm quite impressed by the new setup utility. Not only does the interface look clean and straight forward it contains a useful see where in the installation progress we are, it has a status indicator as to how far you are in the installation progress.

I have an issue with my database driven session handler which causes issues with Gallery when embedding gallery into my personal website which I'm looking into fixing.

It would be nice if other open source applications can build on this installation process to make their applications easier to install.

September 28, 2004

Evolution 2.0.0 Released

Evolution 2.0.0 has been released.

Some of the most important features is that is has a builtin Junk Filter with support for SpamAssassin, web calenders, and NNTP support (usenet). There are screenshots available as well.

September 23, 2004

Blocking downloads with Squid

In the school environment bandwidth is limited due to the cost of bandwidth, which means that bandwidth should not be allowed to be abused by the students, but unfortunately students do not follow the guidelines and acceptable usage policies which they have signed and one needs to implement filters and block their access to content which they've agreed not to download or view on schools computer networks.

Squid provides various methods of blocking content. For example one can block using url_regex which is quite a nice method for blocking downloading of mp3 files or executable files for that matter.

One can easily shove in your blocklist something like:

# executable files
# archives

September 22, 2004

SpamAssassin 3.0's out

SpamAssassinSpamAssassin 3.0 is out. Time to perform a scheduled upgrade in the next couple of days.

SpamAssassin has received a logo makeover in time for the 3.0 release, which looks better than the little men in ninja outfits. Christian Rauh was the winner of the SpamAssassin logo contest, who created, designed, and illustrated the new Apache SpamAssassin logo.

Slashdot follows up with more information about SpamAssassin and discussions about new features included in SpamAssassin.

Brad got slashdotted

Brad has been slashdotted.

I've been Slashdotted. Except LiveJournal does about 10x the traffic of Slashdot, so it doesn't really make a dent.

Look, I'm famous:

August 29, 2004

GmailFS a reality

The Internet FS is moving towards a reality with the Gmail FS which works under Linux. I would like to see a FreeBSD version of this.

I'm noticing that Jeremy seems to have more interesting tipbits on his Internet File System entries becoming reality.

August 17, 2004

#Cape_Town website

I'm busy sorting out the conversion of the various scripts on #cape_town website over from php3 to php4.

Also there is a major code cleanup over there.

July 17, 2004

Upgrading Chora using patch

One of the things which I like about doing open source coding is that we have the ability to distribute patches created using diff and then apply the patches to our source trees, hence we tend to forget about the times where we used to distribute our pascal or even worse basic code by zipping the entire source directory prior to sending the code off.

Lets look a little at the example of where I upgraded Horde Chora to version 1.2.2 from Chora version 1.2.1.

It was really easy to use the patch instead of downloading the entire tarball of Chora and then having to extract the files, rename all the files in the config directory, etc. etc.

Continue reading "Upgrading Chora using patch" »

July 14, 2004

SMS::Clickatell 0.4 tarball re-rolled

After the saga with Heztner, I've re-rolled the SMS::Clicaktell 0.4 tarball again and it's available online for downloading. Apologies for any inconvienced caused by the tarballs not being available.

Continue reading "SMS::Clickatell 0.4 tarball re-rolled" »

June 18, 2004

pdmenu tarball mirrors

I have setup two mirrors for the pdmenu software to ensure that release distfiles are available for FreeBSD ports users even after they are removed from the debian mirrors.

May 21, 2004

Clickatell SMS Class

I keep getting queries about one can download the SMS::Clickatell PEAR class which I wrote.

Continue reading "Clickatell SMS Class" »

April 27, 2004

MySQL Authenticator for Squid

Sometimes I ask myself, howcome does software like squid misbehave and not work according to their documentation. Turns that using prinft("OK\n"); looked like it was returning the correct stuff when infact I was supposed to be using something like the following else squid looks like it hangs e.g. fprintf(stdout, "OK\n"); is the correct way of doing things.

Interesting none the less seeing that I hardly ever have the need to code anything in c seeing that I'm mostly using PHP for the bulk of my coding.

Continue reading "MySQL Authenticator for Squid" »

March 6, 2004

Firefox Rules and theres Zend Optimizer 2.5.1

Managed to download the firefox 0.8 tarball last night and replaced the old segv'ing firebird with firefox. Seems like my segv'ing problems are gone and I've updated my portupgrade configuration file accordingly to not mess with my webbrowser or my mail client (evolution).

Also wrote a little script for downloading the correct version of Zend Optimizer from the Zend Technologies website, seeing that I'm busy upgrading Zend Optimizer on various boxes.

February 14, 2004

Test driving Mozilla Firefox

firefox_1.jpgDownloaded Mozilla Firefox a couple of minutes ago and I'm busy giving a test drive currently. Looks nice, there are a couple of issues I had with Firebird which seems to have been resolved.

Mozilla Firefox even has a nicer logo than Mozilla Firebird.

Are there any other people out there who are using an Open Source webbrowser over M$'s Internet Exploder?