Rampaging Computer Science

Russell Beattie, Rampaging Computer Science:

"The problem is that much of the Java stuff out there is just written by really smart morons who seem to love complexity for complexity's sake. Even in the API itself! Ever used the Calendar API? It's written by a monkey. Ever check out the code under the JSTL? Those guys have to be on crack. It's not the language itself that causes these problems, it's the culture around the language. When programmers respect patterns more than solutions, you know something is broken."

Wed, 31 Mar 2004 09:57:27 +0000

Situated Software

Clay Shirky wrote a great article on what he calls Situated Software:

"Part of the future I believe I'm seeing is a change in the software ecosystem which, for the moment, I'm calling situated software. This is software designed in and for a particular social situation or context. This way of making software is in contrast with what I'll call the Web School (the paradigm I learned to program in), where scalability, generality, and completeness were the key virtues.

[...] Situated software is in the small pieces category, with the following additional characteristic -- it is designed for use by a specific social group, rather than for a generic set of "users". The biggest difference this creates relative to classic web applications is that it becomes easy to build applications to be used by dozens of users, an absurd target population in current design practice. Making form-fit software for a small group of users has typically been the province of banks and research labs -- because of the costs involved, Web School applications have concentrated on getting large-scale audiences. And by privileging the value that comes with scale, Web School applications put other kinds of value, particularly social value, out of reach.

We've been killing conversations about software with "That won't scale" for so long we've forgotten that scaling problems aren't inherently fatal. The N-squared problem is only a problem if N is large, and in social situations, N is usually not large. A reading group works better with 5 members than 15; a seminar works better with 15 than 25, much less 50, and so on.

This in turn gives software form-fit to a particular group a number of desirable characteristics -- it's cheaper and faster to build, has fewer issues of scalability, and likelier uptake by its target users. It also has several obvious downsides, including less likelihood of use outside its original environment, greater brittleness if it is later called on to handle larger groups, and a potentially shorter lifespan.

[...] By relying on existing social fabric, situated software is guaranteed not to work at the scale Web School apps do, but for the same reason, it can work in ways Web School software can't.

[...] Situated software isn't a technological strategy so much as an attitude about closeness of fit between software and its group of users, and a refusal to embrace scale, generality or completeness as unqualified virtues. Seen in this light, the obsession with personalization of Web School software is an apology for the obvious truth -- most web applications are impersonal by design, as they are built for a generic user. Allowing the user to customize the interface of a Web site might make it more useful, but it doesn't make it any more personal than the ATM putting your name on the screen while it spits out your money."

Wed, 31 Mar 2004 09:00:17 +0000

Productivity in the Service Economy

Jakob Nielsen on Productivity in the Service Economy:

"It's great to employ usability methods to simplify intranet user interfaces and expedite performance within existing tasks. Do it. Millions of dollars are waiting to be saved for the average company.

But, as the saying goes, we should also work smarter. Enterprise software has largely failed until now because it's cumbersome and it automates awkward and inefficient procedures. Business process reengineering must become more than a slogan. In particular, we must change how we define it; rather than simply "automating existing processes" we should be "designing workflow that's optimized through computer support."

Through methods such as field studies, task analysis, and user testing, organizations can discover new ways of working and better ways of supporting work with information technology. In particular, immense gains are possible through better collaboration interfaces, better knowledge management, and better decision support. Most existing systems are unworthy of their names: they don't help people collaborate better, they don't increase knowledge utilization, and they don't support better or faster decisions. But they could. That's the next frontier for enterprise usability.

[...] Usability is key to increasing the service economy's productivity, because only attention to the way humans work can help them work smarter. If we adjust our focus accordingly, we won't just save billions of dollars from productivity gains -- we'll also save millions of jobs and create millions of new ones."

Tue, 30 Mar 2004 14:34:18 +0000

Industry Prints

Ephraim Schwartz at InfoWorld:

"Deloitte has developed what it calls Industry Prints for some 20-plus industries, using data gathered from Deloitte's interactions with various enterprise-level companies. An Industry Print details every single process that makes up an industry. It maps processes all the way from the 10,000-foot level (run HR, run customer support) down to specific workflows for both humans and applications.

[...] It was only after the observation process that Telispark created an application. The result wasn't a squeezed-down version of the SAP PM app, but a unique, customized solution that worked the way the techs in the field did.

