A simple enhancement to the XML-RPC server

As I've been working on the OPML Editor, I've been making enhancements to the runtime environment. Occasionally I come across something that's worth propogating to all the Frontier-based environments, and I think this is one of them.

The idea

When I was working on the ping sever for Share Your OPML, I needed to have the pings go to a new domain, so they could be processed differently from (for example) pings of OPML-based weblogs.

My first thought was that I'd have to put the software on a different machine, but then I thought maybe I could improve the XML-RPC server to have it branch to different places based on the HOST header of the HTTP request. It turns out it was very easy to do.

How it works

1. All the code changes are in betty.rpc.server.

2. A new preference, user.betty.prefs.flServerDomains, is defined and initialized, defaults false.

3. If user.betty.prefs.flServerDomains is false, then nothing new happens. Everything is exactly as it was before.

4. If user.betty.domains is defined, then we first try to route the request through that table. If there is a HOST header, and its value is xyz, and user.betty.domains.xyz is defined, then route through that sub-table. If it is not defined, route the usual way, through user.betty.rpcHandlers. The routing "walk" works exactly as before, it's just the starting point that may change.

Example

Here's a screen shot of a user.betty table. Two versions of the "testing" script are shown, one that's accessed through the default domain, and one that's accessed through mork.opml.org. The only difference is the string they return.

Here are two examples of calls:

["xmlrpc://support.opml.org:5337/RPC2"].testing ()

"5/28/06; 1:32:50 PM"

["xmlrpc://mork.opml.org:5337/RPC2"].testing ()

"mork: 5/28/2006; 1:32:52 PM"

How to install

If you're an OPML Editor user just choose the Update opml.rot command from the file menu.

If you're using Frontier or Radio, you can download the new version of the server.

# Posted by Dave Winer on 5/24/06; 11:16:37 AM - --


workspace.threadAnalyzer

Ever wonder what the OPML Editor (or Radio or Frontier) is doing in the background? This script gives you a list of things you should look at.

You might find some surprises, I did.

It looks in two tables, user.scheduler.threads and user.scheduler.everyMinute.

In the first case, it lists all threads that are enabled. Ones that aren't don't run and can't use any resources. In the second case, it looks at the script, if it's in its initial state, with just a single line that's a comment, it doesn't list it.

On my system, most threads were not enabled, and the everyMinute scripts were mostly defaults, so finding the culprit was a bit of a needle in a haystack thing. Not any more. ;->

How to install

1. Download the script to your desktop.

2. Choose the Open command from the File menu, and navigate to teh file.

3. Click on OK for all confirmation prompts.

4. A window will open, click on Run. An outline will appear listing the scripts. Control-double-click (on Windows) or cmd-double-click (Mac) to visit the scripts. If there are errors, that's an indication of problems.

Caveat: This is a tool for programmers. It requires a bit of knowledge of the environment to figure out what's going on.

# Posted by Dave Winer on 5/24/06; 10:46:13 AM - --


How to prepare Mac icons for OPML nodetypes

I'm taking notes here as I prepare the icons for the "include" nodetype. Dan MacTough has prepared the Windows bitmap, and he may possibly write a howto for the Windows side of things.

1. Use a Macintosh resource editor to prepare a resource file containing 4 bitmaps, a small 8-bit icon, a small 4-bit icon, and a small 1-bit mask. Save it to your hard disk.

2. Bring the OPML Editor to the front, and import this script, clicking on OK to the dialog that appears. It loads into workspace.getNodeTypeIcons.

3. Run the script. Choose the file created in step 1. A table opens containing the three bitmaps. Select all and copy.

4. Open the nodetype table you're working on, and paste the icons into the "mac" sub-table. Save.

5. Quit the OPML Editor and relaunch. That should do it.

# Posted by Dave Winer on 3/7/06; 10:29:47 AM - --


Tweaking up Mac disk images?

One of the next things on my to-do list is to learn how to tweak-up Macintosh DMG's so they tell the user what to do when they open them. I love the way they have big text and colorful graphics that say: Drag this to the Applications folder. Yes, most of my users know what to do, but I'd still like to put the color in there. Is there a howto somewhere that explains how to?

# Posted by Dave Winer on 3/3/06; 6:28:33 PM - --


Web-based small business accounting app?

One of my projects for the new year is to get my accounting act together. It's always a huge rush at tax time to get all the numbers together, and every year I say I'm going to do it right, but this year I'm really going to do it.

So what are my choices? Everyone says I should use QuickBooks, and I almost ordered the software yesterday, but it really isn't what I want.

