Favorite Reads: Christopher Alexander, “The Timeless Way of Building”

Favorite Reads: Christopher Alexander, “The Timeless Way of Building”

The third in a series on favorite reads related to human nature, society and information technology

I marvel at the ‘great’ architecture of the world, both modern and ancient. I even cherish a baseball autographed for me in 1988 by the renowned architect Frank O. Gehry. Yet I find other places shaped by anonymous collaborators perhaps more inspiring. I refer from experience to the Cinque Terre in Italy, Santorini in Greece, and Lijiang in China. These built environments posess grace and charm beyond description. Each is magically gratifying to stroll through, and draws admirers from throughout the world.

When the architect and design theorist Christopher Alexander speaks of architecture fit for living in, I believe he has such examples in mind. He champions an ‘unheroic’ architecture, where the people of a community assume primary responsibility for shaping their living environment, applying proven design patterns to suit their aims, perhaps under the guidance of a new type of architect who helps them with the planning, design and building process. Alexander’s arguments are profoundly democratic, and represent a dissenting voice within an historically aristocratic profession.

Alexander champions iterative approaches to design and construction as the best means of creating truly livable communities and towns. Though his ideas have been criticised within his own profession as impractical, they have been embraced by software developers, many of whom favor deploying rough implementations of applications quickly, and seek user feedback to shape subsequent revisions. The prevailing modern programming languages support this process explicity. Admirers speculate Alexander will ultimately have a greater impact on computer science than on architecture.


Favorite Reads: John R. Searle, “Mind, Language and Society”

Favorite Reads: John R. Searle, “Mind, Language and Society”

Another of my occassional entries on some favorite reads on human nature, society and information technology.

Since I started my ‘favorite reads’ list with a founding father of artificial intelligence research, perhaps it is fitting to next mention a famous critic. John R. Searle achieved notoriety for a critique of AI known as the Chinese Room Argument. The ensuing controversy kept a few generations of graduate students and journalists well-occupied.

In “Mind, Language and Society”, Searle provides a lay summary of his life’s work. The book outlines Searle’s efforts to demystify the human mind by removing the cultural baggage which hinders objective analysis of it. For Searle, the mind is an impressive biological organ which in the human species is able to generate language. Language provides the mechanical foundation for our most distinctive talent — the ability to construct social realities on top of the physical realities around us. While attempting to outline the mechanisms by which humans are able to create stuff like culture, Searle hopes to bring the dispassionate methods of empirical science to a realm often shrouded in mystical terminology.

Searle’s ideas about language and the construction of social realities seem especially interesting given the rise of the Internet. People now have widespread access to social software. These new tools simplify the creation of human institutions that may have no physical presence other than the digital bits on a server’s hard drive.

It is noteworthy that Searle’s social and physical realities seem to parallel Herbert Simon’s artificial and natural worlds (see below).


Favorite Reads: Herbert A. Simon, ‘Sciences of the Artificial’

Favorite Reads: Herbert A. Simon, ‘Sciences of the Artificial’

This represents the first in a series of occassional entries on some of my favorite reads on human nature, society and information technology.

In 1990, I had the good fortune to stumble upon the late Herbert A. Simon’s Hitchcock Lectures at U.C. Berkeley. In a series of three talks loosely related to cognitive science, Simon addressed the schism between the arts and the sciences, and attempted to show how each could advance the other. During one memorable example in support of the above, he demonstrated how visual inspection could solve a physics problem far more effectively than mathematical analysis.

Simon displayed the most stunning intellect I had ever encountered face-to-face. Of course, I was hardly alone in this assessment. By that point, he was already a Nobel Laureate in economics, a recognized ‘father of artificial intelligence’, and a distinguished ‘professor of everything‘ at Carnegie Mellon University.

A number of years after that encounter, I picked up a copy of Simon’s ‘The Sciences of the Artificial’, an ecclectic treatise originally published in 1969 on the social sciences, human nature and the design of complex systems. The ‘natural’ world was the world provided by nature. The ‘artificial’ world explored by the book was the world shaped through the imagination of humans, encompassing cities, social institutions and computer programs. In a compact 216 pages, Simon thus managed to relate information technology to everything.

