Categories
Technology

Always in Alt

Recovered from the Wayback Machine.

In a post titled Passion is Blind Kathy Sierra discusses passionate users, double-standards, and forgiveness:

But there’s no getting around it–we all have double standards. We are all cutting one side some slack while holding the other to our ruthless, concrete expectations. And of course we will all screw up. We aren’t perfect. Neither is our software, our hardware, our service, our support, our employees, our policies, our products and services and ideas. But that’s the beauty of passion–if you can inspire it, by helping your user kick ass–they WILL cut you some slack. They’ll forgive you when you screw up.

To demonstrate her point, Kathy uses the now legendary support that Apple customers feel for the company, as compared to Microsoft customers.

It is true that it seems as if Apple can do no wrong, and Microsoft do no good. In fact, the unstable nature of Windows and the ‘blue screen of death’ is a standing joke in the industry. However, I imagine if there were as many Mac users as Windows users, we would hear the sounds of dissatisfaction about Apple just as loudly. In fact, from the anger expressed by many about the new Nano iPods, Apple doesn’t necessarily have the same ‘free’ ride it has enjoyed in the past. Apple is not as successful as Microsoft, but it successful enough.

How does a company get a break from its users? It’s easy: all they have to do is stay small, or appear to stay small; personalize the company so that being critical of a product is equated to being critical of a person or a group of people; most importantly, create a feeling of being an insider by being a customer–all the cool kids have iPods, you know.

(Personally, all the really cool kids have super-cheap iPod rip offs, and use the money they save to buy more music.)

Does this all then mean that there’s a double-standard in play because we’re critical of Microsoft where we’re not of Apple? If both companies delivered the exact same products, possibly, but both companies don’t deliver the same product. True, Apple and Microsoft both deliver an operating system–but the claims they make for both differ dramatically.

Apple promises to provide an environment in which you can add and remove devices and rarely have to worry about configuration; that’s simple to use and easy to maintain; that doesn’t have some of the performance issues associated with fragmented disk space and so on. The company can make these promises because it provides much of the hardware as well as the software, and in this environment, it’s easy to follow through on the claims. It is the hardware that allows Apple to shine, and which sets itself apart from Microsoft.

Apple focuses as much of its effort on design as it does engineering–knowing that people are easily swayed by smooth corners and sexy slim lines. Someone, somewhere thought, “Let’s put a lighted Mac logo on the back of all our notebooks”, so that a seeming sea of blinking apples face us out of conference after conference, even though in the beginning most notebooks probably weren’t Apple (but that changed, as all the cool kids etc.)

All in all, Apple promises what it can deliver. Apple promises to be easy, and it is; Apple promises to be sexy, and it is. What Apple doesn’t promise is what it can’t deliver: to be a cheap, reliable work horse.

Microsoft, on the other hand, is a company that makes claims based on its weaknesses, rather than its strengths. It makes grand promises about security, and thus virtually guarantees being a target; releasing, on average, one new security bulletin a week. It brags about reliability, when the operating system has to work on devices that range from the powerhouse to the puny. It seeks to win over business based on the stability of its products, and just when developers had created a wealth of applications in one environment (COM, DCOM, and COM+), it abandons it and the developers in favor of something completely new (.NET).

To be blunt: Microsoft has a corporate death wish, but will never be allowed to die and will, instead, thrive. This rather astonishing contradiction is based on the fact that the Windows operating system is about as ubiquitous as the common cold; the kicker is the reason it’s so ubiquitous is that Microsoft makes promises it can’t keep. Soooo, Microsoft gets slapped, true; but it gets slapped all the way to the bank.

Saying there’s a double-standard, then, when people complain about having to re-boot a Windows laptop, as compared to having to re-boot an Apple powerbook implies that both systems are focused on the same audience, and based on the same promises. It ain’t no such thing.

And this leads us to the second example Kathy uses in her post: she also references the past discussion that occurred when Phil Ringnalda noticed the sponsored links at the O’Reilly web sites, and when I brought up the sponsored links at my own site:

But sometimes our double-standards bite us in the ass and we’re forced to face it, as Phil Ringnalda did a few months back. When O’Reilly appeared to have search-engine-gaming ads, Phil slammed him in this blog entry. But when his friend Shelley Powers does it, the conversation got very interesting. It was fun (and impressive) to see Phil acknowledge and wrestle with the ambiguity of it all.

True, Phil is my bud–and not just because he has a great way with a rant. But was he indulging in a double-standard because he was critical of O’Reilly for sponsored links but not as critical of me? If he had continued being as unevenly critical, yes. In the end, though, as discussion on the topic brought about a deeper understanding of the issues, I think he was equally disappointed with both of us, but my cat, Zoë, won him over to the dark side.

In the end of her post, Kathy writes:

So, we have to ask ourselves… what can we do to put ourselves on the side of forgiveness? What can we do to help protect us from the times when we will screw up? What would it take in our product, company, service, whatever — to get users to have a glass-half-full attitude about whatever it is we do? If “rebooting” is a metaphor, I’d rather be Apple than Microsoft.

As a developer I try not to make mistakes, but when I do, I fix them. I would hope that ‘forgiveness’ never enters the equation, as forgiveness implies an emotional context, and what does code have to do with emotion? As for my site, what can I do to put myself on the side of forgiveness? I can do nothing, because I promise nothing.

Categories
Media Technology

Playing the game

Recovered from the Wayback Machine.

A while back I listed in a post 50 television programs the Boston Globe considered to be the top sci-fi shows on TV. In comments, we discussed shows we felt were missing, but none of us picked up that Max Headroom was missing from the list. Now that I look back on the discussion, I am surprised by its absence. Though Max Headroom was a short-lived series, I considered it to be both innovative and entertaining.

If you haven’t seen Max Headroom, the show centers around a television crew where the main character, a television journalist, has his personality copied into a digital construct named Max Headroom. In this future time, political entities no longer exist, and society is ruled by corporate rules and regulations, especially several competing broadcast companies, which, among other things, don’t allow televisions to be turned off. People are subjected, day in and day out, to broadcasting, including a continuous barrage of ads.

I was reminded of Max Headroom when I read about Microsoft Live last week, and again when I read Ray Ozzie’s supposedly leaked memo today. I don’t think any of us really doubts that the Microsoft memos were leaked deliberately and with careful thought and planning. Both memos, Gates and Ozzie’s, read as if they’ve been copy-edited, and every phrase meticulously constructed for maximum conjecture and obfuscation–perfect for a new takeover campaign.

Much of the writing is the usual hype–the sense of being on the verge of ’something new’–the ‘aha’ about technologies that are ubiquitous. But what surprised me about Ozzie’s memo and the Live discussion was the strong reference to advertising. Ozzie wrote:

Most challenging and promising to our business, though, is that a new business model has emerged in the form of advertising-supported services and software. This model has the potential to fundamentally impact how we and other developers build, deliver, and monetize innovations. No one yet knows what kind of software and in which markets this model will be embraced, and there is tremendous revenue potential in those where it ultimately is.

Julie Lerman also noticed this from the Microsoft Live announcement: advertising is now being seen as a technological innovation:

Now there is windows live and office live – but somehow the repetetive them(e) that kept jumping out at me when reading the press release was “advertising”.

Opera had ads around it’s browser before going all free; Google makes its money through adsense, and I’ve seen an increasing number of tools that you can use for free…as long as you allow certain bits of software to sit on your machine, counting your key strokes, reading you words, and feeding you focused ads. I do foresee a time when we’ll download Microsoft tools and products–all complete with bar frame and flitty, flighty ads. Not only that, but the technology will be added into .NET that enables those who build tools to do the same–and this enabling will then make it all okay.

