Categories
Web

Find your exit points

The first time I stayed in a hotel was when I was 12 and I and my brother met my father for holiday in Hawaii. We’d stayed in motels before–this was the era of the auto vacations–but never a multi-story hotel, where you accessed your room using an elevator.

When we got to our room, my Dad took us out into the hallway and pointed out the Exit sign. He told us that if a fire happened, we should not use the elevator. Instead, we should look for the Exit signs and follow them out of the building.

Since that one trip, I briefly pause at my door and locate the nearest exit before entering my room in hotels.

That trip was also the first time I flew on a plane. It was wonderful–scary and exciting. When the stewardess talked about what to do in case of an crash landing, I paid attention. To this day, I still pay attention–not because I don’t know what to do (butt, meet lips), but because it’s rude to ignore this poor soul who has to go through the motions. Shades of fatalism aside, I do check to see what is the closest exit when I find my seat. Old habits are hard to break.

My check for the exit bleeds over into my use of web services. No matter how clever a service, I never use it if it doesn’t have an exit strategy.

Recently, I took a closer look at the possibility of using Feedburner for serving up my feed. Now that I’ve moved my photos offsite to Amazon’s S3 service, the feeds are now the most massive bandwidth use. With my new austerity program of minimizing resource use, the use of Feedburner is attractive: let it serve up the feeds, with its much more efficient use of bandwidth.

My first thought, though, was: what’s the exit strategy? After all, it’s easy for me to redirect my feeds (all but the RSS 1.0) to Feedburner: I can adjust my .htaccess file to redirect traffic for all requests that don’t come from the Feedburner web bot. But what happens if I decide to bail on Feedburner?

This question was asked of the Feedburner staff last year, and the organization responded with an exit plan. It’s a month long process where you can redirect from Feedburner back to whatever feed URI you want. At the end of that time, all aggregators should have an updated feed URI–all without people having to manually edit feed subscriptions.

As such, I’m trying the service out, see how it goes. I know that if I decide I don’t like it, I can bail. If the worst case scenario happens, with Feedburner going belly up, then people know where to find my weblog and will have to manually edit their feeds. That’s also an exit, albeit more like jumping out a window than walking down stairs.

When I used Flickr, the API was what sold me on the service more than anything. When I decided to not use Flickr, the first thing I did was use an existing application to export a dump of all the original images, to ensure I had a copy of each. If I wanted to, I could also export the metadata and comments. I then ran an application to make an image capture of all the photos I had linked in my web pages, saving the photos locally still using the image names that Flickr generated.

I created a program that then converted all Flickr, as well as other photo URIs, to using one local URI: http://burningbird.net/photos/. This is redirected using the .htaccess to Amazon S3. If I decide to stop using Amazon the exit strategy is very simple: run an API call and pull down the images into one location; stop redirecting to that service and either host the images locally, or redirect to another storage service.

I use Bloglines, but I can easily export my subscriptions as OPML. Though it lacks much as a markup vocabulary, OPML is becoming ubiquitous as a way of managing feed subscriptions. I can then use this file to import subscriptions into Newsgator, or even a desktop hosted tool, like NetNewsWire.

I won’t use a hosted web service like Typepad or weblogs.com. It’s too easy for them to decide that you’re ‘violating’ terms of service, and next thing you know, all your weblog entries are gone. I saw this with wordpress.com in the recent events that caused so much discussion: in fact, I would strongly recommend against using wordpress.com because of this–the service is too easily influenced by public opinion.

I don’t use either my Yahoo or Gmail mail accounts. Regardless of whether I can get a copy of my email locally, if I decide to not use either account I have no way of ‘redirecting’ email addresses from either of these to the email address I want to use. (Or if there is a way, I’m not aware of it.) Getting a copy of my data is not an exit strategy–it’s an export strategy. An exit strategy is one where you can blow off the service and not suffer long-term consequences. A ‘bad’ email address is definitely a long-term consequence*.

Instead, I have a domain, burningbird.net, which I use for everything. I will always maintain this domain. My email address listed in the sidebar, will always be good.

There was a lot of discussion about Yahoo Pipes recently. Pipes is an interesting innovation, and excellent use of the Canvas object–my hat’s off to the creators for their UI design. However, the service has one major drawback: it’s a hosted solution. If you want to ‘export’ your Pipe, you can’t. There’s no way to generate, say a PHP application, from the Pipe, which creates the web service requests for you that can be run locally. No matter how good and interesting the service–there’s currently no exit strategy.