Hard as it may be to believe, most mobile IT projects don't take this approach.

Most companies are so bent on getting their enterprise applications into handhelds that they forget that mobility, by its nature, changes businesses' processes and workflows -- and that change must be designed into the mobile applications themselves.

Industry Prints are a series of best-practice workflows and they, or something like them, should be square one, before anyone actually does a lick of coding. The promise of high tech has yet to be fulfilled because we continually try to adapt human behavior to the needs of technology.

Isn't it about time we all had our "duh" moment, and started adapting the technology to us?"

Tue, 30 Mar 2004 09:12:14 +0000

Unnecessary Apache modules

Rich Bowen: "[I]f I was to pick on the most common unnecessary modules, I think I'd have to go for these ones.

mod_imap mod_mime_magic mod_unique_id"

Mon, 29 Mar 2004 14:58:30 +0000

Personal knowledge management

Dave Pollard dreams about personal knowledge management:

"Highlighted on the virtual desktop are the current documents and messages that you last looked at. As it turns out, they consist of a report that you're researching, a web page that you were half finished reading, and a message that you were composing in reply to the web page. When you use the hand-cursor to 'open' these documents again, the Document Annotation Tool opens, and the hand cursor turns into a pencil cursor. The Document Annotation Tool converts each open document into a virtual piece of paper: You no longer have to concern yourself with what application was used to create the document, or what format it is in. You simply use the pencil cursor to highlight, add to, delete from, comment on, and cross-reference to other documents, exactly as you would instinctively use a real pencil to make comparable annotations on real paper. The Document Annotation Tool understands what you are doing and invisibly does the heavy lifting to translate your changes commensurately in the document's 'native' application (MS Word, HTML etc.)"

Mon, 29 Mar 2004 13:01:56 +0000

PEAR Version Naming

Sounds good: PEAR's new version naming conventions. (Found via the ZZ/OSS weblog.)

Mon, 29 Mar 2004 12:56:10 +0000

The Shortest Distance from Prototype to Production

John Neil on the Oracle Technology Network: "A case study in how the PHP/Oracle development Model reduced the application lifecycle at Myers Internet." Quote:

"The quick turnaround times that PHP development affords allowed for the complete order entry part of the system to be fully prototyped, both visually and functionally, within a two-week period. This allowed for quick feedback and reaction to the system architecture and its realization. The fast turnaround meant that issues were addressed while the system was still fresh in everyone's mind. In addition, because there was no extra layer of coding between the UI and the back end (such as a middle-tier server), the process of creating the prototype required fewer development steps and fewer developers."

Mon, 29 Mar 2004 11:45:03 +0000


Sean Hull compares PHP and ASP.NET on the Oracle Technology Network:

"In this article I'll focus on PHP, the technology Oracle has chosen to incorporate into its products, and ASP.NET. [...] In conclusion you'll find a point-by-point comparison in terms of price, speed and efficiency, security, cross-platform support, and the advantages of an open source solution."

"You might ask [...], "Why are database-dependent libraries being touted as features of PHP?" Database abstraction, or independence, is a feature if you seek to build an application that works with multiple databases in one application or that can easily be ported to another database—when moving from development to production, for instance. And these are indeed valid concerns and considerations. But, as Tom Kyte points out in his latest book, Effective Oracle by Design (Oracle Press), database dependence should be your real goal because you maximize your investment in that technology. If you make generic access to Oracle, whether through ODBC or Perl's DBI library, you'll miss out on features other databases don't have. What's more, optimizing queries is different in each database."

Here's their comparison table:

Software price free zend-490 free
Platform price free free $$
Speed strong strong weak
Efficiency strong strong weak
Security strong strong strong
Platform [=platform security?] strong strong weak (IIS only)
Platform any any win32 (IIS only)
Source available yes yes no
Exceptions no yes yes
OOP weak strong strong
Mon, 29 Mar 2004 11:19:40 +0000

IPTC: Metadata for News

IPTC Metadata: Subject Reference System & NewsML Topicsets: "The IPTC creates and maintains for many years sets of terms to be assigned as metadata to news objects like text, photographs, graphics, audio- and video files and streams."

Mon, 29 Mar 2004 10:09:42 +0000

Tim Bray on OpenOffice

Tim Bray, one of the inventors of XML, gets excited about OpenOffice - seems like good software is made in Hamburg, Germany :-) ...

