A bitty browser with big potential

•February 17, 2006 • Leave a Comment

When defining his place in the heirarchy of Web developers, Scott Matthews describes himself as “a bitter old man who can’t talk Web 2.0 or mashup.” But as the brains behind Turnstyle,he’s also responsible for two very useful web applications: Andromeda, an application for sharing audio files through streaming media; and his latest creation, Bitty.

Bitty is, of all things, a browser-within-a-browser — a way to present content from elsewhere within a web page, so that users can navigate through searches, blogrolls and even RSS and OPML feeds without ever leaving the web page they started off on.

Matthews started off building Bitty merely as a way to allow people to display Andromeda streaming sites within another site. But he realized that he could use the mini-browser
for presenting any other kind of dynamic web content within any web page.
Confused? See the full post here for more details, since WordPress.com doesn’t like JavaScript in posts. Or any sort of script, for that matter.

Tim Bray: Hey, that’s my TAXI!

•February 16, 2006 • Leave a Comment

On his ongoing blog, Sun Microsytems Web-god and XML godfather Tim Bray looks at The Real AJAX Upside. And guess what–it’s the servers, stupid (well, Tim would never say “stupid”). He also points out that he outlined a very similar architecture to AJAX, called TAXI, in 2001.

Sure, AJAX takes the load off of servers, Tim. And it creates weblications almost as snappy as Windows XP applications on a Pentium II. But what about the page views? The poor, forgotten, page refreshes?

meebo lovesmo youbo

•February 15, 2006 • 1 Comment

OK, so what the heck is meebo anyway? An AJAX-powered multi-instant messaging service client. What’s the business model?

Well, I guess it starts with VC funding from Sequoia to the tune of $9 million or so. From there, it looks like some bitchin’ parties and decent paychecks, to be followed by unemployment. Google rolled their own web client for GTalk based on AJAX last week as part of their “screw ‘em if we can do it ourselves” business model.

Maybe Meebo can sell to some phone company if they figure out how to get AJAX to run well on mobile browsers (and that latency thing)…

Google to Telcos:’Broadband? We Don’t Need No Steenking Broadband!’

•January 17, 2006 • Leave a Comment

Just what is Google up to? The company is apparently seeking dark fiber, possibly to create its own global network backbone.

A job listing on Google’s Web site titled “Strategic Negotiator, Global Infrastructure” seeks individuals experienced in brokering bandwidth and peering deals around the world. It could just be to support new regional data centers for localized Google services … or it could be part of an unfolding strategy to expand Google’s business and cut broadband providers off at the knees.

If you look at the other things that Google has either recently announced or inadvertently revealed — its video store, Google Pack, free Wi-Fi service, etc. — it all seems to add up to something. And I think that something is a detour around the increasingly belligerent bandwidth providers who want a piece of Google’s action.

AT&T CEO Ed Whitacre has said (both before the AT&T merger with SBC, where he was previously CEO, and afterward) that he wants Internet content providers to pay a “carriage fee” for the privilege of uninterrupted packet streams to customers connected to AT&T’s networks. The continuing consolidation of the telecom backbone and broadband businesses, along with comments like Whitacre’s, has raised concerns about the future of network neutrality — the equal treatment of all traffic passed between peered Internet providers — both in Congress and in the boardrooms of Internet content companies like Google.

At the same time, Google has been running out of breathing room in the Internet advertising space. Many observers think that click-through advertising is reaching its limits, particularly with all the “click-fraud” out there. So Google is looking to new services to deliver different kinds of advertising — including print.

What’s the next step? Broadcast. And by broadcast, I mean IP broadcast.

Here’s a possible scenario: Google buys up excess fiber capacity to build its own dedicated spur of the Internet, which it connects to Wi-Fi and WiMax access points in major urban areas. It then offers free Internet access and access to its own IP-TV video services. It introduces a line of set-top boxes or partners with a PC company to provide Google media PCs, which plug into televisions and put Google Search on the screens of millions of households. It disintermediates Internet providers and television networks, and controls the full spectrum of advertising. Or, it uses this capability as a bargaining chip to get concessions from ISPs and media companies, rather than having to pay freight charges.

Wireless IP media is the next frontier — it uses unlicensed spectrum, it can be locked down to specific subscribers, and it has the potential to carry as much bandwidth as today’s broadband networks. Google is a media company disguised as a technology company, and it might just be about ready to shed its disguise.