Full Disclosure: Amazon.com will compensate me with gift certificates for purchases generated from this blog.

Knowledge, search engines and blogs

Knowledge, search engines and blogs

Comments regarding the impact of blogs on the propagation of knowledge

Some Data Points

Over the last couple of months, I have twice found more reliable information from blogs than from ‘official’ sites on the Web:

Case 1: a problem with Python XML parsing on Mac OS X 10.2.

Case 2: a problem with a ‘hijacked’ Microsoft IE Web browser

Case 1 is rather arcane, involving an issue only a very small percentage of OS X users would be concerned with. But since the apple.com site does not permit users to post entries, there is in fact no way for Apple customers to share information via the Apple site. An email to Apple providing this information would probably languish in a low-priority queue, because the issue does not affect a significant number of people. Instead, this knowledge must reach the world via various blogs indexed by search engines.

Case 2 constitutes a growing problem, but is addressed in an overly complex manner on the Microsoft support site, with no mention of easier solutions available elsewhere. A Web search on ‘IE Internet Options missing tabs’ yields a confusing laundry list of sites with no clear solution. However, a Web search of ‘blog IE Internet Options missing tabs’ yields a complete personal account of someone’s experience with this problem plus her recommendations of resources to help fix the issue, including invaluable referrals to www.spywareinfo.com and a program called HijackThis , which in combination fix the compromised Web browser efficiently.

What’s Happening?

Numerous colleagues report anecdotally that blogs often provide more reliable information than official sources. On reflection, this makes sense. In both of the above cases, the pre-Internet method of propagating information involves passing first-hand knowledge through intermediate filters. One of the occassional side-effects is that the explantion from an expert is written or re-written by others with less domain knowledge. This pre-Internet ‘work-flow’ is obviously streamlined by Web logs. Information can now come straight from the source.

So far, I sense only the benefit — knowledge is propagating faster, without the delays and occassional dilution introduced by formal publishing processes. I suppose the opposite is also possible — the propagation of lies, without the protection of editorial review. The unfolding of the blog phenomenon may thus serve as another portrait of human nature. On the balance, I expect the portrait to be flattering.

Encounter with Web Browser ‘Hijacking’

Encounter with Web Browser ‘Hijacking’

It’s a relatively benign nuisance in comparison to other types of ‘hijackings’, so the label is perhaps a bit hyperbolic, but there is a spreading phenomenon known as a Web browser hijacking. By visiting an unscrupulous URL or clicking a hyperlink in a spam email, you can actually lose control of your web browser. Most of these attacks victimize users of Microsoft’s Internet Explorer. The attacking code exploits security holes in the browser to reset your prefered home page, add links to your Favorites list and, most dramatically, remove tabs from your IE Internet Options panel. With that last step, the attacker prevents you from resetting your browser options — a very effective technique to force a few extra page views to their site, until you reinstall your system software in desperation or discover a simpler solution.

So this actually happened to me yesterday — the hijacking attack changed my default home page to an ad supported portal page, and removed the General Tab under my IE browser’s Internet Options, thus preventing me from resetting my homepage back to the original URL (‘blank’, in my case).

After a few hours of fumbling around the Web, trying to figure out what happened to my computer and how to describe it for a search query, I converged on the following explanations:




Oddly, the best solution came not from Microsoft’s support site, but from SpywareInfo, and their amazing online forum, combined with a shareware program provocatively named HijackThis. Volunteers on the SpywareInfo forum have assisted thousands of individuals across the Internet to combat a dizzying array of Web-related programmatic attacks which fall outside the realm of ‘viruses’ per se.

Following the recommendations of SpywareInfo, I repaired my IE web browser as follows:

[1] Downloaded and ran SpyBotSearch&Destroy

[2] Downloaded and ran HijackThis

Following the HijackThis instructions, I saved the resulting hijackthis.log report and posted it to SpywareInfo’s online support forums for analysis by their forum monitors. These individuals inspect the log reports to identify improper Windows OS registry settings introduced by the hijacking attack. You can see the daily action at:


A forum monitor named Tony Klein responded within 30 minutes identifying the two fixes I needed to apply via the HijackThis application. After completing the fixes and rebooting, my IE browser was restored to health. I felt like I was just saved by a ‘firefighter of the Internet’.

Life Lessons:

Though I hope never to encounter this nuisance again, the experience has been enlightening.

1. The best information and support on the browser hijacking problem came from non-professional sources, lacking financial compensation perhaps, but not lacking integrity and commitment.

2. In the same sense that ‘bio-diversity’ makes ecosystems more resilient, ‘IO Diversity’ may help protect our global information systems. The ‘hijacking’ attacks referred to above target vulnerabilities in the code base of Internet Explorer. Other Web browsers with different code bases are immune to these specific attacks. Perhaps variety in the code bases of browsers and all underlying software systems may be beneficial for reasons beyond maintaining economic competition.

Grappling with Python XML parsing on OS X 10.2

Grappling with Python XML parsing on OS X 10.2

Run-time errors encountered trying Google Hack #57: Python and the GoogleAPI

After struggling with various Python programming examples related to XML parsing, I discovered that the “Python No Parsers Found” run-time error is common on multiple platforms, and reported in numerous places on the Web. A thread describing the issue and suggesting a solution can be found at:


Jean-Yves Stervinou, the solution provider, also reported the issue at:


But the most complete thread on the issue and the solution I finally used was found at:


Like myself, these individuals were using the default Python installation on Mac OSX 10.2 Jaguar, and all encountered run-time errors when attempting to parse XML in Python. The solution that worked for me was installing PyXML 0.8.1, as suggested on the last blog listed above. I was then able to successfully invoke Google Hack #57 from the UNIX command line on my server. Another hack that accessed an XML stock quote via a Python CGI also worked successfully.

I will update my own post at hacks.oreilly.com re: Google Hacks #57 (a Python-based example) to assist others encountering this problem:


Ahhh…the joys and challenges of hacking code. I must admit this whole experience confirmed the amazing value of the Web, Blogs and search engines in sharing and advancing knowledge None of the above material could be found at the Apple Computer Web site or online support knowledge base, at least around the date of this posting.

A Layman’s Attempt to Digest “XML Web Services”

A Layman’s Attempt to Digest “XML Web Services”

I rediscovered this note written during the spring of 2002, and decided to add it to my blog. The note was originally drafted to help me internalize readings on emerging Web Services. Maybe others will find this a helpful read.

What’s a web service?

There’s an incredible amount of hype on this topic at present (since 2001). Numerous books have been published in early 2002, including a series of O’Reilly titles, all dedicated to Web Services on the Sun J2EE platform (Java 2 Enterprise Edition) and the Microsoft .Net Framework. In the simplest terms, the emerging Web Services standards promise to simplify the sharing of data between software information systems over the Internet, using open rather than proprietary standards.

Integrated Software Experiences

From a lay perspective, we know that it’s very useful for distributed information systems, and even desktop applications to be able to easily exchange data. It’s great from a user’s perspective to work with a well integrated software system. Imagine if you could automatically extract financial information from all of your financial service providers (credit cards, banks, brokers) into your favorite financial planning software. It’s not reality because the scope of the human and software-based information systems involved is large. Strong integration has occured on the personal computer desktop, since that’s a more tractable domain, where the disparate systems involved all run on a single computer, and most often are used and adminstered by one person. The Microsoft Office suite would be a good example, where you are able to easily share data between a word processor, a spreadsheet, a presentation tool and even a web browser.

Two Paths to Integration

The benefits of an integrated software system can only be realized when the back-end systems are able to communicate with each other. This back-end communication must be standardized in some way to enable large numbers of software developers to write applications that can interoperate.

In the past, systems were integrated using proprietary, vendor specific APIs. This meant vendor “lock-in” for customers. For example, if you wanted a spreadsheet that interoperated well with a word-processor, it helped to buy both products from the same vendor. Developing integrated software is much easier when all the engineers work in close contact under unified leadership.

