Tim’s Weblog Tim's Weblog
Tim Strehle’s links and thoughts on Web apps, managing software development and Digital Asset Management, since 2002.

PHPCon coverage

Brian Goldfarb from Microsoft liked attending PHPCon, and John Coggeshall wonders why Microsoft might care about PHP.

And David Sklar thinks there's a Virtual Machine War going on between Parrot and CLR, especially now that Thies and Sterling started talking PHP/Parrot...

Fri, 31 Oct 2003 07:59:48 +0000

Profiling PHP's Performance using APD

PHP Freaks reprints a Linux Journal article on Profiling with APD.

Thu, 30 Oct 2003 06:49:10 +0000

Dion Almaer: Give your DB a break

Dion Almaer (focused on Java, but interesting nevertheless):

"This article discusses how caching data in front of the database can give our DB a break, and allow for faster running, and more available applications.

In particular, We will look at:

  • What is clustering?
  • Using a distributed cache
  • Caching strategies
  • Read-through / Write-behind caching
  • Technologies that integrate nicely into this architecture"
Wed, 29 Oct 2003 09:13:19 +0000

Mark Sigal: The inter-personal information manager (iPim)

Mark Sigal dreams of The inter-personal information manager:

"One such tool that is needed I will call an inter-personal information manager (iPim). [...] This iPim has seven key functions: search, save, organize, share, publish, play and transact. [...] Ideally, the iPim can support traditional discussion-style threads, maintain associations between related content items (e.g., a product in your wish list and the article that inspired adding it), generate a map of the inter-relationships between people, their common interests and the specific content that inspires them."

Wed, 29 Oct 2003 09:09:02 +0000

InfoWorld: Open source citizenship

Jon Udell's question: "Is all take and no give the dirty little secret of the open source movement?"

"Flashline sells a repository-based software asset management system. He [CEO Charles Stack] told us that his customers indeed manage lots of open source assets in that repository. What they don't do, though, is share their modifications to the code. Almost without exception, he said, they fork the code to jumpstart internal development, never joining or participating in the projects whose code they've taken."

Wed, 29 Oct 2003 08:24:05 +0000

PHP Everywhere: Natural Born Killers of PHP

PHP Everywhere: "With any of the following natural born killers, one thoughtless line of code can result in a unbearable x100 times slowdown:

  • SQL statements
  • Regular expressions
  • Network calls"
Tue, 28 Oct 2003 09:39:10 +0000

PHP & Parrot

PHP Everywhere lets us know that Thies Arntzen and Sterling Hughes are experimenting with PHP running in Perl 6's Parrot VM (here's a PDF of their slides). They say it's FAST...

Tue, 28 Oct 2003 09:35:58 +0000

Jakob Nielsen: "About Us"

Jakob Nielsen talks about the "About Us" page:

"Saying who you are and what you do is basic politeness in any conversation. In business, it's also good to establish credibility and respect by explaining your company's origins, how you view your business, and how you relate to the community.

The Web is very depersonalized, but from our earliest usability studies, we've seen that users like getting a sense of the company behind the website. Who's there behind the screen?"

Tue, 28 Oct 2003 08:47:59 +0000

Jon Udell: Apple's Knowledge Navigator revisited

Jon Udell: "During my session at BloggerCon I referred to Apple's famous Knowledge Navigator concept video. I first saw that video in 1988. Today I tracked down a copy and watched it again. It stands the test of time rather well! Certain elements of that vision are now routine -- for example, Google found me the video and WiFi delivered it to a PowerBook which, when equipped with its iSight camera, bears a family resemblance to the Dynabook-like talking computer featured in the video. Other aspects are still far out of reach, especially the conversational interface based on deep understanding of natural language."

Sat, 25 Oct 2003 15:20:25 +0000

JSRS Javascript Remote Scripting

Using the JSRS Javascript Remote Scripting library (or is it this one?), it seems to be very easy to make server requests from an HTML page without reloading it...

Thu, 23 Oct 2003 08:05:53 +0000

calabashmusic.com's "main" table

Jacob Singh has posted a great comment where he explains something that reminds me so much of Topic Maps, or what I'd love to use them for:

"I use a table called main (bad name) which contains almost all peices of data in the site. Weird huh? but it's great. A typical record will contain the ID, ParentID (I have a seperate table for some many to many joins), url_name(like egypt), content_type(like music region), name, title, keywords, img, short desc, etc. etc.

[...] I know this sounds convoluted, but think of the possibilities:

ID hacking: http://calabashmusic.com?ID=546 my script can figure out that this is the same as http://member.calabashmusic.com/world/regsiter "

Thu, 23 Oct 2003 07:25:01 +0000

phpPatterns: The Front Controller and PHP