Anytime you find yourself saying, or even thinking, how ‘dependent’ you are on a service, you should immediately look for the exit strategy. If there isn’t one, decrease your dependency. The web is an ephemeral beast; the path of least resistance is 404, not 200. All pages will end someday. The same can be said for services.

Where are you vulnerable? What’s your exit strategy?

*An option for email is to use a local email address, and forward all email to Yahoo or GMail.

Categories
JavaScript

Ajax vulnerability

Ajax developers should check out a report on Ajax vulnerabilities in several Ajax libraries, and download the extensive advisory. The advisory details the vulnerabilities, and how to protect against.

It’s always a bit risky to put out such details, but I, as a developer, really appreciate such because it allows me to better understand how to protect against security risks. Much of the discussion of the vulnerabilities in this advisory isn’t necessarily new, but it does cover newer issues, vulnerabilities in popular libraries, as well as overall issues.

Money quote:

An application can be mashup-friendly or it can be secure, but it cannot be both.

Categories
JavaScript

Baseline library

I’ve only downloaded it and started playing, but I like the idea of a JavaScript library based purely on implementing standards. Small and lightweight, Dean Edwards’ base2.DOM provides a good baseline for development without worrying about interesting proprietary extensions and recalcitrant browsers.

Not that I’m naming names.

Edwards’ library does provide support for the older 5.x versions of IE. Those are browsers I won’t support anymore. I realize there are people using version 9 of the Mac OS or other equipment still loaded with the 5.x versions, and that not supporting old browsers limits their access to applications. However, as long as any JavaScript-enabled application has a non-script enabled alternative that provides the same functionality, I’d rather just turn off any script effects for such instead of adding enormous amounts of code to deal with the idiosyncrasies. Thank goodness for the concept of progressive enhancement…and nice, small footprint JS libraries.

As for the Edwards’ self-deprecating reference to base2.DOM not being a documented library, JavaScript libraries don’t have to be documented when they’re small, use meaningful naming standards, and are easy to read. Note to Dojo: this doesn’t mean you.

Categories
Technology Weblogging

WordPress and categories

WordPress has some really serious flaws in its post management. It flips posts to private, it resets categories, it returns 404 for pages that are found. If you have a post up in one window and forget and open it into another window, the auto-saving will overwrite your changes, even after the item is published.

The most serious for me is how it handles using categories as part of the URI. I never cared for using a date, but just using the title provides no classification. A good compromise seems to me to use categories. However, lots of problems with WordPress and categories in the URI.

For instance, if you pick multiple categories, you have no way of specifying which category should be used to form the permalink. If you end up adding a category after the post is published, it’s just as likely to be assigned the permalink and you end up with multiple permalinks for the same post.

I am in the process of basically gutting WordPress’ management of permalinks and rewrite rules. What I’ve started doing is using the custom metadata fields for ‘categories’, and including these in the feeds. I need to add in ways of searching on these when people click the links so that all related posts are returned.

I’m then just using WordPress’ category feature as a way of picking a domain, or more properly, subdomain or major classification for the individual posts.

This makes sense: how you want a page organized on your site has little to do with how you want it categorized or ‘tagged’ when it comes to search and external groupings.

It’s been frustrating making these moves. I redirected several folders to ‘gone’, or 410. Google treats these are errors, rather than communication, and just keeps reporting them in the Webmaster tools as such. And it keeps showing thousands of pages as 404, yet they’re served just fine. I believe this has to do with the WordPress 404 errors.

Just as with the move to XHTML, this is a work in progress. I’m not sure I can encapsulate all the changes as plug-ins for others to use. I’ll try, but I may end having to do what one person suggested: grabbing my own copy of the source code for WP through source code control, and when a new release is made, doing compares between my modifications and the new source and adjusting accordingly.

Categories
XHTML/HTML

Comments

Recovered from the Wayback Machine.

I realize that perhaps my choice of serving up XHTML instead of HTML through WordPress seems audacious, but if you want to point out potential problems, can you send me an email? Rather than put something in the comments to ‘demonstrate’ the problem? Believe it or not, I am open to suggestions and am not adverse to receiving advice or help. I also give credit to the person when I receive either.

update

I have to ask myself if I want to spend the hours, no make that days, necessary in order to serve this site as XHTML. One has to be detective as much as tech in order to hunt the problems and kill them one by one. Perhaps this is why the W3C decided to abandon hope on XHTML and focus on HTML5.

I do know that the average person doesn’t care, and frankly, I’m not sure if the average tech is exactly overjoyed, either.

I can either turn off XHTML, which is tempting. Or I can turn off comments. For now, all comments are moderated until I decide. And until I finish with the book today and can focus on the site.