At a time when television, radio, and music are becoming subscriber-based and on-demand downloadable for small fees, normally ad-free spaces–such as our desktops, browsers, and every day tools–will pick up the vacuum left by the broadcasters. You will have a choice: pay for the software, or allow ads. It is an inevitable next step in software product releases. With this approach, the software pays and pays no matter how long it takes people to upgrade. More importantly from Micrsoft’s point of view, the companies no longer need worry about pirated copies of any of the software because everyone can get it for free.

In our rush and our new enthusiasm–!?–for this new breed of ads, I can only hope that we remember, as Max Headroom surely could remind us: nothing is really free.

Categories
Technology Web

Accessing the Newsgator API within PHP

One of the programming jobs I’ve had recently was to provide PHP functions to access the Newsgator SOAP API; hiding as much of the SOAP bits as possible. I used the nuSOAP PHP library as the basis for my work. Though SOAP functionality is built into PHP 5, my client, like most people, are still using PHP 4, and nuSOAP has a very clean implementation.

For those who might want to give the API a shot, I’ll walk through some sample code that should be easily modified as interested. I had hoped to write a more complete application, but have ran out of time.

The Newsgator API requires an account in order to test the code, but you can sign up for one at no charge. When you get an account, you’re given an online Newsgator Location in which to add subscriptions. You’re also given the ability to create new locations, as well as folders, and to subscribe to and read, syndication feeds. The API itself is split into five main categories for the five SOAP endpoints: Locations, Folders, Subscriptions, Feeds, and Posts.

Each SOAP engpoint page lists the web service methods for the specific item, including a description of the parameters and values returned. An important element when looking at the page is to find a link to the endpoint at the bottom. Clicking on it opens a window asking for the account username and password. Once you enter these, the endpoint page opens, containing links for each of the methods.

Clicking on a method link opens up another page, usually containing a form, and an example SOAP request and response. These latter are essential in order to determine the values used with nuSOAP. You can also test the web service by typing values into the form and invoking the method. If, that is, the parameters are simple values rather than programmatic structures, such as arrays.

Once you’ve looked through the API methods to see what parameters are needed, and explored the actual SOAP request and response, it’s just a matter of plugging in values within the nuSOAP functions. To demonstrate, I’m going to walk through a program that creates a SOAP client, queries the service for all subscriptions for a given location, and then accesses and prints out links to the individual items for the subscriptions.

In the program, I first create a SOAP client using the appropriate endpoint, checking for any error afterwards. (Complete source code is provided later, so no worries about any gaps in the code):