On phpPatterns, Harry Fuecks wrote a nice article (with interesting comments contributed by other developers) discussing what we PHP developers all have to decide on: What's our website "architecture"? His conclusion:

"The solution is very simple - have your Page Controller load the Intercepting filter and forget about Front Controllers, which are already being taken care of by Apache and the PHP Engine.

Practically there are a number of approaches (that I can think of). The simplest is procedural - simply include a "before" and "after" script in every Page Controller, which executes the filters."

Thu, 23 Oct 2003 07:18:09 +0000

What's wrong with Perl

Lars Marius Garshol very nicely sums up what's wrong with Perl:

"One of the first things I discovered I didn't like was the syntax. It's very complex and there are lots of operators and special syntaxes. This means that you get short, but complex code with many syntax errors that take some time to sort out.

It also means that reading someone elses code is difficult. You can't easily understand someone elses scripts and adapt them to your own needs, nor can you easily take over the maintenance of someone elses program."

Mon, 20 Oct 2003 15:07:44 +0000

Cooper: The Origin of Personas

Alan Cooper tells how he invented the use of personas as a practical interaction design tool:

"[...] Even though the variation among the users was dramatic, a clear pattern emerged after just a few interviews. The users fell into three distinct groups, clearly differentiated by their goals, tasks, and skill levels. [...] So I created Chuck, Cynthia, and Rob. These three were the first true, Goal-Directed, personas.

Chuck was an analyst who used ready-built templates and reports. Cynthia was an analyst, too, and she used similar ready-built templates. But Cynthia also wrote her own templates, which she gave to Chuck to use. Rob was the IT manager who supported both Rob and Cynthia. He could optimize Cynthia’s templates, but he would never originate or use them.

At the next group meeting, I presented my designs from the points of view of Chuck, Cynthia, and Rob instead of from my own. The results were dramatic. While there was still resistance to this unfamiliar method, the programmers could clearly see the sense in my designs because they could identify with these hypothetical archetypes. From then on, I always presented design work using one of the personas, and eventually even the Sagent engineers began to talk about “what Cynthia would do” or “whether Chuck could understand” some dialog box."

Mon, 20 Oct 2003 09:30:25 +0000

Ned Batchelder: Exceptions in the rainforest

Responding to Joel's essay, Ned Batchelder explains why exceptions do make sense: "Broadly speaking: * A-layer generates exceptions, * B-layer can often ignore the whole issue, and * C-layer decides what to do". I see.

Mon, 20 Oct 2003 07:22:13 +0000

Caching at the SQL-Client Layer

Chris DiBona has a nice idea on SQL result caching: "First thing, before any actual real queries happen, the page construction logic should query the tracking table to get a list of tables that have become dirty since the last time a page was constructed, this can commonly become the only query that a page might see. In the event that a list of "dirtied" tables has been returned, the routine should remove the cached tables from whatever storage you're using."

Mon, 20 Oct 2003 06:41:04 +0000

Asynchronous processes and RPC

In his Architecture Briefings, Ingo Rammer writes about many software developer's dislike of asynchronous processes:

The Flowchart Lie [PDF]: "It seems to be the common approach to map business processes to technical functions using general request/response style communication between client and servers. This is done even though most of the underlying business processes are inherently asynchronous and would therefore easily lend themselves a mapping to asynchronous messaging. [...] In practice, this simply leads to the the well-known "I'm really sorry. Please give me a second. Our computer system is very slow today" response on the phone."

SOAP is Not a Remote Procedure Call [PDF]: "It is for example quite unlikely that Amazon.com would allow your incoming XML Order message direct, real time access to its backend systems. It will instead store them in some sort of message queue so that it can process these messages whenever capacity is available, and will send outgoing OrderAccepted message later on."

Fri, 17 Oct 2003 11:59:03 +0000

The PHP Scalability Myth

At ONJava.com, Jack Herrington writes:

"When the tag-line "Java scales and scripting languages don't" was born, it was based on EJB 1.0, an architecture that most Java architects would consider absurd, based on its high overhead. Based on EJB 1.0, Java's performance was much worse than that of scripting languages. It is only the addition of local interfaces in EJB 2.0 that makes the J2EE architecture perform well.

The argument for PHP scalability is further simplified, however, by the fact that both PHP and J2EE architecture (as well as others) are converging on the same design. And if "J2EE scales" given this simpler, logical three-tier architecture, then it follows that PHP does as well."

Fri, 17 Oct 2003 06:53:50 +0000

On the Goodness of Unicode