Building Blortals with Blogs, RSS feeds, XSL Transforms and Dreamweaver

•January 16, 2006 • Leave a Comment

For the past month or so, I’ve been busy working deep under the hood of my day job’s websites to pull together the worlds of lightweight content management (or, in other words, weblogs) and “enterprise” content management to create a new set of hybrid sites that one colleague jokingly christened “blortals”. They combine the interactive, personal approach of blogs with the content of our “big” websites . And they’re put together almost entirely with RSS and XML Style Language (XSL).

While XML-based client-side browser magic like AJAX is all the rage right now, sometimes simple server-side XML magic is better–especially when you’re dealing with aggregating content from multiple sources, and you want your page to load somewhat faster than continental drift. Besides, syndication formats aren’t just for clients anymore–as the number of applications and services that produce RSS and Atom feeds grow exponentially, the XML syndication formats can provide a quick and easy way to integrate related content from disparate sources. Call it “Loosely-coupled content management.”

For example, take a look at this blog here. It runs on a weblog server, but it could really run just about anywhere, because almost all of the content is rendered from XSL files that are pointed at RSS feeds from the weblog, and various news sites In the case of this site, the inbound news feeds are created by a query against our content management system for any stories where a certain company is in the field for “related company”.

In fact, getting the RSS feeds configured was half the battle. That’s because Adobe’s Macromedia Dreamweaver 8 not only includes a relatively designer-friendly mechanism for adding XSL transforms to dynamic pages, but the actual code components required to do server-side transformations for ColdFusion, ASP, ASP.NET and PHP.

The only real coding I had to do was in XPath language in the XSL files used to define the transforms, to control how many items from each RSS feed are displayed on the page. So, for example, to only get 4 items from a feed, I could just use:
<xsl:for-each select=”rss/channel/item[position() <= 4]“>

</xsl:for-each>

And, since in some cases I was able to re-use existing RSS feeds, I also had to strip out the advertisments that get inserted into those feeds.

Thanks to XPath, that’s not a problem, since I was able to insert conditional statements into the XSL. The ads in our RSS feeds all have “ADV” at the beginning of the title, so all I needed was a conditional statement that skipped items starting with ADV:
<xsl:if test=”not(starts-with(title, ‘ADV’))”>

</xsl:if>

Since I wanted to be able to reuse the XSL fragments I created to render other feeds, and wanted to be able to set the number of items rendered and the advertising test string at the time the RSS feed is rendered, I made those values into parameters. Here’s the XSL fragment I used to render the headlines from an RSS feed, linked to their stories:

<?xml version=”1.0″ encoding=”ISO-8859-1>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
<!ENTITY copy "©">
<!ENTITY reg "®">
<!ENTITY trade "™">
<!ENTITY mdash "—">
<!ENTITY ldquo "“">
<!ENTITY rdquo "”">
<!ENTITY pound "£">
<!ENTITY yen "¥">
<!ENTITY euro "€">
]>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”
http://www.w3.org/1999/XSL/Transform” xmlns:wfw=”http://wellformedweb.org/CommentAPI/” xmlns:slash=”http://purl.org/rss/1.0/modules/slash/” xmlns:dc=”http://purl.org/dc/elements/1.1/“>
<xsl:output method=”html” encoding=”ISO-8859-1″/>
<xsl:param name=”ItemsPerPage” select=”4″ />
<xsl:param name=”advertcheck” select=”ADV” />
<xsl:template match=”/”>
<xsl:for-each select=”rss/channel/item[position() <= $ItemsPerPage]“>
<xsl:if test=”not(starts-with(title, $advertcheck))”>
<a xhref=’{link}’><h3><xsl:value-of select=”title”/></h3></a>
<p><xsl:value-of select=”description” disable-output-escaping=”yes”/></p>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

So, throw five or six transformations onto a dynamic web page, and before you know it you’ve got a portal. As they used to say in the Ronco ads, “It’s just that easy.”

And, since it’s XSL, that means that I can move the pages that render the feeds to any dynamic server platform I want with minimal recoding– to do a proof of concept, I took a site developed on a .NET-based Telligent blog server and ported it over to a Linux box running Apache and PHP in just under 4 minutes.