Syndication-Related Document Collection

Bit by bit, document by document, the Syndic8 Documents Collection has grown to over 240 entries. We have links to documents in a plethora of categories, and the documents themselves are all full-text indexed. I do need to spend some time tracking broken and moved documents, but that’s another story.

From time to time an inappropriate document is submitted (and promptly deleted), but by and large things have run well. There’s a phenomemon, noted in The Tipping Point, where people will respect something that is clean and well maintained, and will even go out of their way to help keep it that way. However, once it starts to fall into disrepair, they are happy to help it along the way. World-writable web sites are no different in this regard.

Weekend Progress

I went away for the weekend, and the boys made some excellent progress without me.

First they finished up the hole for the neck and welded the neck into place, straight and secure:

Then they used the Harbor Freight tubing bender:

to bend the frame rails up in the rear. There were some tricky moments while they made sure that both of the bends started in the position and ended up at the same angle.

After that they welded in the wheel bearings, and put the rear wheel on to the axle:

We still need to cut off the extra length of axle, and we also need to machine a keyway down the entire length so that we can mount the wheel, the sprocket, and the disc brake on the axle.

Take a step back, and voila:

I must say, this is really starting to take shape. It is actually beginning to looks like a chopper. To you it may look like 5 simple pieces of pipe with a couple of bends, but to me this is a ton of fun, a skill-building exercise, a platform for critical thought combined with hands-on experience, and something that Stephen, Andy, and I will remember for a very long time to come.

The next week should be very interesting. Stay tuned for the next episode.

By the way, please leave a comment if you are following our little project…

Ping Processing

The ping is a lightweight messaging system which allows one site to tell another site that it has changed. It was first used at weblogs.com and supported in Radio Userland.

The ping itself takes the form of an XML-RPC function call. There are two varieties in common use: weblogUpdates.ping and weblogUpdates.extendedPing. A single site can support either or both; Syndic8 supports both. The ping call accepts site name and site URL parameters. It does not include the URL of the site’s feed. The extendedPing includes this URL as well as another parameter that I have yet to deciper.

Syndic8 does some relatively complex processing each time a ping is received, and I was concerned that it would not scale (other sites have had this problem). So far, so good. According to the ping status page, we have processed over 687,000 pings, averaging 10-12 per minute. There are several reasons for this. First is that I am a really, really great developer, of course. Second, PHP and MySQL are efficient, and I used some tricks such as asynchronous processing and an in-memory database table to squeeze every last bit of efficiency out of the system.

The most recent set of pinged feeds can be viewed in the Syndic8 Ping Box. It is important to note that this box is limited to the pings which represent feeds known to Syndic8. An important aspect of the ping processing logic is the discovery mechanism used to turn pings into potential feeds and then ultimately into actual feeds.

The most recent ping list is also available as an RSS feed, of course.

I have plans to do a lot more with the pinging system, and it would be great to see even more sites ping Syndic8. This can be done with an XML-RPC call to ping.syndic8.com, or it can be done indirectly via a call to pingomatic.com. A call to pingomatic will also serve to ping many other sites.

Barr’s Better Browsing

If you use a Microsoft Intellimouse (or any other mouse with a clickable wheel), consider making one tiny little change in your settings.

Simply set the “click” action on the mouse wheel to activate the browser’s Back function. You will be amazed at the speed with which you can navigate through a web site.

You can thank me now, or you can simply call this “Barr’s Better Browsing” and link back to this page.

Sadly, my office machine is locked down and centrally managed; I cannot make this simple usability modification without the help of a system administrator. So much for personal computing.

Web Services Extension

The Syndic8 Web Services Interface has been around since the end of 2001. Since that time, I have added function after function to the interface, some based on my own needs and goals, and others based on what other people have asked me to do.

Based on a request from a Syndic8 user, the I made an addition to the GetFeedInfo, GetChangedFeeds, and QueryFeeds functions. Each of these feeds accepts an optional list of fields to return. For example, the following pseudo-call returns the feedid, status, and dataurl fields of feed 100:

syndic8.GetFeedInfo(100, array('feedid', 'dataurl', 'status'));