In the world of networked information systems, as opposed to isolated desktop applications, it also eased interoperability to buy solutions from a single vendor. This mode of industry practice helped software integration in the short-run, but seemed to stifle software innovation in the long run.

The information systems industry has since evolved toward open standards. These industry-wide standards enable companies to compete in the creation of software products without requiring monopoly power to provide interoperability. A pervasive global information system has evolved rapidly since the rise of the commercial Internet. To enable integrated software experiences on this scale, vendors do not entertain the notion of one solution provider winning over all others. Instead, they hope to agree on methods to enable these systems to communicate with each other. Hence we have the current landscape surrounding the standards for communication between distributed systems over the Internet, the standards intended to enable a future filled with “web services”.

Impact of a Consulting Assignment with Laszlo Systems

Impact of a Consulting Assignment with Laszlo Systems

Notes on exposure to the ‘state-of-the-art’ of information technology during the last few months

Feeling more connected with the ‘state-of-the-art’ on the Internet. Partly the result of the last half-year of consulting with Laszlo Systems on the product launch of the Laszlo Presentation Server. Besides developing the original White Paper, various pieces of marketing collateral, and a product review guide, I also orchestrated the unveiling of the platform through a series of technology conferences and trade shows, including Demo 2003 , O’Reilly 2003 Emerging Technology Conference and JavaOne 2003 . The O’Reilly conference was particularly eye-opening, with a parade of IT industry luminaries speaking and in attendance. During this consulting stint, the LPS received a 2003 Webby Award nomination for technical achievement , alongside fellow nominees Google, Linux, Apache and phpBB. This nomination stunned the Laszlo engineering team, given the cult status of the other technologies recognized by the Webby committee. But the most rewarding part of the experience for me was the exposure to recent trends with programming languages, open standards and Web application development. I have been surprised by the variety of uses for XML from declarative application programming languages to server configuration files. In old age, I will look back feeling privileged to have participated in the early commercial development of the Internet.

Project Kontak: term project for my IT sabbatical

Project Kontak: term project for my IT sabbatical

The end result of my Post-ATHM information technology sabbatical was my first complete, publicly deployed web application: Kontak, a personal contact application that permits a visitor on my Homepage to pop open a small browser window, and send email messages to my Web-email account or my cell phone, without knowing my actual account address information. In this manner, I shield those accounts from spammers, because I never give them out! Kontak also logs all messaging activity, so I can see who sent me what from where and when.

Kontak is based on the following set of technologies:

[1] The Web HTML forms, server-side ‘business logic’ and control of an SMTP mail server are all done in the PHP scripting language, running under the Apache Web Server on a Mac OS X 10.2 server.

[2] The message activity log is maintained in a MySQL database, running under Red Hat Linux 6.2 on a 2nd server (in my dining room data center ;-). PHP provides simple API’s to access databases built in MySQL.

[3] The Kontak app, or really the Apache Web Server behind it, is exposed on the open Web by maping the dynamic IP address provided by my dial-up ISP to a static hostname using the service at dyndns.org.

[4] As a security measure, the OS X server is shielded from the Internet behind a NAT router (Network Address Translation), which in turn provides the Internet connection via an integrated dial-up modem. The two servers powering Kontak are assigned private IP addresses within my development Intranet. The Web server’s IP and port number (80) are then mapped by the router to my public dynamic IP address, to recognize server requests from the open Web.

Kontak represents a grand tour of contemporary Web application technologies, and provides a hands-on understanding of how modern application developers make things happen on the Internet. All in all, a very rewarding journey for a software technology product-marketing person!

Monkeying with my Personal Homepage

Monkeying with my Personal Homepage

Learned something new from the blogger.com site today… the FAQ notes that our personal blogs can incorporate 3rd party search engines. heard good things about AtomZ’s free site search trial service, checked it out, and now have it integrated into my personal home page (linked off this blog). One virtue of this idle period is that I’ve been able to immerse myself in the boundless capabilities offered by various web application developers. So much functionality out there, that very few of us really know anything about…seems a lifetime could be spent only in cyberspace discovering all of it and trying to figure out what to do with it.