Horde NewsHorde 2.2.7 released (27.10.2004, 10:00 UTC)
Horde 2.2.7 has been released with a few small bug and security fixes.
Link
adam trachtenbergBeth on MTV’s Real World (27.10.2004, 06:20 UTC)

Beth and I were watching Real World tonight on MTV. Well, to be more precise, I was surfing around reading articles about the Red Sox, and Beth was flipping channels looking for something to watch. All of a sudden Beth says: “This is Sea Ray!”

Sea Ray is the rock band Beth briefly played with back in NYC. Their original cellist left town, so Beth joined the band in her place. She practiced a while, played a few gigs, and even recorded some tracks for an album. Eventually, the other person returned, so Beth ended up moving to viola and later leaving the band all together.

Apparently, Sea Ray managed to get one of their songs on the Real World. And, sure enough, it’s one where Beth is sitting in on viola. I pulled up their Web site, and there’s no announcement, so we’re not sure how they managed to get this on, but it’s super cool nevertheless.

If you’re interested, you can download the song, Revelry, on iTunes. Beth’s bit is at the end.

Link
The Last Craft?No URLs in my blog (27.10.2004, 03:02 UTC)

It’s an experiment. I want to see if URLs are dying.

The idea is that the search engines are now so good, there is no need for a hard link to another site I have no control over. I’m a programmer and so I want loose coupling from my blog. Link rot is a good example of a dangling pointer to me and so I am refactoring back to English descriptions. Back to a query rather than a reference if you like. The plan is given a sufficient keyphrases you will almost certainly find the same reading material I based the blog entry on. Not exactly the same maybe, but blogging is about news and ideas rather than specific documents so I have room for flexibility.

There are going to be problems with this. The first is that the blog entries will be less eye catching. Web users start with a title and then start looking for blue underlined text. Well I don’t have any, just a wall of black and white, so the posts look rather boring. Hopefully I can make up for it with controversial titles that annoy people into reading on.

A more serious problem is that site impaired users are more dependent on significant text than sighted users. It’s common for screen reader users to use the tab key to cycle through titles and links. With less tab hits on the content, but still the same number on the navigation, I am reducing the signal to noise ratio for these users when they browse.

Another slim possibility is that I may know a subject better than my reader and supply insufficient context to the subject without realising. Well if that happens then probably I have lost the plot on the whole posting anyway. I don’t even want to think about that scenario.

One positive benefit is that I plan to refer to books by full title and author. That means you can choose which online bookshop you prefer to use. If you are in the Amazon camp and feel your obligitory quick fix is missing, then you can still select the text and use the A9 metacrawler and arrive almost as quickly. Little is lost I think and I am not usually sympathetic to majorities. You have it too easy.

Of course all of this saves me time as well, so it’s also an experiment in lean blogging. Tracking down URLs and making sure they are the permanent ones, not temporary front pages, is as much effort as an extra paragraph. For something that is only a half dozen paragraphs, that’s a lot of overhead.

It would be nice if links could be created in HTML that just contained keywords or just bounded text. You could set your favourite engine into your browser, or be stuck with MSN if you were using IE, and have the browser submit the query. The browser could even pop up a menu of results as you hovered the mouse over. Handy as I hate having to leave the page I’m on when following an article, but want to look up a reference. All that would be necessary then would be for web content writers to mark text as significant. Perhaps the bold tag would do as a temporary measure.

Anyway, adding anchors seems too inflexible these days. I’m also rather lazy. Actually that’s the real reason.

Link
Tobias Schlitt - WeblogLinux World Expo (26.10.2004, 21:58 UTC)

I think most of you saw it, but since today the "Linux World Conference and Expo" is opened in Frankfurt. Stefan Neufeind, Aaron Wormus and me are available at the PEAR exhibition booth. Hope to see some of you there. I'll be available tomorrow and Thursday from about 4pm CET.

Link
Henri BergiusNew OpenPSA Campaign Query Tool (26.10.2004, 16:59 UTC)
Eero has been working on OpenPSA Sales lately to support the CRM deployment Helsinki Business Polytechnic (Helia) is now doing.

Helia will be using OpenPSA for managing all their corporate connections, including students' work orientation periods and their service sales.