"The way that these guys store the data is massively, fiendishly, outrageously clever. They have their own XML tag set, which includes (in one namespace) all the basic word-processing, spreadsheet, and slide-show machinery. Then, for graphics they use SVG, for styles they use XSL-FO, for links they use XLink... you get the picture, they've invented the absolute minimum possible.

You know what this is? This is exactly what the people who invented XML thought they (er, we) were doing it for. It's no secret that the original XML cabal was a bunch of of publishing geeks, and we thought we were building a next-generation general-purpose document format. Except for, the XML world charged off after B2B and Web Services and transactions and RSS and so on, and hey that's fine, it works well for all those things. But what we had in mind is more or less exactly what OpenOffice is doing."

But: "This is now one of the world’s largest Open-Source projects (Sun is paying several floors in a big building full of people to work on it, and there are tons of other contributors), and it has really lousy visibility. These are interesting people and they know more about XML and portable on-screen rendering and struggling with print drivers and so on than just about anybody, and the world needs a few voices out of North Germany writing about all this stuff and also about what it’s like to compete with Microsoft Office."

Mon, 29 Mar 2004 09:53:03 +0000

Metadata, Mark II

Jason Cook wrote an article on GeoURL, SMBmeta, Dublin Core, RDF and FOAF, on webmonkey:

"Well, META's not dead. In the pages that follow, I'll be giving you a bird's eye view of a few independent technologies, each aspiring to get useful metadata back into the Web. Some are homegrown, some corporate, and some academic, but all of them let you enhance your site with useful information and improve the ways your site is associated with other sites."

Mon, 29 Mar 2004 09:42:20 +0000

Firefox fills the IE void

Microsoft Internet Explorer is dead, Mozilla is just so much better. This is not geek toy evangelism, it's the plain truth. In case you didn't know this yet, read Jon Udell:

"During Mozilla's long nuclear winter, I stuck with IE because I wasn't willing to live with compromises. Then the tables turned. Suddenly, IE was the compromise I could not live with. Bugs didn't get fixed. Standards support didn't improve. New features didn't appear. And the last vestige of cross-platform ambition evaporated when IE for the Mac was killed last year. The message is clear: Internet Explorer is dead in the water."

Fri, 26 Mar 2004 13:46:54 +0000

Creating and Consuming Web Services With PHP

XML.com: "Creating and Consuming Web Services With PHP"

"There are many available scripting languages that support web services. PHP is one such language, with a powerful arsenal of open source functions and tools. In this article, we will compare and contrast three methods of consuming and producing web services: XML-RPC, SOAP and REST."

Thu, 25 Mar 2004 23:17:33 +0000

Le Fay

A totally non-IT-related note: I love Le Fay's bass guitars - take a look at their picture gallery! (I own an old Pangton.)

Wed, 24 Mar 2004 15:39:38 +0000

Geeks and the Dijalog Lifestyle

Kendall Grant Clark starts a new column on XML.com, called "Hacking the Library":

"That's the curious space I and others like me inhabit today: Digital, but not purely digital; analog, but not only analog. We live in the space between these two, in the space carved out by their now haphazard, now principled mixture. It is a space worthy, or so I like to think, of its own name. I have taken to calling it "dijalog", that is, "digital plus analog". We're all -- at least all of us of a certain age -- dijaloggers now.

[...] Second, while geeks have lots of tools -- programming languages, data storage mechanisms, exchange formats, and global message passing systems of various kinds -- for managing their personal dijalog collections, we tend to be a bit weak on the details of ordering schemes.

In other words, we're geeks; we're not library or information scientists. But these -- computer and library science -- are kissing cousin fields, parasitic and dependent on one another in important, deep ways. Geeks can learn information and library science easily enough, but especially if they have a real, hackable motivation for doing so. I'm suggesting in this column what I intend to prove in future columns, namely, that the dijalog lifestyle, which is the one most of us are actually living, is uniquely suited to the confluence of geek hackery and certains parts of library science.

