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

Pressure to grow?

Jason Fried - Ask 37signals: Pressure to grow?:

"We’ve intentionally set up our business so our headcount doesn’t need to grow linearly with our key business metrix. We’ve put self-serve at the core of our company. Self serve sign up, self serve upgrade, self serve downgrade, self serve cancellation.

We’ve been constantly tweaking the UIs for the apps to make them even more self sufficient. By making things clearer and simpler we make help/support less necessary. We’re obviously here to help people when they need help, but we’ve seen significant growth in our customer base without significant growth in customer service requests. This is the biggest payoff of simplicity and clarity."

Sun, 30 Sep 2007 23:30:21 +0000

Information Design for the New Web

Ellyssa Kroski - Information Design for the New Web:

"Website designers are keeping a simple and Zen-like layout by increasing line heights and adding lots of whitespace to pages. Instead of crowding the page with information overload, New Web designers are focusing on the essentials, and producing clean and fresh pages."

(Via Nico Brünjes.) 

Wed, 26 Sep 2007 10:47:04 +0000

Big Requirements Up Front

Philip C. Plumlee at ONLamp.com - Big Requirements Up Front:

"Phased delivery and merciless refactoring are not merely ways to prepare for unknowable requirements. They are a system to find a cheap path to a valuable goal. Even if the goal is well known, the path is not."

Tue, 25 Sep 2007 07:34:07 +0000


"CLIPS is a tool for building expert systems. This PHP extension [PHLIPS] provides PHP with a basic interface to a CLIPS environment. Its purpose is to allow deployment of expert systems in PHP."

Unfortunately the PHP extension doesn't seem to be developed anymore... 

Mon, 24 Sep 2007 11:03:42 +0000

7 reasons I switched back to PHP after 2 years on Rails

Derek Sivers - 7 reasons I switched back to PHP after 2 years on Rails:

"Ruby is prettier. Rails has nice shortcuts. But no big shortcuts I can’t code-up myself in a day if needed.

Looked at from a real practical point of view, I could do anything in PHP, and there were many business reasons to do so."

Sun, 23 Sep 2007 21:48:25 +0000

MailChimp Inbox Inspector

"Whenever you create an email campaign, do you spend hours testing it in all your different email programs and ISP accounts and spam filters? Or do you just click "send" and pray to the email gods? We feel your pain. That's why we created the MailChimp Inbox Inspector..."

Fri, 21 Sep 2007 07:59:34 +0000

Log Everything All the Time

Todd Hoff - Log Everything All the Time:

"But then I make each process have a command port hosting a simple embedded web server and telnet processor so you can change debug levels and other setting on the fly through the web or telnet interface. This is pretty handy in the field and during development.

I can hear many of you saying this is too inefficient. We could never log all that data! That's crazy! No true. I've worked on very sensitive high performance real-time embedded systems where every nanosecond was dear and they still had very high levels of logging, even in driver land. It's in how you do it."


Thu, 20 Sep 2007 07:47:08 +0000

Strategy Letter VI

Joel Spolsky - Strategy Letter VI:

"The third phase with PCs was Macintosh and Windows. A standard, consistent user interface with features like multiple windows and the Clipboard designed so that applications could work together. The increased usability and power we got out of the new GUIs made personal computing explode.

So if history repeats itself, we can expect some standardization of Ajax user interfaces to happen in the same way we got Microsoft Windows. Somebody is going to write a compelling SDK that you can use to make powerful Ajax applications with common user interface elements that work together."

Wed, 19 Sep 2007 07:39:22 +0000

cross browser fixed header/footer layout (CSS)

cross browser fixed header/footer layout basic method
Tue, 18 Sep 2007 21:50:35 +0000

Third normal form for classes

John Cowan - Third normal form for classes:

"If the state can be partitioned into two non-overlapping sub-states such that no methods depend on both of them, then the class should be refactored into two classes with separate states. This also improves encapsulation, as the methods in one class can now be changed without regard to the internals of the other class."

Mon, 17 Sep 2007 07:18:42 +0000

Styling File Inputs with CSS and the DOM

Shaun Inman - Styling File Inputs with CSS and the DOM:

"File inputs (<input type="file" />) are the bane of beautiful form design. No rendering engine provides the granular control over their presentation designers desire. This simple, three-part progressive enhancement provides the markup, CSS, and JavaScript to address the long-standing irritation."

Fri, 14 Sep 2007 19:37:35 +0000

Dare Takes a Look at CouchDB

Sam Ruby - Dare Takes a Look at CouchDB:

"What happens when your application grows so large that you have no choice but to massively employ techniques like sharding? What do you have to give up? What do you need to add back in in order to mitigate the loss of the things you give up?

At a certain point, referential integrity has to be given up. Scale a bit further, and even the notion of a relation in the relational database sense of the word starts to break down. To cope, you denormalize a bit, not so much for performance reasons (though that’s important too), but as a self defense mechanism so that the pieces of data that you do have have enough context to be meaningful."

Wed, 12 Sep 2007 13:29:13 +0000

A conversation with Rohit Khare about syndication-oriented architecture

Jon Udell - A conversation with Rohit Khare about syndication-oriented architecture:

"Start by “RSSifying” everything in sight. Then flow all the feeds through a “syndication bus”."

Tue, 11 Sep 2007 19:13:44 +0000

The evil that is fear: banning religion from US prisons

Greg Beaver - The evil that is fear: banning religion from US prisons:

"The past 6 years have seen an unprecedented rise in the institutionalization of fear as public policy in the United States. This is of course primarily due to the attacks of 9/11, but not because of the terrorist attacks. The institutionalization of fear is entirely due to our political leaders, led at the top by a president but followed by the many lawmakers within the legislative branch independent of political party. The unprecedented abuse of fundamental clauses of our Constitution such as the right to have no unreasonable search and seizure, the right not to be tortured, and now even the freedom of religion all result from the institutionalization of fear as a policy of government.

[...] Focusing all resources on anti-terrorism directly resulted in the unpreparedness of FEMA to deal with Hurricane Katrina, which is empirically a much greater threat to the life and liberty of Americans than terrorism (many more hurricanes hit the US than do terrorists).  Please help America put a halt to the madness of fear-governed policy, and minimally participate in government by calling or emailing your representatives.  It is time for U.S. citizens to turn the empty rhetoric about freedom and democracy so often foisted upon other countries into true freedom and democracy at home."

Tue, 11 Sep 2007 07:07:17 +0000

Update to libxml2 in PHP - progress hath been acquired

Greg Beaver - Update to libxml2 in PHP - progress hath been acquired:

"I am abandoning the creation of a relax NG schema in favor of the battle-tested xsd. The error messages for xsd validation are far clearer than the rng ones."

W3C Schema/Relax NG/DTD seem to be totally useless in PHP, help?:

"Now that I am working on the PHP 5+ implementation of Pyrus, the first thing I thought I might do is create a Relax NG schema that the PHP libxml can handle. After an entire day of fighting with the thing, I've managed to discover more than 10 simple and valid Relax NG schema that simply don't work with the version of libxml distributed with PHP 5.2.3. In addition, with helpful error messages like "Expecting name, got nothing here," even with the use of libxml_use_internal_errors() I find the error reporting to be excruciatingly useless."

Mon, 10 Sep 2007 07:58:37 +0000

Do you develop a website? It is infinitely better to synchronize live and development sites using the PEAR Installer

Greg Beaver - Do you develop a website? It is infinitely better to synchronize live and development sites using the PEAR Installer:

"This is the missing piece of the 4 most common synchronization methods: it's really hard to fix mistakes made. You will still make mistakes when using the PEAR Installer, the difference is that reverting them is a 1-liner and requires no sweat or fear that one will break something else in the process: each release of a package is a known quantity, and it will work the same way as it did last time."

Mon, 10 Sep 2007 07:49:20 +0000


Joel Spolsky - Seattle:

"If you ever started a new project by writing code, and you thought you’d “design as you went along,” what you’re doing is driving around with the handbrakes on. Here’s why. Designing a feature by writing a thoughtful spec takes about 1/10th as much time as writing the code for that feature—or less. If you try to code as you design, then you’re interrupting your short spurts of design with long spurts of coding."

Fri, 07 Sep 2007 09:09:53 +0000

Watch out for CouchDB

Andrew Tetlaw at SitePoint - Watch out for CouchDB:

"A view is a dynamic structure that acts like a search query, providing a virtual table of documents matching the query. The query, previously expressed in a proprietary language, is now a JavaScript function which is used to determine which documents to include in the view. Because the views are completely virtual you can have as many as you like and you can add or remove them at any time without touching any of your data. Views are indexed and regularly updated to keep tabs with the state of the documents in the database.

CouchDB has some other impressive attributes; it’s fully ACID compliant, has a security model built in, bi-directional incremental replication and conflict resolution."

Tue, 04 Sep 2007 21:22:18 +0000