NGO in a box [www.tacticaltech.org]
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
Write Aqua Applications in Perl [camelbones.sourceforge.net]
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 :)
The beauty of God's Creation [www.apolloarchive.com]
As always, there is beauty in God's creation that is more than a match for our evil doings.
I can't wait for space tourism to get underway!!
Ghosts of Rwanda
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.
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 (newsscan.com). 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 (wilywalnut.com).
I want to research more about how the great thinkers did there thinking—I will be sure to report back on my findings!
Analysis of the OpenACS code base [www.nafpik.com]
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 ;)
Irregularities of the earth's rotation [www.iers.org]
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.
New F1 regulation proposal from the FIA [www.f1racing.net]
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)
- Locate the source state and event on the chart.
- Ensure users have permission to fire the event, throwing an exception if not.
- Load the IController delegate for the event and ask it for the correct result transition.
- Ask the controller to perform any required side effects.
- Follow that transition, including computing the history or deep history if required.
- Ensure users have permission to enter the result state.
- 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.
- 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, jstatemachine.org 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...)
- Workflow lectures
- OpenACS Workflow package lectures
- Using MVC Pattern in Web Interactions - A white paper by the author of JStateMachine
- Latest (1.0) JStateMachine code on SourceForge
- CVS details for jstatemachine
- The most recent archive of jstatemachine.org - on web.archive.org
- Workflow::Factory Perl module - Could be useful
Sybase is good (tm)
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
- 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.
- 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 ****.
Subversion 1.1 RC1 - with file based storage [subversion.tigris.org]
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).
MasonX::WebApp - Web Applications with Perl OO
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!
Creating employment in the emerging world
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.
AWK is your friend
A recent linux.com 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 linux.com 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.
MacOS X Tiger looks like what an OS SHOULD be [apple.com]
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 archive.org: 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!).
Blog Categoriessoftware (41)
..heads up 'tunes (5)
..black and white (6)
..A day in Sydney (18)
..The Daily Shoot (6)
Book Review (2)