Begin main content

NGO in a box []

Further to my previous blog entry about micro-finance and the IT community finding opportunities to assist the third world, I recently read about an initiative called NGO in a box

Its aim is to increase the accessibility of F/OSS to non-profits in developing and transition countries.

Open Source should be an ideal help to NGOs and small businesses in the third world, but a major stumbling block is that we depend so much on Internet access—much more than say Microsoft developers. It's hard to leverage the power of the CPAN if you don't have reliable internet access, and imagine downloading the latest Java JDK over a flakey 14.4 dial-up connection...

NGO in a box aims to address these sort of issues by packaging an agreed set of F/OSS tools in a kit that can be distributed and copied at will—the contents will remain fairly static (although version upgraded) so that the relevant technicans can work confidently in the environment across organisation of similar aims.

It contains Linux, firewalls, applications and documentation. It sounds simple, but I would imagine that simple practial projects are what is needed.

Time to put on our brainstorming hats to see what else

01:41 AM, 30 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Write Aqua Applications in Perl []

Don't let the wacky name or often flakey website fool you—CamelBones is a very serious piece of software.

In a nutshell, it allows you to interface Perl and Objective C libraries (in both directions).

What gets me excited is the ability to write fully fledged Aqua applications in Perl, using all the gui goodness of Xcode. You can effortlessly link buttons to perl methods in Apple's Interface Builder (CamelBones uses Perl OO constructs to do it's business in the developers space).

Immediate obvious uses are writing custom corporate database applications connecting to any perl supported backend database via native connectivity, SOAP etc. I could write a simple proof of concept application in under an hour!

In fact I wrote a simple XML-RPC based Aqua front end in AppleScript a few years ago—today I would do it in perl.

I looked at CamelBones a few years ago (from memory) and it wasn't really ready for prime time. With the current release being 0.2.3 it is clearly not promising to be complete, but with it's (new) threads support it seems plenty for my purposes.

Combining Perl with the Apple/NextStep libraries = Rapid development x 2 :)

01:43 PM, 27 Jul 2004 by Mark Aufflick Permalink | Comments (0)

The beauty of God's Creation []

I wondered how I would find a topic to follow up my last blog entry without seeming flippant.

As always, there is beauty in God's creation that is more than a match for our evil doings.

Tram Town pointed me to this archive of re-scanned photo's from the Apollo 11 flight and moon landing. My favourites so far are the "earth-rise" sequence. Truly breath taking.

I can't wait for space tourism to get underway!!

09:14 PM, 25 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Postgresql goodies

Two pieces of Postgresql software I have just become aware of:

  • Slony-I multithreaded replication engine - single master, multiple slave (but if the master fails, a slave can be promoted to a master)
  • pgpool connection pool server
  • I like postgres, and these two pieces of the puzzle will come in very handy.

03:00 AM, 23 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Ghosts of Rwanda

800,000 people were killed in 100 days.

Genocide is such an easily used word these days, but the slaughter in Rwanda equates to wiping out every person living in Tasmania almost twice over.

From the PBS Frontline show, this special website titled Ghosts of Rwanda is disturbing.

Thank's to Phil Baker for the pointer to one hero (of a very few) from that time—Carl Wilkins. There is a short New York Times Article (Saying No to Killers) and a great interview from the PBS show (Interview Carl Wilkins).

I'll post some more pointers and comments as I digest this wealth (or is it poverty) of information.

11:07 PM, 22 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Generating Ideas

I love the tagline on Philip Greenspun's Weblog:

an interesting idea every three months; a posting every day

The order in which it is presented is humorously self-deprecating, but the concept has a long and valid history.

