A simple enhancement to the XML-RPC server
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
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
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?
# Posted by Dave Winer on 3/3/06; 6:28:33 PM - --
Web-based small business accounting app?
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
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 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
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
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
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 - --