|Think about Loose Coupling|
What is attracting "ordinary" people to computing these days? Two related items have regularly emerged in my casual conversations over the past year or more. The first is the Arduino phenomenon. Arduino's programming language is loosely based on Wiring and is similar to C++ according to those in the know. Another area of growing interest relates to the Processing programming language which is loosely based on Java. The latter has commonalities with the former in terms of their IDEs which I like for their rather captivating minimalist design and approach.
For all of their short-comings, the troika comprised of Web Development with Apache and Perl (WDWAP) (Theo Paterson, 2002), CGI Programming 101: Programming Perl for the World Wide Web, Second Edition (Jaqueline "Kira" Hamilton, the 2004 edition both expands--50% longer--and improves upon the 1999 edition and, for the most part, is the basis of the materials offered on the CGI101 web-site), and Beginning Web Development with Perl (Steve Suehring, 2006; James Lee was the technical reviewer) are still a good resource set for helping people become engaged with computing through the development of their own personal or communal web-sites. At least, it would seem so to me.
When necessary, this troika can certainly be supplemented by Beginning Perl (James Lee, 2010, Third Edition), the perldoc resources, the CGI portion of the Apache2 manual, and so forth. There are other good books as well and a large library can soon be collected (of O'Reilly books alone!). But, encouraging people to get their hands on things and to learn by doing is fundamental. Most people will not be interested in learning a language, much less a computer language, if there is no relevance to their daily lives.
By the third chapter of WDWAP (or, the second chapter of CGI101), you are already writing Perl programs whose none trivial effect you can actually see in your own browser. And, you feel as if you are being guided by people who want you to learn something that is of interest to you and not to them, merely. This sort of pedagogy is fantastic; it is basic to the success of the present Arduino phenomenon. But, it is not easy to pull off. In fact, it is very easy to miss the teachable moment entirely.
Larry Wall had a great idea when he developed a computer language which was very much like a human language. In fact, it was a brilliant idea for so many reasons that can be more fully discussed at another time. However, one point for now: human languages are best learnt in the home whilst engaged in mundane activities, or by immersion in a community of practice, such as some work-based activities. So, too, computer languages. "Straightforward" CGI, if you will, seems more generally suited for one domain these days and medium to large-scale web development frameworks for the other.
Yet, the home context is not insignificant. There are literally tens of thousands of old boxes in garages or on their way to land-fills that could be loaded with Linux-based desktop and server software. (While very much an amateur at this, I spend a fair amount of time collecting, reloading and, then, redistributing such boxes in communities of disadvantage.) More importantly, if there were whole neighborhoods families running local servers, think of the dynamics that would be created in terms of local knowledge generation, knowledge transfer (particularly important in Aboriginal and Torres Strait Islander communities) and community support for a wide variety of projects.
One such project might be the implementation of a wide-area community-based urban gardening program which is a known improver of both personal and public health. Large amounts of data can be collected, stored and shared through time to create new understandings and develop new practices. It would even be possible to link-up with Arduino-based projects. For instance, the data from a variety of home-based weather stations can be communicated to a web-server that both stores and redistributes the information throughout a larger network. Of course, such a project could be easily extended into the local schools.
Few, if any, of these projects would require either medium or large-scale web development frameworks to create and maintain their sites; at least, not at first. Anyway, that's my opinion, such as it may be.