Thomas Eddison, who generated over 1000 patents in his lifetime, had an "idea quota" of one minor invention every 10 days and a major invention every six months ( It seems to be common among the "great thinkers" over the centuries that they all generated bulk quanitites of ideas to come up with the few breakthroughs.

Mind Mapping sounds like a funky modern business buzzword, but it was used by Leonardo Davinci and Lord Tenyson (

I want to research more about how the great thinkers did there thinking—I will be sure to report back on my findings!

09:26 PM, 21 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Robert Mello has run an interesting report on the OpenACS code base in the cvs repository on using a program called statcvs.

These stats are well worth checking out for all OpenACS developers, and I will be running statcvs over all my projects now—just for fun of course!

Some interesting tidbits about the OpenACS code:

  • Total lines of code: 2,500,552
  • Total lines contributed by my cvs user: 326! ***
  • I have removed almost as many lines as I have added!
  • Code inherited from ArsDigita: hard to tell exactly, but looks like 400,000

    *** Note that there are a lot more lines of code written by me atributed to other cvs users before I had cvs commit rights - still a bit shameful though ;)

07:53 PM, 20 Jul 2004 by Mark Aufflick Permalink | Comments (0)

There is an international service that keeps tabs on the rate of change of the earth's rotation, which won't be news to most people.

What I found interesting is that the rate of change is so unpredictable that they can give us as little as two months notice of an impending leap second! They're usually the good kind though—you get an extra second sleep!

Thanks to Rusty for the tipoff.

02:57 AM, 20 Jul 2004 by Mark Aufflick Permalink | Comments (0)

I have to say I'm not excited about most of them. For instance, how will F1 maintain it's position as the most technically advanced racing format when things like variable valve timing are banned. My 5 year old Honda has variable valve timing!!

02:36 AM, 20 Jul 2004 by Mark Aufflick Permalink | Comments (2)

State Machines for UI Code

I have been doing some more thinking about finite state machines and their applicability to different problems.

If you're not familiar with my previous thinking, you can check out the OpenACS workflow package (which I had a small hand in) and some lectures I have presented (see the Relevant Links section below).

I re-read an article titled "State Machines & User Interfaces" in the January 2003 Dr Dobb's Journal which got me thinking about my current project and it's overly complex UI code.

The article basically discusses modelling the UI interaction with your application as a finite state machine—which is something I always do. But then it discusses driving the UI from finite state machine code. In a sense many partsd of UI code do exactly that without realising it, but driving the whole thing from a state machine has all sorts of benefits.

It specifically discusses JStateMachine for driving GUI or Web applications with Java Swing or Servlet technology, but the concepts are applicable anywhere.

The bullet point summary of what JStateMachine does is: (quoted directly from the article)

  1. Locate the source state and event on the chart.
  2. Ensure users have permission to fire the event, throwing an exception if not.
  3. Load the IController delegate for the event and ask it for the correct result transition.
  4. Ask the controller to perform any required side effects.
  5. Follow that transition, including computing the history or deep history if required.
  6. Ensure users have permission to enter the result state.
  7. If there is a default event, follow it. Keep processing default events until you end in a state with none, always ensuring permissions are not broken.
  8. Load the IView delegate for the result state and ask it to update the display.

Some other smart things is that the project defines a dtd for specifying the state machine and callbacks etc. in an xml file. It also defines a default view controller that renders a form based on the possible action and required field information in the specification thus allowing you to walk through the whole system and simply fill in the display code as you go.

Alas, seems to have gone commercial, but you can still download the old LGPL licensed code from SourceForge. I'm going to investigate porting it to Perl, otherwise I will write a new module from scratch using the same ideas—it just makes too much sense to keep doing large application UI coding any other way. (Of course there are some projects where a finite state machine is the wrong model, but I think you would be surprised...)

Relevant links:

08:26 PM, 18 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Sybase is good (tm)

I have been building some sample databases and code with Sybase, and I have to say i'm pretty impressed so far.

First of all you can download non-time limited developer versions of their software for free (for Linux, Windows, MacOS X and more!):

Second, installing and configuring is a snap.

Third, it seems solid and fast so far—and the sql implementation is as solid and thorough as you could ask for (well, so far, and it is a bit old-school...).

Two slight tricks

  1. to get the Perl DBD::Sybase driver running, you need to use slightly different libraries (from what I can tell). I used the information on this page to good effect.
  2. In addition, I am somewhat confused by the sybase terms of "server" and "database". After finding this email list thread (ASA Error -83: Specified database not found) I used the database name as the server name, and voila...

Update: At my current employer I use a lot of Sybase. It's not cool. It's not particularly bad, it's just that it lacks some key usability features for developers that makes it unwieldy. If money is no object, stick with Oracle. If money is an object, I would go with Postgresql every time...

Update2: You will find a somewhat less positive attitude at my more recent blog entry: Sybase, it's Californian for ****.

11:35 AM, 16 Jul 2004 by Mark Aufflick Permalink | Comments (0)

Subversion is getting closer and closer to something I want to use. Now with 1.1 you can backend a subversion repository (what svn developers call a "filesystem") on the Unix filesystem (instead of BerkelyDB). This reduces the install requirements and complexity—for most projects I think it's the better choice.

Also, the release notes paint a much more palatable picture about possible api and storage format changes. Prior to 1.0, the subversion code has been subject to pretty major changes between releases (as you would imagine for a pre-1.0 product).

01:34 AM, 16 Jul 2004 by Mark Aufflick Permalink | Comments (0)

MasonX::WebApp - Web Applications with Perl OO

Here is a nice way of structuring Web Applications in Perl getting the best of most worlds:


MasonX::WebApp is basically a query dispatcher that calls a particular method in your WebApp perl module (of the same name as the url) which may then (after doing the real work) pass control to a mason component to render some html output.

It lets you write your app using all your Perl OO goodness and make use of Mason's html ease—all without resulting in a mess of incoherant Mason modules full of code.

The best example is the code for a site by the module Author (Dave Rolsky), you can download it here—I haven't seen 25,000 lines of code that clean for a very long time!

08:34 PM, 14 Jul 2004 by Mark Aufflick Permalink | Comments (2)

Creating employment in the emerging world

This page has an interesting info graphic showing the relationship between the hourly access cost at Internet caf├ęs and the proportion of a country's population living on one US dollar per day.

I think it still shows that the Internet is a very cost efficient tool in the emerging world—certainly compared to traditional alternatives—but when you have less than 1 USD to play with each day, it's going to be tough to get any business inertia going.

That's why I think micro-enterprise or micro-finance provided by groups like Opportunity International are so important and so much more valuable in the long term than simple handouts.

While i'm on the topic ... ;) Opportunity International was co-founded by Australian David Bussau and provides small loans to help people start businesses. The loans are eventually repaid from profits (with no interest) and used to fund further loans. The first loan David made was $AUS 50 (in 1976) to a struggling Indonesian farmer to buy a sewing machine. That farmer now runs an import/export business and owns a fleet of taxi's—providing employment in his village as well as financial security for his family. David's achievements since that time have netted him an Ernst & Young Australian Entrepreneur of the year award (and thus finalist to World Entrprenur of the Year)—the first social entrepreneur to be awarded one.

According to the blurb on the E&Y site, Opportunity International has funded startup businesses that have created 2.4 million new jobs and currently creates new employment at the rate of one job a minute in 28 developing countries!

The challenge to the IT industry is to take part in this and use the Internet and Open Source to help bring poverty stricken people groups more in line with western nations.

02:28 AM, 03 Jul 2004 by Mark Aufflick Permalink | Comments (0)

AWK is your friend

The Unix philosophy is all about simple tools that fit the job at hand. awk is one of the better examples of this, alongside familiar commands like grep and less etc.

A recent article catchily titled AWK is your friend reminded me that many people aren't familiar with how handy awk is. This article isn't fantastic, but it's worth a read as are the comments at the end.

The document that alerted me to how handy the awk command can be—even for a seasoned Perl hacker—is How to get things done with awk written by Sakari Mattila. I recommend it over the article for usefulness as both an introduction and resource. Sakari has updated it a number of times over 8 years, so it is probably safe to trust it's accuracy!

Another document that looks excellent is An Introduction to AWK by Brian Brown. Like Sakari's article this one was written in 1994, but apears not to have been updated since.

01:51 AM, 03 Jul 2004 by Mark Aufflick Permalink | Comments (1)

At least one OS company is providing better features with each release... I suspect switching to a Unix kernel is really starting to pay of in saved development time.

A few things that stand out to me:

Safari RSS - Apple understands the increasing complexity of dealing with information sources, and that RSS is one of the keys to dealing with opt-in data feeds. Haveing a great interface built into the browser is smart.

Spotlight - Similar to the RSS feature, the new searching functionality shows further that Apple understands information. Apple has been strong with searching since it's (now disbanded) Advanced Technology Group developed and patented the V-Twin (archived on ATG, V-Twin) searching technology in the 90s.

iChat AV multi-way - iChat has already made text and voice chatting the most convenient way to collaborate even for non-techie users. iChat AV and the iSight camera make video conferencing just as easy. The new UI for multiple chats is a great use of openGL to make a complex concept visually easy to understand.

Dashboard - I don't know that the super-bold colours in the example screenshot will win any friends, but the return of the desk accessory is a good think - I hope that the launch times and availability will be just as convenient (and no Font/DA mover in sight!).

12:45 AM, 01 Jul 2004 by Mark Aufflick Permalink | Comments (0)


Blog Categories

software (41)
..cocoa (23)
  ..heads up 'tunes (5)
..ruby (6)
..lisp (4)
..perl (4)
..openacs (1)
mac (21)
embedded (2)
..microprocessor (2)
  ..avr (1)
electronics (3)
design (1)
photography (26) and white (6)
..A day in Sydney (18)
..The Daily Shoot (6)
food (2)
Book Review (2)


Icon of envelope Request notifications

Syndication Feed


Recent Comments

  1. Mark Aufflick: Re: the go/Inbox go/Sent buttons
  2. Unregistered Visitor: How do make a button to jump to folder
  3. Unregistered Visitor: Note I've updated the gist
  4. Unregistered Visitor: umbrello is now an available port on macPorts
  5. Unregistered Visitor: Updated version on Github
  6. Unregistered Visitor: Modification request.
  7. Unregistered Visitor: Accents and labels with spaces
  8. Unregistered Visitor: Mel Kaye - additional info
  9. Unregistered Visitor: mmh
  10. Mark Aufflick: Thank you