This function also accepts some pseudo-fields, Locations and Categories. The Locations field returns any known meta-data about the physical location of the feed, and the Categories field returns any known information about the categories of the feed.

I added a third pseudo-field, PollStatus. This field returns the information shown in the Poll Results tab of each Feed Info page. The data is returned as an array of structures; each structure contains the following elements:

  • date_polled
  • status
  • parse_error
  • parse_line
  • fetch_error
  • response_time
  • redirection
  • http_response
  • encoding

The array will have one element for each Syndic8 poll. Most feeds are polled twice a day; all polls are kept around for three weeks. So this array could contain up to 42 elements (subject to change, of course).

I am always interested in suggestions for new calls; simply send me an email or drop a note to the mailing list.

Quick Vacation

My wife and I took a quick vacation in Seaview, Washingon this weekend. We stayed at the Enchanted Cottages and celebrated 22 years of marriage. We visited a lighthouse, had a great walk on the beach, ran into some friends, and ate some spectactular Willapa Bay Oysters. The town is a bit too sleepy for my taste; I think I would go stir crazy if I lived there year-round. For a weekend away, it was just right.

We are now rested and ready to in preparation for the new school year, which starts tomorrow.

The boys made some tremendous progress on the mini-chopper while I was gone. More pictures soon.

Minichopper Neck

We spent a long, exciting evening working on what may be the most crucial joint in the entire mini-chopper. This is where the two frame tubes join to each other and to the “neck” — a short tube which will hold the front forks. There are several challenges here. The frame tubes must be joined solidly to each other, and then a hole must be bored through the joint for the neck. It all seems simple until you try to do it, and find out that there are compound angles and no room for error.

Here is the basic neck joint. It doesn’t look all that amazing, but that’s ok since most of it will be drilled out.

Here is a top view showing the tubing notcher clamped into place and about to drill the hole for the neck tube:

Here is Stephen welding in the support piece shown in the next photo. The welder really is that bright:

Here’s a genuine innovation. When we started to drill the neck hole, we found that the rails would move in relation to the jig. After trying various ideas, we simply welded this piece of angle iron to the upright portion of the jig. It may appear to be mounted on a knife edge, but its really quite solid. We then clamped this piece to the rails and ended up with one solid piece.

Here’s the finished hole, illustrated by our lovely supermodel Grace. It looks a little bit off-center; part of that is the picture and part of that is because it is off-center. A few minutes with the angle grinder will fix this up.

Finally, here is how the neck will fit between the rails. We’ll need to make sure that it is aligned laterally with the frame. We were thinking of using some green lasers (because they are cool and because the beam is visible), but a long piece of pipe may have to do. We’ll adjust the final angle in order to set the wheelbase.

And that’s about it. Next step is to weld the neck in to place, and from there we can really get cranking. We’re pretty sure that this was the most difficult part of the project (famous last words).

RSS Feeds from Alexa

Alexa (an Amazon subsidiary) now provides a number of RSS feeds on this page.

However, I don’t quite understand what the intent is behind these feeds. When see a feed with a provocative name like “Hot Search Terms”, I expect the feed to contain, literally, a list of such terms. This is not the case here. The first and only entry in the feed contains a pointer to an HTML page on Alexa; this page contains the list of terms. I would have similar expectations from a feed which purported to contain the top 500 English-language sites.

RSS is typically used to represent dynamic information, and these feeds don’t fit the bill just yet.

I do work with the folks at Alexa from time to time, so I’m sure I’ll hear more about this when I get to work.

Web Designer Reference Information

I have been a long-time fan and user of Bob Stein’s Visibone products. Bob produces a truly awesome set of reference cards and charts for HTML, CSS, JavaScript, web colors, and more. The production values on these items are second-to-one. The information is detailed and accurate, the cards are printed on high-quality stock, and Bob has gone to extreme lengths to make sure that the colors are accurate.

These are so nice that I never, ever leave them lying around where they could be “borrowed”.

Bob’s newest product is the Browser Book, a 16-page compilation of his charts and references (pictured at left).