That's why I'm calling this series of columns Hacking the Library, because I want to share some of the library science tricks I've picked up in my own efforts to manage my dijalog lifestyle, and I want a motivation to learn new ones and share them with you. Thus, in the coming months, XML.com audience willing and if the creek don't rise, I'll be talking about things like

  • personal libraries as information problems, or why you need a spatial arrangement and information query scheme;
  • how to choose an ordering scheme for your media collection;
  • how to implement the Library of Congress at home;
  • how to use weblogs as a way to catalogue and categorize personal information;
  • how to use big-time metadata standards and techniques, like Dublin Core and faceted metadata, to manage dijalog artifacts;
  • how to manage non-textual artifacts like photos, videos, and music files;
  • why RDF and other Semantic Web technologies are ideal for dijalog management;
  • open source library frameworks, so you can make sure you get back the things that you lend;
  • how personal libraries can be spokes in the Digital Hub;
  • distributed collection management."
Thu, 18 Mar 2004 08:55:19 +0000

Microcontent Management with Syncato

Kimbro Staken introduces Syncato (which was developed by him) on XML.com:

"To many people, weblogs are simply a way to post their writing to the Web. For me weblogs are a personal data repository where you can store all kinds of information that you want to make publicly available. This includes, of course, writing, but I also wanted to be able to store other types of information. It was this desire that drove the design of Syncato and brought about the focus on achieving maximum flexibility for the data it stores.

Syncato is an XML system from top to bottom. It's written in Python, but my goal has been to minimize the amount of Python code involved. All data is defined in XML and as much as possible, XML tools are used to manipulate the data. It uses Sleepycat Berkeley DB XML as its database and converts the XML content into presentation formats via the libxslt library. When data moves from the database to presentation, it is always treated as XML, i.e. there is no object model per se, there is only an XML model."

Thu, 18 Mar 2004 08:41:31 +0000


"MOZiE is an extremely light-weight, free Windows application that allows web designers the ability to compare page rendering in Mozilla and Internet Explorer by embedding Gecko -- via the Mozilla ActiveX control -- in an HTML page that sits above an iframe displaying MSHTML-rendering, running as an HTA."

Wed, 17 Mar 2004 10:14:32 +0000

Stale Page RSS Feed

Eric M. Burke: "What I have not seen, however, is a good system for preventing stale documentation. The concept is pretty simple. Provide an RSS feed for the least recently modified pages on your web site. Or maybe configure several parameters such as how many page views pages get, how many people link to those pages, etc.

Every week or so you could review the list of "stale" pages and make educated decisions. If the pages are still valid, just click a checkbox saying "reviewed, OK". Or, update the page or even delete it."

Tue, 16 Mar 2004 10:31:19 +0000

German engineers ignore customer needs :-)

Jakob Nielsen's Alertbox: "Here are just few examples of the BMW 745i's clueless interaction design:

* Response times are incredibly slow. Each time you select something, you must wait several seconds for the next screen to appear. It's common to ridicule German engineers for their ignorance of customer needs, but no hardcore engineer should ever accept a slow computer for a high-end product. The hardware fails Geek 101. Slow response times mean that you must allocate more attention to operating the UI -- dangerous for an in-car user experience."

Tue, 16 Mar 2004 09:04:11 +0000

The Wiki syntax problem

Sam Ruby: "One key problem that we identified was the wiki syntax - both from a learning curve point of view and from a wiki tool lock-in perspective. It would be really nice if we could define a unified inport/export syntax that tools can use, either to PUT data to a wiki, or to migrate data from one wiki to another.

An obvious candidate would be (X)HTML, as every wiki provides some form of export to (X)HTML today. The problem is import: one should not have to implement a renderer comparable to IE or Mozilla to do a credible job. A profile or subset is called for."

Atox has a list of plain text "markup languages", pointing to txt2html - why isn't this format used for Wikis?

Mon, 15 Mar 2004 11:13:28 +0000

Towards Next Generation URLs

Thomas A. Powell and Joe Lima on beautiful URLs:

  • "Keep them short and sweet.
  • Avoid punctuation in file names.
  • Use lower case and try to address case sensitivity issues.
  • Do not expose technology via directory names.
  • Plan for host name typos.
  • Plan for domain name typos.
  • Support multiple domain forms.
  • Add guessable entry point URLs.
  • Where possible, remove query strings by pre-generating dynamic pages.
  • Rewrite query strings.
  • Remove extensions from files in URL and source.
  • Automatically spell check directory and file names entered by users."
Fri, 12 Mar 2004 10:01:32 +0000

PHP Application Design Concerns

The WACT (Web Application Component Toolkit) wiki on PHP application design concerns:

"PHP does not enforce the notion that everything is an object. Successful PHP applications mix both procedural and object oriented logic. Developers from Java background, for example, often begin by writing a class "Object" then extended it with all classes. That's already overhead you'll likely regret. It's important to use PHP in the "sense" it was designed to be used, which is a mix of both paradigms. Related to MVC, this may mean you implement the Model (and below) as classes while the Controller and View are procedural."

Fri, 12 Mar 2004 08:27:05 +0000


Fascinating: VisualScript. (I love their floor plan scenario.)

"By generating XML from a diagram, VisualScript makes it easy to collaborate with other developers and even non-experts. Instead of decoding long lines of script, you can discuss a process or a problem using simple visual metaphors rooted in the real world. Code can be encapsulated in meaningful symbols that represent important steps in a process. Lines connecting symbols can show relationships and hierarchy. VisualScript diagrams not only illustrate and clarify processes, but now they also generate XML code."

Tue, 09 Mar 2004 13:39:12 +0000

Will PHP 5 Live Up to Its Billing?

NewsFactor article: Will PHP 5 Live Up to Its Billing?

"PHP, the open-source scripting language popular in Web applications, is undergoing major renovations. The new version, PHP 5, already has appeared in three public betas and will be in a fourth beta shortly. The development team is aiming for May 2004 availability.

PHP 5 promises Web developers an environment that contains a revised object-oriented programming approach, better XML support, and built-in SQL database capabilities. While those changes may sound trivial, they are nothing short of a major improvement in a language that is being used more and more in large enterprises."

Tue, 09 Mar 2004 07:58:56 +0000

Php Application Security

The WACT (Web Application Component Toolkit) Wiki on PHP application security: "This is a list of common security concerns for web applications that can be or should be solved at the application development level with a focus on PHP solutions." (Through Dynamically Typed.)

Tue, 09 Mar 2004 07:55:33 +0000

From Wiki to XML, through SGML

Rick Jelliffe at XML.com: "This article shows how to describe Wiki content using SGML. We use this technique to convert a Wiki page into XML using the open source SP software from James Clark. Using this technique, you can provide your users with low-keystroke ways to send structured data with less opportunity for sytnax errors and no reliance on the editing system at their end. The data does not need to be rich text, it could even be records of data."

Mon, 08 Mar 2004 13:24:15 +0000

Notes on PHP Session Security

Harry Fuecks' notes on PHP session security:

"[...] things to watch out for when using sessions for your sites login system;

  • 1. Shared web servers
  • 2. XSS exploits
  • 3. Session IDs in URL
  • 4. Session Fixation
  • 5. Sniffing Packets
  • 6. Cookies are not for session data"
Mon, 08 Mar 2004 10:13:44 +0000

Do You PHP?

Rasmus Lerdorf's article on the characteristics of PHP on the Oracle Technology Network:

"Popular opinion about PHP is polarized. Language purists tend not to like the somewhat haphazard implementation of many features and some of the inconsistencies that have emerged over the years. At the same time, pragmatic problem solvers tend to love how PHP seems to almost read your mind and present itself as the perfect Web problem solving tool."

"About the lack of enforced structure, all I can say is that I absolutely hate programming frameworks that lock me into a certain way of approaching a problem. That doesn't mean I don't believe in structure and frameworks, but I do believe in people having the power to come up with their own to match their environment. [...]

What it all boils down to is that PHP was never meant to win any beauty contests. It wasn't designed to introduce any new revolutionary programming paradigms. It was designed to solve a single problem: the Web problem. That problem can get quite ugly, and sometimes you need an ugly tool to solve your ugly problem. Although a pretty tool may, in fact, be able to solve the problem as well, chances are that an ugly PHP solution can be implemented much quicker and with many fewer resources. That generally sums up PHP's stubborn function-over-form approach throughout the years."

"The lack of a central control process is a feature and at the same time a source of great frustration for many. The shared-nothing architecture of PHP where each request is completely distinct and separate from any other request leads to infinite horizontal scalability in the language itself. PHP encourages you to push scalability issues to the layers that require it. If you need a shared datastore, use a database that supports replication and can scale to the levels you need. If you need to load balance requests or distribute certain requests to certain servers, use a front end load balancer that supports this. By avoiding a central controlling process, PHP avoids being the bottleneck in the system. This is the defining characteristic that separates PHP from what people commonly refer to as application servers."

Mon, 08 Mar 2004 09:57:10 +0000