// create SOAP client
$client = new soapclient(”http://services.newsgator.com/ngws/svc/Subscription.asmx”);
$err = $client->getError();
if ($err) {
err($client,$err);
die();
}

I’m not using a proxy or WSDL, so no other parameters other than the endpoint are set.

Next, I define the method’s parameters, in this case a location string and a synchronization token. This latter value is used to synchronize the data between method calls, and in the results you’ll see this returned as part of the response. Using this provided synch value in the next method call ensures that the data, such as the count of unread items for each subscription, is fresh.

// set parameters
$params = array(
‘location’ => $location,
’syncToken’ => $synctoken
);

During the initial web service request, the synch token is blank.

Once the method parameters are set, I added code to authenticate the user:

// authenticate against the service
$client->setCredentials($user, $pass,’basic’);

Note that this uses example uses BASIC authentication; Newsgator also supports DIGEST authentication.

The Newsgator API token is passed in a SOAP header, which I build manually next. Note that the token must be authenticated with the service, so you’ll need to specify the appropriate service namespace:

// create SOAP header for Newsgator API
$hdr = “<ng:NGAPIToken xmlns:ng=’http://services.newsgator.com/svc/Subscription.asmx’>
<ng:Token>$token</ng:Token></ng:NGAPIToken>”;

Finally, we can now invoke the service:

// invoke SOAP service
$result = $client->call(’GetSubscriptionList’, $params,’http://services.newsgator.com/svc/Subscription.asmx’,
‘http://services.newsgator.com/svc/Subscription.asmx/GetSubscriptionList’,
$hdr,false, ‘rpc’,’literal’);

// check for error
if ($client->fault) {
echo ‘<h2>Fault</h2><pre>’; print_r($result); echo ‘</pre>’;
} else {
$err = $client->getError();
if ($err) {
echo ‘<h2>Error</h2><pre>’ . $err . ‘</pre>’;
}
}

In this function call, the SOAP method is the first parameter, followed by the parameters, the SOAP endpoint (namespace), the SOAP action, the manually created header, the serialization style (’rpc’), and the serialization for the parameters (’literal).

The nuSOAP function processes any XML returned as multi-dimensioned arrays. With this service call, the subscriptions are returned as OPML, values of which you can access by walking through the array:

// decipher the array, based on OPML
$opml = $result[”opml”];
$body = $opml[”body”];
$outline = $body[”outline”];
$syntoken = $opml[”!ng:token”];
foreach ($outline as $key => $sub) {
$feed = $sub[”!ng:id”];
$title = $sub[”!title”];
$url = $sub[”!htmlUrl”];
echo “<a href=’$url’>$title</a><br />”;
}

After each subscription is accessed, the feed identifier ($feed) is then used to invoke another service to get the news for the feed. The complete application demonstrates this.

Categories
RDF Technology

The Wordform/WordPress metaform

Time to start releasing some code.

The Metaform RDF extension and plugins are finally really for beta use.

The Metaform Extension creates a new page in your WordPress weblog that provides a home for all metadata extensions. You’ll also need to add a few lines to your wp-configure.php file and a couple of your templates. The install.txt file has installation instructions.

Included in the installation is a stripped down version of RAP: RDF API for PHP. This should work in PHP 4.3 and up, and will require no other external libraries.

The first plugin is the Links Plugin, which will parse out hypertext links in a post and store them as RDF data. This then can be used to add a link list to your syndication feed or your post, or however else you want to use the data. Again, follow the instructures in install.txt to use it.

I plan to finish packaging a few others for release tonight. My hope is, though, that the Metaform infrastructure will encourage a whole host of RDF-based plugins; using those I’ve created as templates and expanding in ways I haven’t imagined. Regardless, the extension and the plugins do demonstrate that RDF isn’t just for large, esoteric applications requiring a host of PhDs to create.

A few weeks ago the discussion about RDF focused on how complex it is, how hard it is to use; how difficult it is to use in hacking, or for creating simple applications. What Metaform demonstrates is that RDF can be hackable, simple, and immediately useful. It may not be as sexy as Web 2.0, but it is real.

The SeeAlso Plugin allows you to add one or more external references to a post, and have a list of these printed out in the page and/or syndicated feed. Follow the install.txt for how to install.

The Photo plugin accesses the Flickr API to gather metadata about a Flickr embedded photo in the post. The data is then output via a link, added by plugin.

A future version will have access to Google maps, and processing of XMP data.

Categories
Web

Please…do evil

Recovered from the Wayback Machine.

Google Blogoscoped Terms of Service:

By submitting, posting or displaying Content on or through Google services which are intended to be available to the general public, you grant Google a worldwide, non-exclusive, royalty-free license to reproduce, modify, adapt, publish and otherwise use, with or without attribution such Content on Google services solely for the purpose of displaying, distributing and promoting Google services.

Book review of Tom Sawyer by Sandi W. Age 9:

When Tom met Huck Finn and became friends, it reminded me of when I met my friend Seu Mei. We became best friends for a few years. Between those few years, we met more friends. My favorite part in the book was when Tome tricked his friend. His friend had to paint the fence white and Tom got to rest. I read another book by the same author. It is called Huckleberry Finn. I enjoy reading these books because I like to solve the mysteries.

The main point of view of Google Base is that this is going after eBay and Craigslist, and online classifieds. I would say the target is Wikipedia, too. Is this a dangerous move? Depends. Ask yourself the question: at what point can you afford to lose Google and still do business?