I travel a lot, so I'd want to have the software installed on my desktop computer and my laptop, and to keep the two synched. But then I realized what I really want is something that works like my bank's bill-pay site. It's so incredibly easy and fast, and I can log on anywhere.

So I asked a few friends if anything like this exists -- a web-based small business accounting app -- and apparently what I want may not exist. Could this be right? If so, it's an amazing oversight. It must exist. Please let me know.

# Posted by Dave Winer on 12/21/05; 11:45:40 AM - --


Community server and pinging

This morning I added code to the OPML community server to ping weblogs.com, Technorati and Ping-o-matic in addition to the local ping server. The net-effect is that more services will be aware of our OPML weblogs, this should have been part of the basic service from the start.

The changes will percolate to any installations of the server software that are updating hourly (the default configuration).

# Posted by Dave Winer on 12/12/05; 2:51:54 PM - --


The first occurrence of "weblog" on Scripting News

I was curious to find the first occurrence of the term "weblog" on Scripting News, so, of course, I wrote a script.

I keep the full contents of the weblog, going back to the beginning in a Frontier object database called z.root. Aside from a lot of scripts that form the archive website, there's a calendar table, that's broken down into years, then months, then days. So I wrote a script that loops over days, looks in the outline elements, and finds the first that has the term, and then stops.

It stopped on January 20, 1998, but as far as my eye could see, there was no use of the term. Until I did a view source and found that it appeared in the href attribute of the anchor tag pointing to Robot Wisdom. So, by inference, at least at that time, Barger was thinking of his site as a weblog.

But I wanted to find out more -- when did I first use the term?

For that you have to fast-forward more than a year after that first reference to a post about My.Netscape on February 10, 1999, and a post that foretold many years of angst-to-come about a coalesced standard format for weblog syndication. (Emphasis added.)

There are starting to be a bunch of weblogs, wouldn't it be interesting if we could agree on an XML format between us?

So that's it -- no proof that Barger coined the term, but no contradiction either.

# Posted by Dave Winer on 12/10/05; 1:27:55 PM - --


Need help with icons for wordPress.root

I've given a lot of support for the OPML Editor, and all the while largely have been overlooking the fact that it's an open source project, and that support is supposed to be flowing all over the place, not just from me to others, occasionally I should be able to ask for support, and maybe more than just occasionally if the project is actually going to become a community thing.

So let's give this a try. It's not something I know how to do, and it's not mission-critical, or even urgent, it would just be a nice thing to have.

The icons are in wordPressNodeTypes.metaWeblogPost in wordPress.root. They determine what the icon next to a blog post looks like. Clearly the icon you see is the wrong icon. The right one would look like the WordPress icon you see in the address bar of the browser when you're looking at a WordPress site.

To make the change, you need to be able to edit resources on the Mac, and bitmaps on Windows. I can't tell you how to do either, I used to know how to do the Mac part, but that was a long time ago, and the art has changed. If you want to help, you either have to know how to do it, or know how to find out how to do it. Maybe you can do half the job and someone else can do the other half. If so, great. Let me know when both halfs are done.

BTW, when you're making a feature request, it would be helpful to provide this level of information. More likely to get done if you think through how you'd like it to work.

Remember, this is supposed to be a community thing, it's not a commercial project. Good luck, and thanks in adavance!

# Posted by Dave Winer on 12/5/05; 8:42:53 PM - --


Connecting the OPML Editor to categories on wordpress.com

I'm trying to get a connection between categories in the OPML Editor and categories in a WordPress weblog.

The key connector is this MetaWeblog API call.

I have a glue script written that calls it for scripting.wordpress.com (which has three categoreis defined) but the endpoint returns an empty response (not valid XML-RPC).

I'm pretty much flying blind here, so if anyone has any theories about this, I'm anxious to get this working.

I've uploaded a copy of the glue script here.

# Posted by Dave Winer on 12/3/05; 11:56:56 PM - --


Almost embarassed to admit this

But I've never been able to figure out how WEP security keys actually work. Now I have to figure it out, no choice about it.

I have an Airport Express, suppose the password is geektrain (it's actually something else, of course).

I can access the router from a Mac by typing in the password as g-e-e-k-t-r-a-i-n. It works fine.

But I can't figure out what I have to type into the password box for a Windows machine.

I've tried the same experiment with a Netgear router, and couldn't get either a Windows or a Mac machine to work with the password. They both work just fine when there's no password.

So what's the trick?

Where's the howto everyone else knows about but me?

# Posted by Dave Winer on 12/1/05; 7:46:46 PM - --