Tim Bray On the Goodness of Unicode:

  • "Embrace Unicode, don't fight it; it's probably the right thing to do, and if it weren't you'd probably have to anyhow.
  • Inside your software, store text as UTF-8 or UTF-16; that is to say, pick one of the two and stick with it.
  • Interchange data with the outside world using XML whenever possible; this makes a whole bunch of potential problems go away.
  • Try to make your application browser-based rather than write your own client; the browsers are getting really quite good at dealing with the texts of the world.
  • If you're using someone else's library code (and of course you are), assume its Unicode handling is broken until proved to be correct.
  • If you're doing search, try to hand the linguistic and character-handling problems off to someone who understands them."
Tue, 14 Oct 2003 10:42:45 +0000

Exceptions considered harmful

I always wondered what's so great about exceptions, and was glad that I don't have to use them while coding PHP... Now Joel explains why he doesn't like them:

"I consider exceptions to be no better than "goto's", considered harmful since the 1960s, in that they create an abrupt jump from one point of code to another. In fact they are significantly worse than goto's:

  • They are invisible in the source code
  • They create too many possible exit points"
Tue, 14 Oct 2003 09:56:20 +0000

Jakob Nielsen: Best Intranets of 2003

Jakob Nielsen: "Intranets are changing from being document repositories to being work support tools. Many of this year's winners had changed their information architecture (IA) from one determined by how documents are produced (usually the company's department structure) to one determined by users' tasks. But the work-support trend goes further than IA."

Tue, 14 Oct 2003 08:29:24 +0000

Browser war over: Microsoft lost

It's about time to say in public that Microsoft has been left behind:

While they went to sleep after releasing Internet Explorer 5.5/6.0, Mozilla and its companions have added so much value to the browser experience (tabbed browsing, blocking popups, selective cookie management, much much better security, not to mention Mozilla being cross-platform) that I'm not the only one who's stopped using IE...

Jon Udell: "Microsoft's browser isn't the only game in town. The truth is, I never use IE any more."

Eric Meyer comments on Adobe embedding the Opera rendering engine into GoLive: "GoLive users will get used to what Opera does, and may start to perceive Explorer as being more of an outdated and frustrating browser to deal with. It could lead to an interesting change in perception on the part of Web developers and Web authors."

Mon, 13 Oct 2003 14:54:09 +0000

Joel on Software - The Absolute Minimum Every Software Developer Must Know About Unicode and Character Sets

Joel on Software:

"When I discovered that the popular web development tool PHP has almost complete ignorance of character encoding issues, blithely using 8 bits for characters, making it darn near impossible to develop good international web applications, I thought, enough is enough.

So I have an announcement to make: if you are a programmer working in 2003 and you don't know the basics of characters, character sets, encodings, and Unicode, and I catch you, I'm going to punish you by making you peel onions for 6 months in a submarine. I swear I will."

Mon, 13 Oct 2003 08:34:26 +0000

SANS Top 20 Vulnerabilities

SANS Top 20 Vulnerabilities - "Top Vulnerabilities to UNIX Systems:

  • BIND Domain Name System
  • Remote Procedure Calls (RPC)
  • Apache Web Server
  • General UNIX Authentication Accounts with No Passwords or Weak Passwords
  • Clear Text Services
  • Sendmail
  • Simple Network Management Protocol (SNMP)
  • Secure Shell (SSH)
  • Misconfiguration of Enterprise Services NIS/NFS
  • Open Secure Sockets Layer (SSL)"
Mon, 13 Oct 2003 07:56:51 +0000


Quite nice: CVSTrac - A Web-Based Bug And Patch-Set Tracking System For CVS. Here's an excerpt from their feature list:

  • Web-based administration of the CVSROOT/passwd file
  • Built-in repository browser
  • Built-in Wiki
  • Very simple setup - a self-contained executable runs as CGI, from inetd, or as a stand-alone web server
Fri, 10 Oct 2003 14:25:31 +0000

Writing the Web

Jon Udell notes that there's still innovation needed to really empower average users to contribute to the Web: "To this day, uploading an arbitrary file to a public URL is something that most people can't do. We (as a species) know how to attach files to email. We don't know how to post files and communicate their addresses."

Thu, 09 Oct 2003 05:45:04 +0000

PHP vs. Perl

Here's what a Perl enthusiast likes about PHP: "Despite enthusing about Perl and using it daily, I actually prefer to write dynamic websites in PHP <hiss boo>. Its quick, simple, very easy to prototype, and if an ISP is offering PHP then you know your site will work, rather than having to negotiate module installation and/or maintaining your own mini-CPAN in your user directory."

Thu, 09 Oct 2003 05:38:47 +0000

The Nigerian SCO Connection




Read the full letter at Ars Technica! :-)

Thu, 02 Oct 2003 06:57:18 +0000

When client applications matter...

Mark Sigal: "When do client applications matter? Simply put, when does a rich client have an "unfair advantage" over a web browser in terms of bringing real value-add to the application composite?"

Wed, 01 Oct 2003 08:11:31 +0000