However, some of the screens in Sales have been left with quite an industrial look by Eero. One of the worst was the campaign query tool, which is used for searching contacts to be included to a campaign (mass mailing, event registration etc). This query form was quite hideous to begin with, but with addition of some new fields it simply didn't scale.

I've now reorganized it for better clarity:

openpsa-sales-new-campaign-query.jpg

Previously the query fields were organized quite randomly, but now they're in four separate groups:

  • Area selectors (country, post codes)
  • Company type selectors (business area, number of employees)
  • Connection type selectors (products offered to them, sales project statuses)
  • Result criteria (sorting etc)

Also, the screen now allows direct creation of new campaigns.

Link
george schlossnagle's blogA New Architectural Standard (26.10.2004, 14:50 UTC)
Looking over this excellent slide presentation from flickr's Cal Henderson, I'm struck by how reminiscent it is of the Yahoo! implementation Rasmus describes here, the architecture of a former large employeer, as well as the architectures of some clients of mine who shall remain nameless less they fire me for blogging.

What this convergence suggest to me is that PHP is starting to develop a large architecture standard deployment pattern. This is good: one of the reasons many people love (and hate) Java for the the web is that J2EE gives you a pretty complete pattern of how to do things. Of course, PHP is similar to Perl in that it embraces There Are Many Ways To Do It, but while variety is good, it is even more important to develop, culture and embrace best practices. While one should be leary about pretenders to the best practice's throne, I've watched these ideas and patterns develop independently over a number of years, and I think this is the real thing.

So what does a best practice buy you? While it's not a silver bullet for performance, scalability or success, it does give you a solid footing on which to build an architecture. What this means is your design anticipates common problems (high volumes of traffic, high query loads) and keeps you from shooting yourself in the foot. There's also significant advantage in building an architectuyre that looks like other large architectures, as products can tailor themselves to run efficiently in that setup.

At any rate, it's interesting to watch this evolution. All it needs now is a spiffy name (P2EE?).
Link
Henri BergiusStandardized CSS layouts with Midgard (26.10.2004, 12:07 UTC)

Based on my earlier blog entry, there was an interesting talk in OSCOM 4 about CSS Naming Conventions.

My after-talk discussions with Thorsten Scherler led to development of OSCOM specification for CSS Naming Conventions.

I've now used the XHTML skeleton from the specification for some websites, and have been generally quite happy with it. Here is a simple Midgardization of it. Simply paste it to the <(ROOT)> element of your style, and then add the CSS formatting to the <(css)> element.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="&(midcom_site["site_language"]);" lang="&(midcom_site["site_language"]);"> <head> <title><(page-title)></title> <meta http-equiv="Content-Type" content="text/html; charset=&(midcom_site["site_encoding"]);" /> <style type="text/css"> <!-- <(css-local)> <(css-extra)> --> </style> <link rel="stylesheet" href="&(midcom_site["uri"]);style.css" type="text/css" /> <(head-extra)> </head> <body<(bodytag-extra)>> <div id="container"> <div id="branding"> <div class="grouplogo"> <!-- Insert logo here --> </div> <div id="branding-tagline"> <?php echo $GLOBALS["midcom_site"]['site_welcome']; ?> </div> <div id="branding-trail"> <(breadcrumb)> </div> </div> <div id="nav"> <div id="nav-main"> <(navi)> </div> <div id="nav-language"> <!-- Language switching links --> </div> <div id="search"> <div class="search-input"> </div> </div> </div> <div id="content"> <div id="content-main"> <(content)> </div> </div> <div id="siteinfo"> <div id="siteinfo-credits"> Created by <a href="http://www.nemein.com/">Nemein Oy</a>. Powered by <a href="http://www.midgard-project.org/">Midgard CMS</a>. </div> <div class="lastmodified"> <(last-updated)> </div> <div class="siteinfo-legal"> <!-- Copyright disclaimer and possible licensing --> </div> <div id="feedback"> </div> <(edit-this-page)> </div> </div> </body> </html>

The places with comments are ones I'm still thinking how to pull dynamic content into.

Link
SitePoint's PHP Blog: Dynamically TypedFlickr, PHP and that word... scaling (26.10.2004, 05:57 UTC)
Via Keith, Flickr and PHP (PDF) by Cal Henderson. Some interesting quotes; - Stateless method-call APIs are easy to extend - [Unicode] Itnus really easy - Normalised data is for sissies ... Keep multiple copies of data around ... Makes searching faster Would be interestin...
Link
Coggeshall.orgGDObjects 0.3 Initial Release (26.10.2004, 04:18 UTC)
By popular demand I've put together the example code I've used throughout some of my recent talks (most recently in my Object Oriented Programming in PHP 5 talk given at php|works) to highlight different features or functionality in PHP 5 / GD. I've released it under my self-dubbed Coggeshall.org License (Which is basically equals BSD) and gave it the very original name GDObjects.

The basic idea behind GDObjects is to provide an object-oriented wrapper library for the now very old (and relatively cumbersome) to use GD extension for PHP which is much easier to use and work with. Since I did write this code originally for the purpose of example, hopefully you'll also learn a thing or two about PHP 5 OO and advanced GD manipulations along the way. There are some neat things about it (such as centered cropping/text watermarking of images), and thanks to the wonders of PHPDocumentor there is even an API documentation for those interested. To me, one of the coolest things about this code is it unifies a lot of very similar things (different image and font formats) into a single easy to use API -- something I thought was sorely missing from the GD extension as it stands.

As with all of my code I release I am more than happy to hear your feedback. Moreover, I'm just tickled with excitement if you find the time to improve on them by submitting patches. (Okay, not quite that excited -- I just hope someone out there finds it useful).
Link
Jeff Moore's BlogStatus of WACT (25.10.2004, 21:33 UTC)

My last WACT post drew a couple questions from Marcus Baker:

Do you have a release date planned for the next version?

Ah, the release date question. We are certainly overdue. Here is where things stand.

The core framework in CVS is in very good shape. We have 3332 passing tests and 5 failing tests. The failing tests are relatively minor. I would like to fix them before release, but don't see it as absolutely necessary.

I feel the biggest obstacle right now is that many of the example programs that we have in WACT are either obsolete, broken or unfinished. They are mostly broken due to the incompatibility of changes within the controller layer from the last version. I would like to see working (and hopefully unit tested) examples for the release. I don't want to make a release with code that errors out.

The current controller architecture in the CVS version of WACT is very different from what is in the previously released version. After writing what is there now, i have modified my thinking on what a controller framework should look like. I've written up some of the theory of this on this Model View Controller page. I've been working on a proof of concept of this, which I think will become the final WACT controller layer.

As such, I am reluctant to go through the examples now and update them to the current controller when I know that I will have update them again. I am also reluctant to expose a brand new API in the release which I already know will go away.

I've decided I want to work on the controllers and not the examples right now. That of course doesn't preclude anyone else who wants to work on the examples from doing so and getting us into releasable condition. Thats just how I want to spend my time right now. If we are going to release with what we have now, which i am not opposed to, someone else will have to step up and push that.

Its possible that my controller ideas won't work out. I've just reviewed the 3.0.0dev version of Mojavi. I have to say I am impressed. I have looked at most of the controller frameworks on this page and i have to say that Mojavi is the only one that i would seriously consider using myself. It has the right combination of support, maturity, and good design. If my experiments with MVC don't pan out, i would seriously consider ditching the current WACT controller layer in favor of Mojavi integration.

So thats where I am at. I would personally like to see more of the controller issues resolved before the release goes out the door. I would like to feel as good about the controller layer of WACT as I do about the rest of it.

I should finish up with a project soon and have more time to devote to WACT.

When will the next WACT release be? I refer you here.

Marcus also asks:

The bit that I've never understood is, what is a DataSpace?

The DataSpace concept has evolved over time. in WACT, DataSource is an interface that allows an object to expose properties though a generic protocol. The DataSpace class is a convenience base class that helps implement this interface. The DataSource interface could be considered equivalent to the properties portion of the Java Beans specification. You could think of any object inheriting from DataSpace or implementing DataSource as a bean in java terms. However, I would probably compare it to the more dynamic Key Value Coding from Objective-C.

Link
LinksRSS 0.92   RDF 1.
Atom Feed   100% Popoon
PHP5 powered   PEAR
ButtonsPlanet PHP   Planet PHP
Planet PHP