"
},
"2": {
"text": ""
}
}
}
}
},
"1": {
"text": "I forgot I had to move over webapp.viewmenu and a few other bits. But it quickly works, and looks okay. There's some stuff that's out of whack but nothing too terrible.",
"created": "Thu, 15 Mar 2012 18:14:50 GMT",
"pgfnum": "6429"
}
}
},
"4": {
"text": "radio2 website",
"created": "Thu, 15 Mar 2012 18:04:52 GMT",
"pgfnum": "6424",
"subs": {
"0": {
"text": "This is what I'm pulling out of its template.",
"created": "Thu, 15 Mar 2012 18:04:56 GMT",
"pgfnum": "6425",
"subs": {
"0": {
"text": "<%webApp.viewHeadIncludes () + string (webApp.data.styles)%>"
},
"1": {
"text": ""
}
}
}
}
},
"1": {
"text": "Same result as with ServerMonitor. Everything looks okay, there are glitches. Will mop up later.",
"created": "Thu, 15 Mar 2012 18:22:20 GMT",
"pgfnum": "6430"
}
}
},
"5": {
"text": "river2 website",
"created": "Thu, 15 Mar 2012 18:22:40 GMT",
"pgfnum": "6431",
"subs": {
"0": {
"text": "This is what I'm pulling out of its template.",
"created": "Thu, 15 Mar 2012 18:22:44 GMT",
"pgfnum": "6432",
"subs": {
"0": {
"text": ""
},
"1": {
"text": "<%webApp.viewHeadIncludes ()%>"
},
"2": {
"text": ""
}
}
},
"1": {
"text": "Everything's cool!",
"created": "Thu, 15 Mar 2012 18:35:57 GMT",
"pgfnum": "6434"
}
}
},
"6": {
"text": "Parts",
"created": "Thu, 15 Mar 2012 17:49:50 GMT",
"pgfnum": "6416",
"subs": {
"0": {
"text": "opmlEditor.website.[\"#template\"]",
"created": "Thu, 15 Mar 2012 17:49:51 GMT",
"pgfnum": "6417"
},
"1": {
"text": "webApp.data.headIncludesBootstrap2"
},
"2": {
"text": "opmlEditor.viewMenu"
},
"3": {
"text": "serverMonitorWebsite.[\"#template\"]"
},
"4": {
"text": "river2website.[\"#template\"]",
"created": "Thu, 15 Mar 2012 17:49:51 GMT",
"pgfnum": "6417"
},
"5": {
"text": "radio2website.[\"#template\"]",
"created": "Thu, 15 Mar 2012 17:49:51 GMT",
"pgfnum": "6417"
}
}
}
}
},
"3": {
"text": "Bring back headerfont, headerfontsize",
"created": "Thu, 15 Mar 2012 14:05:01 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "6397",
"type": "blogpost",
"subs": {
"0": {
"text": "These were actually used in doing text versions of header graphics. When I removed them, I broke a feature some people were probably using.",
"created": "Thu, 15 Mar 2012 14:05:08 GMT",
"pgfnum": "6398"
},
"1": {
"text": "Parts",
"created": "Thu, 15 Mar 2012 14:05:27 GMT",
"pgfnum": "6399",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser",
"created": "Thu, 15 Mar 2012 14:05:28 GMT",
"pgfnum": "6400"
}
}
}
}
},
"4": {
"text": "Move to Bootstrap 2, Day 3",
"created": "Thu, 15 Mar 2012 13:34:43 GMT",
"pgfnum": "6393",
"type": "blogpost",
"subs": {
"0": {
"text": "
In the future, which could have been the last three years, the campaign will be a 365-days-a-year affair, and not just one year out of four, every year. Hopefully this is something the President now understands. You have no power in Washington if you aren't working with, moving and being moved by the people who voted you into office.",
"created": "Thu, 08 Mar 2012 16:41:25 GMT",
"pgfnum": "13132"
}
}
},
"6": {
"text": "Part5",
"created": "Sat, 10 Mar 2012 16:27:06 GMT",
"pgfnum": "6227",
"subs": {
"0": {
"text": "Further, the people have political business all the time too. We need leadership and we need to influence. The Internet is the most powerful tool for organizing we have today. If you're President you can't turn off your Internet connection. Hopefully he understands why that no longer works, if it ever did.",
"created": "Thu, 08 Mar 2012 16:42:34 GMT",
"pgfnum": "13133"
},
"1": {
"text": "The President is a campaigner. And while he or she is in office, the campaign never stops.",
"created": "Thu, 08 Mar 2012 16:43:44 GMT",
"pgfnum": "13134"
}
}
}
}
}
}
},
"21": {
"text": "3/9/12 by DW",
"created": "Fri, 09 Mar 2012 15:04:49 GMT",
"pgfnum": "6114",
"subs": {
"0": {
"text": "Another Radio2 fix",
"created": "Sat, 10 Mar 2012 00:38:06 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "6184",
"type": "blogpost",
"subs": {
"0": {
"text": "It's having problems with posts without links, esp with the new URL-shortener. I think I caught all the cases that matter, and now posting text only items should work. Knock wood.",
"created": "Sat, 10 Mar 2012 00:48:47 GMT",
"pgfnum": "6187"
},
"1": {
"text": "Parts",
"created": "Sat, 10 Mar 2012 00:38:08 GMT",
"pgfnum": "6185",
"subs": {
"0": {
"text": "radio2Suite.shortenPostLink"
},
"1": {
"text": "radio2Suite.main",
"created": "Sat, 10 Mar 2012 00:38:09 GMT",
"pgfnum": "6186"
},
"2": {
"text": "radio2Suite.newPost"
}
}
}
}
},
"1": {
"text": "Radio2 counts problem",
"created": "Fri, 09 Mar 2012 22:52:42 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "6163",
"type": "blogpost",
"subs": {
"0": {
"text": "Counts seem to mostly be working now in Radio2, but I have spotted a problem.",
"created": "Fri, 09 Mar 2012 22:52:47 GMT",
"pgfnum": "6164"
},
"1": {
"text": "I posted an item that didn't have a link. It's count should be zero -- but it's actually 17970.",
"created": "Fri, 09 Mar 2012 22:53:08 GMT",
"pgfnum": "6165"
},
"2": {
"text": "Let's find out why it's doing it.",
"created": "Fri, 09 Mar 2012 22:53:41 GMT",
"pgfnum": "6166"
},
"3": {
"text": "It turns out it does have a shortened link, http://37.blork.ly/ but the longUrl is the empty string.",
"created": "Fri, 09 Mar 2012 23:02:57 GMT",
"pgfnum": "6169"
},
"4": {
"text": "The URL shortener is saying it had that many hits, so the problem is not wholly in Radio2.",
"created": "Fri, 09 Mar 2012 23:47:17 GMT",
"pgfnum": "6181"
},
"5": {
"text": "
Mark Ott writes: \"Why won't they let us hand them our money? I'd gladly pay.\"",
"created": "Fri, 09 Mar 2012 19:37:35 GMT",
"pgfnum": "6140"
},
"1": {
"text": "This got me thinking. What if there were a Kickstarter for depositing money in escrow, ready to be claimed by a specific company, if they are willing to sell us something that right now they are not willing to sell us.",
"created": "Fri, 09 Mar 2012 19:37:49 GMT",
"pgfnum": "6141"
},
"2": {
"text": "So we could have a page for Twitter. If you agree that Twitter should become a tech company and sell us products, instead of sell us to marketers, that'll cost you $50. You enter your credit card info, and when Twitter accepts the offer, they get the money, and you get a year of use of the new Twitter (with some bennie for having the guts to step up and make the first move).",
"created": "Fri, 09 Mar 2012 19:38:26 GMT",
"pgfnum": "6142"
},
"3": {
"text": "I've had the same thought for movie companies. If you watch a movie on BitTorrent that you thought was good, you could put $10 in escrow for the movie production company (sorry theater owners). When they want to claim it, all they have to do is promise not to sue you for enjoying their movie on your terms.",
"created": "Fri, 09 Mar 2012 19:39:38 GMT",
"pgfnum": "6143"
},
"4": {
"text": "The Twitter site might generate so much money that it could itself be a startup that is acquired by Twitter. Of course we'd use Twitter to spread the word about this new site.",
"created": "Fri, 09 Mar 2012 19:40:34 GMT",
"pgfnum": "6144"
},
"5": {
"text": "Oh the humanity!",
"created": "Fri, 09 Mar 2012 19:41:10 GMT",
"pgfnum": "6145"
}
}
},
"6": {
"text": "If I were Twitter",
"created": "Fri, 09 Mar 2012 19:10:45 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"fldisquscomments": "true",
"pgfnum": "6129",
"type": "blogpost",
"subs": {
"0": {
"text": "
I'd do what Apple does. Sell my product to customers. For a lot of money.",
"created": "Fri, 09 Mar 2012 19:10:48 GMT",
"pgfnum": "6130"
},
"1": {
"text": "I think they'd make a huge amount of money, on a recurring basis. And they'd be able to fund a lot of development. We could have a lot more than what we have right now. Twitter could fan out into being the Internet. This was the promise of Twitter at the beginning, until the company started to fight the natural inclination of a service like Twitter to fill every nook and cranny of the tech world. Instead, they fought to keep it small, so they could keep it under control and so (I guess) they could make money. But they had no ideas for what to do next.",
"created": "Fri, 09 Mar 2012 19:11:03 GMT",
"pgfnum": "6131"
},
"2": {
"text": "But they would have to make themselves smaller, instead of making the product smaller. Sell us our handles for $50 a year. But don't do that until you can offer premium stuff that gets people excited. A little money is no big deal if you've got something that excites us. Apple has proven this over and over.",
"created": "Fri, 09 Mar 2012 19:13:37 GMT",
"pgfnum": "6132"
},
"3": {
"text": "Instead of being a marketing company, selling us -- be a tech company and sell to us.",
"created": "Fri, 09 Mar 2012 19:21:35 GMT",
"pgfnum": "6135"
},
"4": {
"text": "Twitter still has a product a lot of people want. That might not last forever. Strike while the iron is hot. Make hay while the sun shines. Yadda yadda.",
"created": "Fri, 09 Mar 2012 19:14:42 GMT",
"pgfnum": "6133"
}
}
},
"7": {
"text": "Nodes with types in directories",
"created": "Fri, 09 Mar 2012 15:27:57 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "6118",
"type": "blogpost",
"subs": {
"0": {
"text": "Ted Howard found a problem when he tried to define a nodetype with a template. When the node appears in a directory it's not linked to anything. This is because it is not any type we know of and the directory displayer was told to consider these things as text, not really nodes. Ted thinks it should be linked, and I agree.",
"created": "Fri, 09 Mar 2012 15:28:03 GMT",
"pgfnum": "6119"
},
"1": {
"text": "In html.directory.viewDirectory there's a branch in its addItem routine that deals with nodes that have a type attribute. We pull out some we have special code for and then, if there's a callback defined to render the nodetype, we hot it up. The change required here would be to remove the requirement that we have a callback defined. Just hot it up if there's a type attribute on the node. Period. That's what I'm doing, let's see if it causes any problems.",
"created": "Fri, 09 Mar 2012 15:32:07 GMT",
"pgfnum": "6122"
},
"2": {
"text": "Parts",
"created": "Fri, 09 Mar 2012 15:29:46 GMT",
"pgfnum": "6120",
"subs": {
"0": {
"text": "html.directory.viewDirectory",
"created": "Fri, 09 Mar 2012 15:30:25 GMT",
"pgfnum": "6121"
}
}
}
}
},
"8": {
"text": "Thinking about macros",
"created": "Fri, 09 Mar 2012 15:04:50 GMT",
"pgfnum": "6115",
"type": "blogpost",
"subs": {
"0": {
"text": "We can't now use macros to add rules to outlines because macros are evaluated long after the outlines are rendered.",
"created": "Fri, 09 Mar 2012 15:05:02 GMT",
"pgfnum": "6116"
}
}
}
}
},
"22": {
"text": "3/8/12 by DW",
"created": "Thu, 08 Mar 2012 15:02:49 GMT",
"pgfnum": "6092",
"subs": {
"0": {
"text": "Defining the \"main\" template",
"created": "Thu, 08 Mar 2012 15:02:50 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "6093",
"type": "blogpost",
"subs": {
"0": {
"text": "possibly the source of the problem we've been tracking down.",
"created": "Thu, 01 Mar 2012 22:24:09 GMT",
"pgfnum": "5924"
}
}
},
"1": {
"text": "Experiment",
"created": "Thu, 01 Mar 2012 22:25:35 GMT",
"pgfnum": "5929",
"subs": {
"0": {
"text": "Before fixing the bug, I'm going to run a utility script that tells me which feeds have ctConsecutiveReadErrors > 0 and what the numbers are.",
"created": "Thu, 01 Mar 2012 22:25:38 GMT",
"pgfnum": "5930"
},
"1": {
"text": "Are you sitting down? There were 631 of them. Some of them had as many as 91 errors.",
"created": "Thu, 01 Mar 2012 22:38:07 GMT",
"pgfnum": "5931"
}
}
},
"2": {
"text": "Parts",
"created": "Thu, 01 Mar 2012 22:24:29 GMT",
"pgfnum": "5925",
"subs": {
"0": {
"text": "river2suite.readFeed",
"created": "Thu, 01 Mar 2012 22:24:32 GMT",
"pgfnum": "5926"
},
"1": {
"text": "river2Suite.utilities.zeroConsecutiveErrors"
},
"2": {
"text": "river2Suite.utilities.listFeedsWithErrors"
},
"3": {
"text": "river2Suite.background.everyMinute"
}
}
}
}
},
"2": {
"text": "New month",
"created": "Thu, 01 Mar 2012 18:32:59 GMT",
"pgfnum": "5917",
"type": "blogpost",
"subs": {
"0": {
"text": "Archived February's worknotes.",
"created": "Thu, 01 Mar 2012 18:33:01 GMT",
"pgfnum": "5918"
},
"1": {
"text": "A new month begins.",
"created": "Thu, 01 Mar 2012 18:33:12 GMT",
"pgfnum": "5919"
}
}
}
}
}
}
},
"15": {
"created": "Wed, 01 Feb 2012 14:13:20 GMT",
"name": "february2012",
"pgfnum": "4747",
"text": "February 2012",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2012/03/01/archive075.opml",
"subs": {
"0": {
"text": "2/29/12 by DW",
"created": "Wed, 29 Feb 2012 22:22:19 GMT",
"pgfnum": "5900",
"subs": {
"0": {
"text": "River2 feeds disappearing",
"created": "Wed, 29 Feb 2012 22:22:20 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "5901",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm recovering from a cold, so I'm proceeding very carefully as this is complex code, and mistakes here tend to multiply and stay hidden.",
"created": "Wed, 29 Feb 2012 22:22:34 GMT",
"pgfnum": "5902"
},
"1": {
"text": "Narrative",
"created": "Wed, 29 Feb 2012 22:57:39 GMT",
"pgfnum": "5908",
"subs": {
"0": {
"text": "AC points out that his River2 trash table is filled with feeds. But that's not the problem, it's a symptom. The problem is the feeds are gone from the main feeds table so they're not being read when we scan. Now that he mentioned the problem I see the same thing in my main River2 installation.",
"created": "Wed, 29 Feb 2012 22:22:59 GMT",
"pgfnum": "5903"
},
"1": {
"text": "I wrote a script to figure out which feeds are missing from daveriver.scripting.com, and there are 99 of them. Ouch. Some very important feeds. And I realize I haven't seen updates from them in a while, but it hasn't been that long. So whatever happened to make it forget happened fairly recently.",
"created": "Wed, 29 Feb 2012 22:24:16 GMT",
"pgfnum": "5904"
},
"2": {
"text": "I would have thought the missing feeds would re-appear immediately since they didn't disappear from my OPML file, but that's not the way the code is written. I've changed it, so that even if a problem like this shows up in the future, it will self-repair. And also we should see the unsubbing action in the River2 log.",
"created": "Wed, 29 Feb 2012 22:25:41 GMT",
"pgfnum": "5905"
},
"3": {
"text": "So I made the change in river2suite.readList, and the number of feeds in the main feed table went from 611 to 813. There must have been missing feeds from other lists as well.",
"created": "Wed, 29 Feb 2012 23:00:57 GMT",
"pgfnum": "5911"
}
}
},
"2": {
"text": "Net-net",
"created": "Wed, 29 Feb 2012 23:04:52 GMT",
"pgfnum": "5912",
"subs": {
"0": {
"text": "This is not the fix, it's a workaround that should be permanent. The presence of a feed in a list should cause it to be read whether or not there was a problem somewhere else. But we're still looking for the reason the feeds were removed from the main feeds table.",
"created": "Wed, 29 Feb 2012 23:04:56 GMT",
"pgfnum": "5913"
},
"1": {
"text": "Watch the River2 log and see if you see messages about garbage collection. Take screen shots and report on the River2 list.",
"created": "Wed, 29 Feb 2012 23:07:33 GMT",
"pgfnum": "5914"
}
}
},
"3": {
"text": "Parts",
"created": "Wed, 29 Feb 2012 22:57:48 GMT",
"pgfnum": "5909",
"subs": {
"0": {
"text": "river2Suite.readList",
"created": "Wed, 29 Feb 2012 22:57:50 GMT",
"pgfnum": "5910"
}
}
}
}
},
"1": {
"text": "Feeds that were missing",
"created": "Wed, 29 Feb 2012 22:29:32 GMT",
"pgfnum": "5906",
"type": "blogpost",
"subs": {
"0": {
"text": "
",
"created": "Sun, 12 Feb 2012 02:11:47 GMT",
"pgfnum": "5227"
}
}
},
"5": {
"text": "Parts",
"created": "Sun, 12 Feb 2012 01:02:56 GMT",
"pgfnum": "5215",
"subs": {
"0": {
"text": "worldOutlineSuite.roots.viewRoots"
}
}
}
}
},
"1": {
"text": "Multiple worldoutline servers in editor",
"created": "Sat, 11 Feb 2012 19:10:30 GMT",
"pgfnum": "5204",
"type": "blogpost",
"subs": {
"0": {
"text": "I want the OPML Editor to communicate with multiple worldoutline servers.",
"created": "Sat, 11 Feb 2012 19:10:56 GMT",
"pgfnum": "5205"
},
"1": {
"text": "How to test",
"created": "Sun, 12 Feb 2012 00:34:12 GMT",
"pgfnum": "5206",
"subs": {
"0": {
"text": "This set of changes prepares the workstation database. You shouldn't see any functionality change, but things should continue to work. You should be able to open outlines from your Roots page. When you save, the changes should be reflected in the server's version of the outline.",
"created": "Sun, 12 Feb 2012 00:32:45 GMT",
"pgfnum": "5204"
},
"1": {
"text": "The changes on the server side will come Sunday or Monday.",
"created": "Sun, 12 Feb 2012 00:33:55 GMT",
"pgfnum": "5205"
}
}
},
"2": {
"text": "Design",
"created": "Sat, 11 Feb 2012 19:11:12 GMT",
"pgfnum": "5206",
"subs": {
"0": {
"text": "The prefs in the browser interface will support a single server. However, if you click the Edit icon in another Roots page on another server, you will be prompted for a password, and if it matches, the outline will open in your local OPML Editor and you will be able to edit it.",
"created": "Sat, 11 Feb 2012 19:11:18 GMT",
"pgfnum": "5207"
},
"1": {
"text": "Locally there's a new table, user.opmleditor.worldoutline.servers. One sub-table for each server. Two sub-tables for each, prefs and stats.",
"created": "Sat, 11 Feb 2012 19:11:43 GMT",
"pgfnum": "5208"
},
"2": {
"text": "New pref, user.opmleditor.worldoutline.currentserver, which is the domain name of the current server.",
"created": "Sat, 11 Feb 2012 19:13:57 GMT",
"pgfnum": "5212"
},
"3": {
"text": "Modify all opmleditor.worldoutline.xxx routines to work with the new structure.",
"created": "Sat, 11 Feb 2012 19:13:34 GMT",
"pgfnum": "5210"
}
}
},
"3": {
"text": "Work",
"created": "Sat, 11 Feb 2012 21:40:04 GMT",
"pgfnum": "5204",
"subs": {
"0": {
"text": "Converted all the routines that access the server data structures.",
"created": "Sat, 11 Feb 2012 21:40:06 GMT",
"pgfnum": "5205"
},
"1": {
"text": "This is the core routine that makes it easier...",
"created": "Sun, 12 Feb 2012 00:36:18 GMT",
"pgfnum": "5207",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.getServerInfo (@server, @username, @password) //2/11/12 by DW"
}
}
}
}
},
"4": {
"text": "Parts",
"created": "Sat, 11 Feb 2012 20:47:14 GMT",
"pgfnum": "5214",
"subs": {
"0": {
"text": "opmlEditor.utilities.convertWorldOutlineServersTable",
"created": "Sat, 11 Feb 2012 20:47:17 GMT",
"pgfnum": "5215"
},
"1": {
"text": "opmlEditor.worldOutline.init",
"created": "Sat, 11 Feb 2012 21:27:48 GMT",
"pgfnum": "5216"
},
"2": {
"text": "opmlEditor.worldOutline.getServerInfo"
},
"3": {
"text": "opmlEditor.worldOutline.getUserPrefs"
},
"4": {
"text": "opmlEditor.worldOutline.archiveSubOutline"
},
"5": {
"text": "opmlEditor.worldOutline.buttons.archive.[\"00003000\\tRSS+\"]",
"created": "Sat, 11 Feb 2012 21:54:44 GMT",
"pgfnum": "5207"
},
"6": {
"text": "opmlEditor.worldOutline.getRootsMenu"
},
"7": {
"text": "opmlEditor.worldOutline.openRootsPage"
},
"8": {
"text": "opmlEditor.worldOutline.openTemplate"
},
"9": {
"text": "opmlEditor.worldOutline.openWorkspace"
},
"10": {
"text": "opmlEditor.worldOutline.saveGlossary"
},
"11": {
"text": "opmlEditor.worldOutline.saveTemplate"
},
"12": {
"text": "opmlEditor.worldOutline.saveWorkspace"
},
"13": {
"text": "opmlEditor.worldOutline.validatePrefs",
"created": "Sat, 11 Feb 2012 22:08:57 GMT",
"pgfnum": "5210"
},
"14": {
"text": "opmlEditor.website.openGlossary"
},
"15": {
"text": "opmlEditor.data.outlines.prefs"
},
"16": {
"text": "opmlEditor.worldOutline.setupPrefs",
"created": "Sat, 11 Feb 2012 23:52:46 GMT",
"pgfnum": "5211"
},
"17": {
"text": "opmlEditor.everyMinute"
}
}
}
}
},
"2": {
"text": "Starting second worldoutline server",
"created": "Sat, 11 Feb 2012 14:55:49 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "5164",
"type": "blogpost",
"subs": {
"0": {
"text": "
It quickly gets out of hand with the search engines. I was including my archive of pieces from Scripting News in my outline, and found that when I searched looking for an old piece I wrote, Google would for some reason favor the worldoutline version. The comments are on the scripting.com version. And the link I want it to remember is there, not here.",
"created": "Fri, 10 Feb 2012 18:40:59 GMT",
"pgfnum": "5144"
},
"3": {
"text": "We're still at the beginning, but things are starting to get pretty smooth and soon we'll have more newbies. I'd like to suggest we clean up of our outlines, trim the things that aren't original content. I think our servers will be happier, run better, faster -- and the web will benefit more from the existence of these outlines.",
"created": "Fri, 10 Feb 2012 18:42:00 GMT",
"pgfnum": "5145"
},
"4": {
"text": "The latest change that has us return 404 when a branch of the outline is gone, should help the search engines get in sych, where before they had to guess that 500 return meant the page wasn't coming back. Better to play by the rules of the web.",
"created": "Fri, 10 Feb 2012 18:43:40 GMT",
"pgfnum": "5147"
},
"5": {
"text": "If you have comments please post them on the worldoutline mail list.",
"created": "Fri, 10 Feb 2012 18:43:12 GMT",
"pgfnum": "5146"
}
}
},
"1": {
"text": "Integrating rules with Scripting2",
"created": "Thu, 09 Feb 2012 22:18:55 GMT",
"pgfnum": "5093",
"type": "blogpost",
"subs": {
"0": {
"text": "Added rules support into scripting2.root.",
"created": "Fri, 10 Feb 2012 17:24:38 GMT",
"pgfnum": "5135"
},
"1": {
"text": "Take a look at your style sheet in the Scripting2 sub-menu of the Tools menu. The names for things are different in the rules-based story rendering. View source of a story to see what we generate.",
"created": "Fri, 10 Feb 2012 17:25:06 GMT",
"pgfnum": "5137"
},
"2": {
"text": "For rules I used the default rules for a blogpost in worldOutline.root.",
"created": "Fri, 10 Feb 2012 17:25:53 GMT",
"pgfnum": "5140"
},
"3": {
"text": "Parts",
"created": "Thu, 09 Feb 2012 22:19:04 GMT",
"pgfnum": "5095",
"subs": {
"0": {
"text": "scripting2Suite.data.rules",
"created": "Thu, 09 Feb 2012 22:19:02 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "5094"
},
"1": {
"text": "scripting2Suite.server.buildStoryPage"
}
}
}
}
},
"2": {
"text": "Return 404 when the page is gone",
"created": "Fri, 10 Feb 2012 02:30:05 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "5102",
"type": "blogpost",
"subs": {
"0": {
"text": "When you can't find an object don't return code 200 or 500, return 404.",
"created": "Fri, 10 Feb 2012 02:28:51 GMT",
"pgfnum": "5097"
},
"1": {
"text": "This will let the search engines adjust and stop querying pages that aren't there.",
"created": "Fri, 10 Feb 2012 02:29:18 GMT",
"pgfnum": "5098"
},
"2": {
"text": "An example of a page that doesn't exist on my server.",
"created": "Fri, 10 Feb 2012 15:51:24 GMT",
"pgfnum": "5119"
},
"3": {
"text": "A new user-level worldoutline pref, lets you set the URL of your 404 page. Here's mine (just as a demo, create your own if you want a custom 404 page). If you don't set the pref, you'll get a standard 404 page.",
"created": "Fri, 10 Feb 2012 17:00:32 GMT",
"pgfnum": "5132"
},
"4": {
"text": "Your custom page will receive a parameter on the URL, <%message%> which is the error detected by the worldoutline server software.",
"created": "Fri, 10 Feb 2012 17:02:00 GMT",
"pgfnum": "5133"
},
"5": {
"text": "Also had to unwind a false-start I had made while implementing rules. I had taken an adrrules parameter off the walk routine. It's still not needed but there's no need to make this change right now.",
"created": "Fri, 10 Feb 2012 16:09:57 GMT",
"pgfnum": "5122"
},
"6": {
"text": "Parts",
"created": "Fri, 10 Feb 2012 02:29:33 GMT",
"pgfnum": "5099",
"subs": {
"0": {
"text": "html.directory.walk",
"created": "Fri, 10 Feb 2012 02:29:34 GMT",
"pgfnum": "5100"
},
"1": {
"text": "worldOutlineSuite.responder.respond",
"created": "Fri, 10 Feb 2012 02:29:41 GMT",
"pgfnum": "5101"
},
"2": {
"text": "worldOutlineSuite.initUser"
},
"3": {
"text": "worldOutlineSuite.data.prefsOutline"
}
}
}
}
},
"3": {
"text": "Move redirector site",
"created": "Fri, 10 Feb 2012 13:33:16 GMT",
"pgfnum": "5103",
"type": "blogpost",
"subs": {
"0": {
"text": "I have it on the same server as I'm running my worldoutline on and it's getting a shitload of traffic from redirected domains. Esp the RSS feeds. The cost of having done Rebooting the News and Morning Coffee Notes. There are all these subscribers out there checking every five minutes if there's going to be another podcast. Oy!",
"created": "Fri, 10 Feb 2012 13:33:22 GMT",
"pgfnum": "5104"
},
"1": {
"text": "I have a server, 173.203.65.251, that's not doing anything, so let's move the redirector app over there.",
"created": "Fri, 10 Feb 2012 13:34:20 GMT",
"pgfnum": "5105"
},
"2": {
"text": "Domains that moved",
"created": "Fri, 10 Feb 2012 13:55:52 GMT",
"pgfnum": "5106",
"subs": {
"0": {
"text": "bloggercon.org, www.bloggercon.org",
"created": "Fri, 10 Feb 2012 13:55:55 GMT",
"pgfnum": "5107"
},
"1": {
"text": "frontiernews.org, www.frontiernews.org",
"created": "Fri, 10 Feb 2012 13:57:41 GMT",
"pgfnum": "5109"
},
"2": {
"text": "monster2.scripting.com",
"created": "Fri, 10 Feb 2012 13:58:57 GMT",
"pgfnum": "5112"
},
"3": {
"text": "opml.org, www.opml.org",
"created": "Fri, 10 Feb 2012 13:59:09 GMT",
"pgfnum": "5113"
},
"4": {
"text": "outliners.com, www.outliners.com",
"created": "Fri, 10 Feb 2012 14:00:17 GMT",
"pgfnum": "5114"
},
"5": {
"text": "rebootnews.com, www.rebootnews.com",
"created": "Fri, 10 Feb 2012 14:01:30 GMT",
"pgfnum": "5115"
},
"6": {
"text": "scripting-news.com, www.scripting-news.com",
"created": "Fri, 10 Feb 2012 14:02:56 GMT",
"pgfnum": "5116"
},
"7": {
"text": "xml-rpc.com, www.xml-rpc.com",
"created": "Fri, 10 Feb 2012 14:04:12 GMT",
"pgfnum": "5117"
},
"8": {
"text": "xml-rpc.org, www.xml-rpc.org",
"created": "Fri, 10 Feb 2012 14:04:12 GMT",
"pgfnum": "5117"
},
"9": {
"text": "xmlrpc.com, www.xmlrpc.com",
"created": "Fri, 10 Feb 2012 14:07:10 GMT",
"pgfnum": "5118"
}
}
}
}
}
}
},
"18": {
"text": "2/9/12 by DW",
"created": "Thu, 09 Feb 2012 13:44:13 GMT",
"pgfnum": "4995",
"subs": {
"0": {
"text": "First release of Rules code",
"created": "Thu, 09 Feb 2012 21:37:59 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "5076",
"type": "blogpost",
"subs": {
"0": {
"text": "Things went a lot faster today than I thought it would, so I'm now ready to release the parts for rules-based outline rendering.",
"created": "Thu, 09 Feb 2012 21:38:07 GMT",
"pgfnum": "5077"
},
"1": {
"text": "
"
}
}
},
"3": {
"text": "Where did the wedges go?",
"subs": {
"0": {
"text": "
If you weren't one of the BigCo's the distributors would play games with your money. Eventually the games got so sophisticated, they had it worked out so you owed them more money than you made, so there was no way to get ahead. Unless you were one of the Big Ones. But even they hit the wall, and the software-in-a-box business went by the wayside.",
"created": "Tue, 29 Nov 2011 14:37:22 GMT",
"pgfnum": "11184"
},
"5": {
"text": "A few people got rich from that. Yes, it was a bubble. What you got paid for was not your ability to make money. But, rather the ability of the VCs to sell Wall Street on whatever it is they sold them on back then. We were part of the whole system that eventually hit the wall with Credit Default Swaps and huge bailouts and unrepentant bankers. There was a trickle-down. The closer you were to someone who actually made something, the less you got paid. You read that right, the less you got paid. I'll repeat it. If you made something you got paid less.",
"created": "Tue, 29 Nov 2011 14:38:23 GMT",
"pgfnum": "11185"
},
"6": {
"text": "There was a lot of risk though, and that's what capitalism rewards. A lot of my contemporaries went splat, and had to take jobs working for a salary with no hope of getting rich. That was also a big part of the Silicon Valley reality. But they had jobs, and they paid well, and that's what most people want even if they dream about getting rich.",
"created": "Tue, 29 Nov 2011 14:40:10 GMT",
"pgfnum": "11186"
},
"7": {
"text": "Mike Arrington is great at getting a cross-blog discussion going. There's no doubt that his personal story is the honest to god truth. He did work hard. And often with no hope of getting anything back. He did love what he did and he was good at it. He had the chance to rake in the big bucks, and he did. And no one can blame him for that. It's the right thing to do, imho. :-)",
"created": "Tue, 29 Nov 2011 14:41:07 GMT",
"pgfnum": "11187"
},
"8": {
"text": "A lot of young people are starry-eyed over the idea of being an entrepreneur. They think there's glory and wealth in their future. I don't think so, not for most of them. The bubbles have been getting bigger all the time. I guess it takes a bigger bubble to get rid of the headache caused by the previous ones. I don't know. But just like the mortgage industry needed unqualified borrowers to take their junk mortgages, so does the new VC industry, such as it is, need a huge influx of young people willing to drop out of school, and work their butts off. And most of them will go splat. It's a foregone conclusion.",
"created": "Tue, 29 Nov 2011 14:50:53 GMT",
"pgfnum": "11188"
},
"9": {
"text": "I look at some of the kids who see themselves as entrepreneurs and think to myself there really aren't that many real honest to goodness people who are ready to do it. And I think that's a good thing! It's not a very nice lifestyle. And getting rich solves nothing, if you're one of the 1 percent that actually gets there. And what if you aren't? What have you got to show for it? You're a college dropout with nothing. If you go that route you have no one to blame but yourself if you go splat.",
"created": "Tue, 29 Nov 2011 14:52:58 GMT",
"pgfnum": "11189"
},
"10": {
"text": "I'm afraid the adults are not levelling with the young folk. And we should be. Even the universities glorify the idea of being the next Zuck. That's like betting your future on winning the lottery. And you're not going to win the lottery. And you're not the next Zuck.",
"created": "Tue, 29 Nov 2011 14:54:02 GMT",
"pgfnum": "11190"
}
}
}
}
},
"3": {
"text": "Lansing"
}
}
},
"5": {
"text": "Minnesota"
},
"6": {
"text": "Missouri"
},
"7": {
"text": "Ohio"
},
"8": {
"text": "West Virginia"
},
"9": {
"text": "Wisconsin"
}
}
},
"4": {
"text": "Mountains",
"subs": {
"0": {
"text": "Colorado"
},
"1": {
"text": "Idaho"
},
"2": {
"text": "Montana"
},
"3": {
"text": "Utah"
},
"4": {
"text": "Wyoming"
}
}
},
"5": {
"text": "New England",
"subs": {
"0": {
"text": "Connecticut"
},
"1": {
"text": "Maine"
},
"2": {
"text": "Massachusetts"
},
"3": {
"text": "New Hampshire"
},
"4": {
"text": "Rhode Island"
},
"5": {
"text": "Vermont"
}
}
},
"6": {
"text": "South",
"subs": {
"0": {
"text": "Alabama"
},
"1": {
"text": "Arkansas"
},
"2": {
"text": "Florida",
"type": "link",
"url": "http://hosting.opml.org/dave/florida.opml",
"subs": {
"0": {
"text": "Miami"
},
"1": {
"text": "Jacksonville",
"subs": {
"0": {
"text": "Amelia Island"
},
"1": {
"text": "St Augustine",
"subs": {
"0": {
"text": "Anastasia Island"
},
"1": {
"text": "Crescent Beach"
}
}
}
}
},
"2": {
"text": "Daytona Beach"
},
"3": {
"text": "Orlando"
},
"4": {
"text": "Tampa"
},
"5": {
"text": "Gainesville"
},
"6": {
"text": "Talahassee"
},
"7": {
"text": "Key West"
}
}
},
"3": {
"text": "Georgia"
},
"4": {
"text": "Louisiana"
},
"5": {
"text": "Mississippi"
},
"6": {
"text": "North Carolina"
},
"7": {
"text": "South Carolina"
},
"8": {
"text": "Tennessee"
},
"9": {
"text": "Virginia"
}
}
},
"7": {
"text": "Southwest",
"subs": {
"0": {
"text": "Arizona"
},
"1": {
"text": "New Mexico"
},
"2": {
"text": "Texas",
"subs": {
"0": {
"text": "Austin"
},
"1": {
"text": "Houston"
},
"2": {
"text": "Dallas"
},
"3": {
"text": "Waco"
}
}
}
}
},
"8": {
"text": "Notes",
"subs": {
"0": {
"text": "http://dropbox.scripting.com/dave/worldOutline/rulesTest1.opml"
},
"1": {
"text": "http://127.0.0.1:5337/wo/?url=http://dropbox.scripting.com/dave/worldOutline/rulesTest1.opml"
},
"2": {
"text": "http://127.0.0.1:5337/worldoutline/tmp?url=http://dropbox.scripting.com/dave/worldOutline/rulesTest1.opml"
}
}
}
}
}
}
},
"2": {
"text": "And if you want to change them, you can!",
"subs": {
"0": {
"text": "No wedges. -- Not clear how we can do without wedges if we don't allow expanding/collapsing.",
"created": "Sat, 04 Feb 2012 16:38:43 GMT",
"pgfnum": "4906"
},
"2": {
"text": "3. Paragraph-level permalinks.",
"created": "Sat, 04 Feb 2012 16:38:46 GMT",
"pgfnum": "4907"
},
"3": {
"text": "4. Paragraph-like spacing.",
"created": "Sat, 04 Feb 2012 16:38:52 GMT",
"pgfnum": "4908"
},
"4": {
"text": "The assumption is that hierarchy is used sparingly. The goal is to make something that reads like a story or essay.",
"created": "Sat, 04 Feb 2012 16:38:59 GMT",
"pgfnum": "4909"
}
}
}
}
}
}
},
"23": {
"text": "2/3/12 by DW",
"created": "Fri, 03 Feb 2012 23:13:26 GMT",
"pgfnum": "4860",
"subs": {
"0": {
"text": "A standard for RT'ing?",
"created": "Fri, 03 Feb 2012 23:31:43 GMT",
"pgfnum": "4871",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a feature in all my rivers that makes it possible to RT a post, directly from the browser to your linkblogging tool.",
"created": "Fri, 03 Feb 2012 23:31:51 GMT",
"pgfnum": "4872"
},
"1": {
"text": "
"
},
"2": {
"text": "Here's an example of one of the rivers.",
"created": "Fri, 03 Feb 2012 23:35:33 GMT",
"pgfnum": "4877"
},
"3": {
"text": "It works with Radio2, and probably nothing else. But any other linkblogger could support it by accepting three parameters. They are: link, title, description.",
"created": "Fri, 03 Feb 2012 23:32:22 GMT",
"pgfnum": "4873"
},
"4": {
"text": "They came straight from the RSS item.",
"created": "Fri, 03 Feb 2012 23:34:06 GMT",
"pgfnum": "4874"
},
"5": {
"text": "The first time the user clicks a RT, a dialog asks for the domain name of their linkblogger. It stores it in a cookie, so the user never has to enter it again.",
"created": "Fri, 03 Feb 2012 23:34:52 GMT",
"pgfnum": "4876"
},
"6": {
"text": "If you have a blogging tool you can support this, probably in a few minutes (and you might already support it if you have a bookmarklet, in which case please let me know).",
"created": "Fri, 03 Feb 2012 23:34:41 GMT",
"pgfnum": "4875"
}
}
},
"1": {
"text": "New River2 prefs panel",
"created": "Thu, 02 Feb 2012 15:02:04 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4808",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a new user-level prefs panel in River2 that allows you to enable saving into your own S3 bucket. This feature used to be something you'd have to set up manually on the server.",
"created": "Thu, 02 Feb 2012 15:17:42 GMT",
"pgfnum": "4815"
},
"1": {
"text": "You have to make sure the server is permitted to write into the bucket. And the bucket should be set up to serve websites.",
"created": "Thu, 02 Feb 2012 15:18:19 GMT",
"pgfnum": "4816"
},
"2": {
"text": "Parts",
"created": "Thu, 02 Feb 2012 15:06:22 GMT",
"pgfnum": "4813",
"subs": {
"0": {
"text": "river2Suite.data.prefsOutlineUser",
"created": "Thu, 02 Feb 2012 15:06:23 GMT",
"pgfnum": "4814"
}
}
}
}
},
"2": {
"text": "Working on \"superoutlines\"",
"created": "Fri, 03 Feb 2012 23:13:27 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4861",
"type": "blogpost",
"subs": {
"0": {
"text": "On Thursday I made a list of all the different kinds of outlines we have.",
"created": "Fri, 03 Feb 2012 23:13:39 GMT",
"pgfnum": "4862"
},
"1": {
"text": "This was food for thought. And there was a conclusion. I should try to make this list as short as possible. And in fact, I think it may be possible to get it down to one.",
"created": "Fri, 03 Feb 2012 23:22:41 GMT",
"pgfnum": "4869"
},
"2": {
"text": "It's experimental now, not sure what's coming out the other end. It's extending the work I did on the outline nodetype in December.",
"created": "Fri, 03 Feb 2012 23:23:14 GMT",
"pgfnum": "4870"
},
"3": {
"text": "Parts",
"created": "Fri, 03 Feb 2012 23:13:40 GMT",
"pgfnum": "4863",
"subs": {
"0": {
"text": "worldOutlineSuite.data.html.permalinkImg"
},
"1": {
"text": "worldOutlineSuite.data.urls.defaultSuperOutlineTemplate"
},
"2": {
"text": "worldOutlineSuite.init"
},
"3": {
"text": "worldOutlineSuite.main"
},
"4": {
"text": "worldOutlineSuite.viewOutline"
},
"5": {
"text": "worldOutlineSuite.viewSuperOutlineCallback"
}
}
}
}
},
"3": {
"text": "Bits and pieces",
"created": "Fri, 03 Feb 2012 23:19:57 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4865",
"type": "blogpost",
"subs": {
"0": {
"text": "Not sure these parts made it out in the work I was doing on the glossary in the last few days, just want to be sure.",
"created": "Fri, 03 Feb 2012 23:20:59 GMT",
"pgfnum": "4868"
},
"1": {
"text": "Parts",
"created": "Fri, 03 Feb 2012 23:20:00 GMT",
"pgfnum": "4866",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.archiveOutline"
},
"1": {
"text": "worldOutlineSuite.roots.saveOutline"
},
"2": {
"text": "worldOutlineSuite.viewMenu"
}
}
}
}
}
}
},
"24": {
"text": "2/2/12 by DW",
"created": "Thu, 02 Feb 2012 15:02:03 GMT",
"pgfnum": "4807",
"subs": {
"0": {
"text": "Fix problem saving glossary",
"created": "Thu, 02 Feb 2012 17:34:15 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4818",
"type": "blogpost",
"subs": {
"0": {
"text": "When you saved the glossary and it had an include node, if the outline included had not been opened by some other means, the save would fail.",
"created": "Thu, 02 Feb 2012 17:34:20 GMT",
"pgfnum": "4819"
},
"1": {
"text": "Parts",
"created": "Thu, 02 Feb 2012 17:34:56 GMT",
"pgfnum": "4820",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.saveGlossary",
"created": "Thu, 02 Feb 2012 17:34:57 GMT",
"pgfnum": "4821"
},
"1": {
"text": "opmlEditor.worldOutline.saveArchivedOutline"
}
}
}
}
},
"1": {
"text": "A river of the TechMeme leaderboard",
"created": "Thu, 02 Feb 2012 15:02:04 GMT",
"pgfnum": "4808",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm getting a static river up and running with the feeds on TechMeme's leaderboard.",
"created": "Thu, 02 Feb 2012 15:02:16 GMT",
"pgfnum": "4809"
},
"1": {
"text": "I have a script that runs once per night and updates the OPML file, as feeds come onto and go off of the top 100. Some sites, believe it or not, don't have feeds, so currently there are only 94 feeds in the top 100.",
"created": "Thu, 02 Feb 2012 15:03:50 GMT",
"pgfnum": "4812"
}
}
}
}
},
"25": {
"text": "2/1/12 by DW",
"created": "Wed, 01 Feb 2012 14:13:25 GMT",
"pgfnum": "4748",
"subs": {
"0": {
"text": "How many kinds of outlines we have!",
"type": "blogpost",
"subs": {
"0": {
"text": "These are outlines",
"created": "Wed, 01 Feb 2012 23:28:50 GMT",
"pgfnum": "4804",
"subs": {
"0": {
"text": "blogpost",
"subs": {
"0": {
"text": "an outline that's readable as a document."
}
}
},
"1": {
"text": "howto",
"subs": {
"0": {
"text": "an outline that's readable as a document."
}
}
},
"2": {
"text": "directory",
"subs": {
"0": {
"text": "an outline that's like a file system."
}
}
},
"3": {
"text": "outline",
"subs": {
"0": {
"text": "not sure what this is for"
}
}
},
"4": {
"text": "thumblist",
"subs": {
"0": {
"text": "an outline that's displayed as a grid of small pictures that link to bigger ones"
}
}
},
"5": {
"text": "code",
"subs": {
"0": {
"text": "an outline that's program material."
}
}
},
"6": {
"text": "tabs",
"subs": {
"0": {
"text": "on outline that's displayed in a tab arrangement."
}
}
},
"7": {
"text": "html",
"subs": {
"0": {
"text": "An outline that's turned into a string, macros are evaluated, and then it's returned to the client without any other processing",
"created": "Wed, 01 Feb 2012 23:29:17 GMT",
"pgfnum": "4806"
}
}
}
}
},
"1": {
"text": "These are not outlines",
"created": "Wed, 01 Feb 2012 23:29:01 GMT",
"pgfnum": "4805",
"subs": {
"0": {
"text": "redirect"
},
"1": {
"text": "river"
},
"2": {
"text": "rss"
}
}
}
}
},
"1": {
"text": "Caching goes away, for now at least",
"created": "Wed, 01 Feb 2012 22:35:48 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4770",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a system-level prefs page that allows you to turn on caching, but there are some problems with it. So, I'm taking the prefs page out and turning caching off on all installations.",
"created": "Wed, 01 Feb 2012 22:35:54 GMT",
"pgfnum": "4771"
},
"1": {
"text": "The problems are pretty basic:",
"created": "Wed, 01 Feb 2012 22:37:35 GMT",
"pgfnum": "4772",
"subs": {
"0": {
"text": "1. I don't think it does much to help performance.",
"created": "Wed, 01 Feb 2012 22:37:39 GMT",
"pgfnum": "4773"
},
"1": {
"text": "2. I think it breaks some sites.",
"created": "Wed, 01 Feb 2012 22:37:47 GMT",
"pgfnum": "4774"
},
"2": {
"text": "3. It certainly does not work with the new macros-that-run-code feature.",
"created": "Wed, 01 Feb 2012 22:37:51 GMT",
"pgfnum": "4775"
},
"3": {
"text": "4. I want to do a different kind of caching that will do a lot to improve performance.",
"created": "Wed, 01 Feb 2012 22:38:13 GMT",
"pgfnum": "4776"
}
}
},
"2": {
"text": "Parts",
"created": "Wed, 01 Feb 2012 22:38:37 GMT",
"pgfnum": "4777",
"subs": {
"0": {
"text": "worldOutlineSuite.data.prefsForSetup",
"created": "Wed, 01 Feb 2012 22:38:40 GMT",
"pgfnum": "4778"
},
"1": {
"text": "worldOutlineSuite.main",
"created": "Wed, 01 Feb 2012 22:38:53 GMT",
"pgfnum": "4779"
}
}
}
}
},
"2": {
"text": "Maintenence flag to clean up prefs",
"created": "Wed, 01 Feb 2012 18:48:17 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4766",
"type": "blogpost",
"subs": {
"0": {
"text": "Yesterday I released code that removed obsolete prefs from user's defaultAtts table in members.root. There doesn't appear to have been any breakage, so I'm now going to release code that runs that script on every installation.",
"created": "Wed, 01 Feb 2012 18:48:23 GMT",
"pgfnum": "4767"
},
"1": {
"text": "Parts",
"created": "Wed, 01 Feb 2012 18:49:35 GMT",
"pgfnum": "4768",
"subs": {
"0": {
"text": "worldOutlineSuite.background.everyMinute",
"created": "Wed, 01 Feb 2012 18:49:36 GMT",
"pgfnum": "4769"
}
}
}
}
},
"3": {
"text": "Glossary extensions",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "Let's bring back the feature where any outline can contain as many glossaries as you like."
},
"1": {
"text": "The rule is if we encounter a headline entitled Glossary we process the subs as definitions."
},
"2": {
"text": "The glossary is uploaded with the OPML, as before."
},
"3": {
"text": "When we render a page we run the text through the glossary of the outline it's contained within.",
"created": "Wed, 01 Feb 2012 17:11:48 GMT",
"pgfnum": "4764"
},
"4": {
"text": "For global glossary entries, add them to the glossary you access through the menu.",
"created": "Wed, 01 Feb 2012 17:12:31 GMT",
"pgfnum": "4765"
},
"5": {
"text": "Implementation",
"subs": {
"0": {
"text": "When saving an outline, bring back the code that builds the glossary. Verify that it works."
},
"1": {
"text": "In worldOutlineSuite.main, arrange it so the replacement code runs at the right instant."
}
}
},
"6": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.roots.initRoot"
},
"1": {
"text": "worldOutlineRpcHandlers.archiveOutline"
},
"2": {
"text": "worldOutlineSuite.roots.saveOutline"
},
"3": {
"text": "opmlEditor.worldOutline.saveArchivedOutline"
},
"4": {
"text": "worldOutlineSuite.main"
}
}
}
}
},
"4": {
"text": "Re-visiting the glossary",
"created": "Wed, 01 Feb 2012 01:42:42 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4732",
"type": "blogpost",
"subs": {
"0": {
"text": "The glossary feature broke when we did the corner-turn to multiple roots.",
"created": "Wed, 01 Feb 2012 01:42:44 GMT",
"pgfnum": "4733"
},
"1": {
"text": "And since there no longer is a single root, it gets a bit more complicated.",
"created": "Wed, 01 Feb 2012 01:42:56 GMT",
"pgfnum": "4734"
},
"2": {
"text": "How it works",
"created": "Wed, 01 Feb 2012 01:43:48 GMT",
"pgfnum": "4735",
"subs": {
"0": {
"text": "There's a new command in the main menu of the world outline website called Glossary.",
"created": "Wed, 01 Feb 2012 01:44:25 GMT",
"pgfnum": "4736"
},
"1": {
"text": "When you click on it, your glossary outline opens in the OPML Editor.",
"created": "Wed, 01 Feb 2012 01:45:39 GMT",
"pgfnum": "4737"
},
"2": {
"text": "You edit it as you would before. Each top-level item is a term, each sub-item is its definition.",
"created": "Wed, 01 Feb 2012 01:45:55 GMT",
"pgfnum": "4738"
},
"3": {
"text": "You can break up the definition into as many lines as you want, as long as they're all nested underneath the term. The structure is removed when the glossary is built from the outline. The structure is used to help you when you're editing.",
"created": "Wed, 01 Feb 2012 15:05:56 GMT",
"pgfnum": "4755"
},
"4": {
"text": "When you save, the glossary changes on the server, which in turn effects the rendering of all your outlines.",
"created": "Wed, 01 Feb 2012 01:46:27 GMT",
"pgfnum": "4739"
},
"5": {
"text": "We save both the table and the OPML text, so next time you edit it, it will be expanded as you left it, and the window will be the same size, and in the same position.",
"created": "Wed, 01 Feb 2012 15:07:07 GMT",
"pgfnum": "4756"
}
}
},
"3": {
"text": "Testing",
"created": "Wed, 01 Feb 2012 14:16:50 GMT",
"pgfnum": "4749",
"subs": {
"0": {
"text": "These are some items that are in my glossary.",
"created": "Wed, 01 Feb 2012 14:16:52 GMT",
"pgfnum": "4750",
"subs": {
"0": {
"text": "\"Dave\"",
"created": "Wed, 01 Feb 2012 14:16:59 GMT",
"pgfnum": "4751"
},
"1": {
"text": "\"cheesecake\"",
"created": "Wed, 01 Feb 2012 14:17:28 GMT",
"pgfnum": "4752"
},
"2": {
"text": "\"4 lines\"",
"created": "Wed, 01 Feb 2012 14:21:49 GMT",
"pgfnum": "4753"
},
"3": {
"text": "\"secret message\"",
"created": "Wed, 01 Feb 2012 15:04:56 GMT",
"pgfnum": "4754"
},
"4": {
"text": "\"spunk\""
}
}
}
}
},
"4": {
"text": "Parts",
"created": "Wed, 01 Feb 2012 01:49:46 GMT",
"pgfnum": "4741",
"subs": {
"0": {
"text": "opmlEditor.website.openGlossary",
"created": "Wed, 01 Feb 2012 01:52:54 GMT",
"pgfnum": "4743"
},
"1": {
"text": "opmlEditor.worldOutline.buttons.glossary",
"created": "Wed, 01 Feb 2012 02:17:03 GMT",
"pgfnum": "4744"
},
"2": {
"text": "opmlEditor.worldOutline.saveGlossary"
},
"3": {
"text": "worldOutlineRpcHandlers.getGlossary"
},
"4": {
"text": "worldOutlineRpcHandlers.setGlossary"
},
"5": {
"text": "worldOutlineSuite.viewMenu",
"created": "Wed, 01 Feb 2012 01:49:51 GMT",
"pgfnum": "4742"
}
}
}
}
}
}
}
}
},
"16": {
"created": "Sun, 01 Jan 2012 05:52:05 GMT",
"pgfnum": "4169",
"text": "January 2012",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2012/02/01/archive056.opml",
"subs": {
"0": {
"text": "1/31/12 by DW",
"created": "Tue, 31 Jan 2012 14:47:40 GMT",
"pgfnum": "4658",
"subs": {
"0": {
"text": "Version 0.54",
"created": "Wed, 01 Feb 2012 01:35:12 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4729",
"type": "blogpost",
"subs": {
"0": {
"text": "Parts",
"created": "Wed, 01 Feb 2012 01:35:18 GMT",
"pgfnum": "4730",
"subs": {
"0": {
"text": "worldOutlineInfo",
"created": "Wed, 01 Feb 2012 01:35:21 GMT",
"pgfnum": "4731"
}
}
}
}
},
"1": {
"text": "Error with View button",
"created": "Wed, 01 Feb 2012 00:05:40 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4707",
"type": "blogpost",
"subs": {
"0": {
"text": "Reproducing is easy",
"created": "Wed, 01 Feb 2012 00:08:58 GMT",
"pgfnum": "4717",
"subs": {
"0": {
"text": "1. Create a new outline on the Roots page.",
"created": "Wed, 01 Feb 2012 00:05:52 GMT",
"pgfnum": "4708"
},
"1": {
"text": "2. Click the Edit icon to open it in the OPML Editor.",
"created": "Wed, 01 Feb 2012 00:06:11 GMT",
"pgfnum": "4709"
},
"2": {
"text": "3. Enter a small outline.",
"created": "Wed, 01 Feb 2012 00:06:20 GMT",
"pgfnum": "4710"
},
"3": {
"text": "4. Save.",
"created": "Wed, 01 Feb 2012 00:06:27 GMT",
"pgfnum": "4711"
},
"4": {
"text": "5. View some headline. I don't think it matters which one.",
"created": "Wed, 01 Feb 2012 00:06:32 GMT",
"pgfnum": "4712"
}
}
},
"1": {
"text": "What happens",
"created": "Wed, 01 Feb 2012 00:09:03 GMT",
"pgfnum": "4718",
"subs": {
"0": {
"text": "If I put the cursor on Beatles Songs/I'm So Tired, it goes to: http://www.beatlessongs.com/.",
"created": "Wed, 01 Feb 2012 00:09:07 GMT",
"pgfnum": "4719"
},
"1": {
"text": "Now let's find out how it comes up with that answer, which is terribly wrong.",
"created": "Wed, 01 Feb 2012 00:10:07 GMT",
"pgfnum": "4721"
}
}
},
"2": {
"text": "The problem",
"created": "Wed, 01 Feb 2012 00:13:48 GMT",
"pgfnum": "4722",
"subs": {
"0": {
"text": "We weren't getting the window attributes from the correct window.",
"created": "Wed, 01 Feb 2012 00:31:25 GMT",
"pgfnum": "4728"
}
}
},
"3": {
"text": "Parts",
"created": "Wed, 01 Feb 2012 00:23:25 GMT",
"pgfnum": "4726",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.getHeadlineUrl",
"created": "Wed, 01 Feb 2012 00:23:28 GMT",
"pgfnum": "4727"
}
}
}
}
},
"2": {
"text": "Fixed error when creating a blorkmark",
"created": "Tue, 31 Jan 2012 19:25:27 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4696",
"type": "blogpost",
"subs": {
"0": {
"text": "The blorkmark is created. This is what we get back from the RPC handler. Can't process the request because a value of type \"unknown\" can't be represented in XML-Data at this time.",
"created": "Tue, 31 Jan 2012 19:26:02 GMT",
"pgfnum": "4698"
},
"1": {
"text": "The problem is that it was calling opmlEditor.worldOutline.saveWorkspace, which is now obsolete. It should have been calling markHeadline. The error went away.",
"created": "Tue, 31 Jan 2012 23:50:49 GMT",
"pgfnum": "4705"
},
"2": {
"text": "Also added a confirmation that says \"You may have to wait up to 40 seconds for the new name to be registered\" before creating the new mark. I want people to know not to expect the new domain to work for that long. In fact if you try to use it early, it'll cause a delay of a few minutes before the name will work.",
"created": "Tue, 31 Jan 2012 23:51:25 GMT",
"pgfnum": "4706"
},
"3": {
"text": "Parts",
"created": "Tue, 31 Jan 2012 23:50:24 GMT",
"pgfnum": "4703",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.markHeadline",
"created": "Tue, 31 Jan 2012 23:50:29 GMT",
"pgfnum": "4704"
}
}
}
}
},
"3": {
"text": "Oooops",
"created": "Tue, 31 Jan 2012 17:25:46 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4690",
"type": "blogpost",
"subs": {
"0": {
"text": "Now we have to fix the fix! :-(",
"created": "Tue, 31 Jan 2012 17:25:50 GMT",
"pgfnum": "4691"
},
"1": {
"text": "headerText shouldn't have been in the set of obsolete prefs.",
"created": "Tue, 31 Jan 2012 17:25:58 GMT",
"pgfnum": "4692"
},
"2": {
"text": "Parts",
"created": "Tue, 31 Jan 2012 17:26:08 GMT",
"pgfnum": "4693",
"subs": {
"0": {
"text": "worldOutlineSuite.utilities.cleanupUserLevelPrefs",
"created": "Tue, 31 Jan 2012 17:26:10 GMT",
"pgfnum": "4694"
},
"1": {
"text": "worldOutlineSuite.initUser",
"created": "Tue, 31 Jan 2012 17:32:56 GMT",
"pgfnum": "4695"
}
}
}
}
},
"4": {
"text": "Clean up global prefs",
"created": "Tue, 31 Jan 2012 15:55:11 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4666",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a long-put-off dirty little task that must be done. :-)",
"created": "Tue, 31 Jan 2012 15:55:16 GMT",
"pgfnum": "4667"
},
"1": {
"text": "There are a bunch of extra prefs sitting in the default attributes table for each user. They control colors, but the default templates don't pay attention to them.",
"created": "Tue, 31 Jan 2012 15:55:29 GMT",
"pgfnum": "4668"
},
"2": {
"text": "There's a very small chance that someone out there in WorldOutlineLand has included these in their templates. And removing them, for those people, will break their websites. But it will be in a very visible and not-too-horrible way. And I don't think there are very many people out there using this stuff now, and even fewer have bothered editing the templates too much, and even fewer care about default colors.",
"created": "Tue, 31 Jan 2012 15:56:07 GMT",
"pgfnum": "4669"
},
"3": {
"text": "So here's what I propose to do.",
"created": "Tue, 31 Jan 2012 15:57:30 GMT",
"pgfnum": "4670",
"subs": {
"0": {
"text": "1. I will ship a utility script that you can run today on your server that will remove these values and you can see what if anything breaks, and we can, together, try to figure out what to do about it.",
"created": "Tue, 31 Jan 2012 15:57:38 GMT",
"pgfnum": "4671"
},
"1": {
"text": "2. If nothing breaks, as I'm fairly confident will happen, then I'll go ahead and release a maintenence update that runs the utility script on every worldOutline installation.",
"created": "Tue, 31 Jan 2012 15:58:19 GMT",
"pgfnum": "4672"
},
"2": {
"text": "3. And we move onward with a big step toward release behind us.",
"created": "Tue, 31 Jan 2012 15:58:55 GMT",
"pgfnum": "4673"
}
}
},
"4": {
"text": "Plan",
"created": "Tue, 31 Jan 2012 15:59:07 GMT",
"pgfnum": "4674",
"subs": {
"0": {
"text": "1. Generate a list of the prefs that go away.",
"created": "Tue, 31 Jan 2012 16:02:51 GMT",
"pgfnum": "4677"
},
"1": {
"text": "2. worldOutlineSuite.initUser no longer initializes these values. So once they're deleted, they're gone.",
"created": "Tue, 31 Jan 2012 15:59:30 GMT",
"pgfnum": "4675"
},
"2": {
"text": "3. Run the utility script on my server, see what happens.",
"created": "Tue, 31 Jan 2012 16:32:53 GMT",
"pgfnum": "4686"
},
"3": {
"text": "4. Release the utility script.",
"created": "Tue, 31 Jan 2012 15:59:50 GMT",
"pgfnum": "4676"
},
"4": {
"text": "5. Announce on world-outline list.",
"created": "Tue, 31 Jan 2012 16:40:28 GMT",
"pgfnum": "4687"
},
"5": {
"text": "6. Hold my breath. :-)",
"created": "Tue, 31 Jan 2012 16:40:38 GMT",
"pgfnum": "4688"
},
"6": {
"text": "7. Look for breakage.",
"created": "Tue, 31 Jan 2012 16:40:44 GMT",
"pgfnum": "4689"
}
}
},
"5": {
"text": "Parts",
"created": "Tue, 31 Jan 2012 16:28:54 GMT",
"pgfnum": "4684",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser",
"created": "Tue, 31 Jan 2012 16:28:55 GMT",
"pgfnum": "4685"
},
"1": {
"text": "worldOutlineSuite.utilities.cleanupUserLevelPrefs"
}
}
}
}
},
"5": {
"text": "pageTitle macro not resolving everywhere",
"created": "Tue, 31 Jan 2012 14:47:41 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4659",
"type": "blogpost",
"subs": {
"0": {
"text": "AC reports a problem with the new <%pageTitle%> macro.",
"created": "Tue, 31 Jan 2012 14:48:06 GMT",
"pgfnum": "4660"
},
"1": {
"text": "Easily reproducible, in fact, you can see it right here on the worknotes site.",
"created": "Tue, 31 Jan 2012 14:48:21 GMT",
"pgfnum": "4661"
},
"2": {
"text": "I'm guessing that the problem is that it isn't initialized to anything, so when you're viewing the home page of a root, a page which isn't a blogpost, outline or another type that has a document title, it isn't defined.",
"created": "Tue, 31 Jan 2012 14:48:36 GMT",
"pgfnum": "4662"
},
"3": {
"text": "The problem should be fixed by initializing it to \"Home\" -- and obviously at some point making this a preference for non-English sites.",
"created": "Tue, 31 Jan 2012 14:51:17 GMT",
"pgfnum": "4663"
},
"4": {
"text": "Parts",
"created": "Tue, 31 Jan 2012 14:51:43 GMT",
"pgfnum": "4664",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser",
"created": "Tue, 31 Jan 2012 14:51:47 GMT",
"pgfnum": "4665"
}
}
}
}
}
}
},
"1": {
"text": "1/30/12 by DW",
"created": "Mon, 30 Jan 2012 16:38:16 GMT",
"pgfnum": "4644",
"subs": {
"0": {
"text": "Normal status message if not in outline",
"created": "Mon, 30 Jan 2012 23:25:23 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4652",
"type": "blogpost",
"subs": {
"0": {
"text": "AC makes a feature request.",
"created": "Mon, 30 Jan 2012 23:25:38 GMT",
"pgfnum": "4653",
"subs": {
"0": {
"text": "One request, is it possible to modify the callback so that the About window displays time AND number of threads running when not displaying atts? I really like being able to see that at a glance.",
"created": "Mon, 30 Jan 2012 23:29:02 GMT",
"pgfnum": "4657"
}
}
},
"1": {
"text": "That's a good idea. Done.",
"created": "Mon, 30 Jan 2012 23:26:24 GMT",
"pgfnum": "4654"
},
"2": {
"text": "Parts",
"created": "Mon, 30 Jan 2012 23:26:29 GMT",
"pgfnum": "4655",
"subs": {
"0": {
"text": "scheduler2.showAttsInAboutWindow",
"created": "Mon, 30 Jan 2012 23:26:30 GMT",
"pgfnum": "4656"
}
}
}
}
},
"1": {
"text": "serverMonitor & open roots",
"created": "Mon, 30 Jan 2012 16:38:17 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4645",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to move serverMonitor toward linking a group of servers. Toward that end, I've upgraded both the responder and the pinger to send, receive and report the number and name of open root files on each server.",
"created": "Mon, 30 Jan 2012 16:38:32 GMT",
"pgfnum": "4646"
},
"1": {
"text": "The number is shown in the serverMonitor report. Roll your mouse over it to see a popup with the names of all the files. We also have file size, creation and mod dates (not displayed) for each file.",
"created": "Mon, 30 Jan 2012 17:17:55 GMT",
"pgfnum": "4651"
},
"2": {
"text": "Parts",
"created": "Mon, 30 Jan 2012 16:46:43 GMT",
"pgfnum": "4648",
"subs": {
"0": {
"text": "opmlEditor.rpcHandlers.respondToServerMonitorPing",
"created": "Mon, 30 Jan 2012 16:46:44 GMT",
"pgfnum": "4649"
},
"1": {
"text": "serverMonitorSuite.viewStatusTable"
},
"2": {
"text": "serverMonitorWebsite.[\"#template\"]"
}
}
}
}
}
}
},
"2": {
"text": "1/29/12 by DW",
"created": "Sun, 29 Jan 2012 13:57:35 GMT",
"pgfnum": "4625",
"subs": {
"0": {
"text": "Punching a big hole",
"created": "Sun, 29 Jan 2012 16:50:41 GMT",
"pgfnum": "4630",
"type": "blogpost",
"subs": {
"0": {
"text": "Think of the worldoutline as a building and imagine there's a thick wall you didn't even see, and then you wonder what it would be like if you had a door that connected the rooms on either side of the wall?",
"created": "Sun, 29 Jan 2012 16:50:45 GMT",
"pgfnum": "4631"
},
"1": {
"text": "The wall is the world I'm typing into right now, an outline that's rendered by the worldoutline server. But what if I could, using a macro, just include the contents of the Roots page. What would that look like.",
"created": "Sun, 29 Jan 2012 16:51:34 GMT",
"pgfnum": "4632"
},
"2": {
"text": "I decided I'd find out! :-)",
"created": "Sun, 29 Jan 2012 16:52:34 GMT",
"pgfnum": "4633"
},
"3": {
"text": "http://viewrootsexample.blorkmark.com/",
"created": "Sun, 29 Jan 2012 16:59:47 GMT",
"pgfnum": "4641"
},
"4": {
"text": "I'm not going to release this until I give it some more thought. Not sure where this path leads. I want to be sure it leads somewhere before committing to supporting it.",
"created": "Sun, 29 Jan 2012 17:01:09 GMT",
"pgfnum": "4643"
},
"5": {
"text": "Parts",
"created": "Sun, 29 Jan 2012 16:52:39 GMT",
"pgfnum": "4634",
"subs": {
"0": {
"text": "worldOutlineSuite.macros.worldOutline",
"created": "Sun, 29 Jan 2012 16:52:42 GMT",
"pgfnum": "4635"
}
}
}
}
},
"1": {
"text": "Default style for includeOutline",
"created": "Sun, 29 Jan 2012 13:57:36 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4626",
"type": "blogpost",
"subs": {
"0": {
"text": "Changed defaults so that the presentation is by plainer.",
"created": "Sun, 29 Jan 2012 13:57:50 GMT",
"pgfnum": "4627"
},
"1": {
"text": "Parts",
"created": "Sun, 29 Jan 2012 13:58:07 GMT",
"pgfnum": "4628",
"subs": {
"0": {
"text": "worldOutlineSuite.data.outlineScriptsAndStyles"
},
"1": {
"text": "worldOutlineSuite.macros.includeOutline"
},
"2": {
"text": "worldOutlineSuite.viewOutline"
}
}
}
}
}
}
},
"3": {
"text": "1/28/12 by DW",
"created": "Sat, 28 Jan 2012 15:18:25 GMT",
"pgfnum": "4548",
"subs": {
"0": {
"text": "includeOutline macro",
"created": "Sat, 28 Jan 2012 23:31:37 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4610",
"type": "blogpost",
"subs": {
"0": {
"text": "This is how you call it...",
"created": "Sat, 28 Jan 2012 23:55:29 GMT",
"pgfnum": "4617"
},
"1": {
"text": "<%includeOutline (\"http://dropbox.scripting.com/dave/worldOutline/states.opml\")%>",
"created": "Sat, 28 Jan 2012 23:55:17 GMT",
"pgfnum": "4616"
},
"2": {
"text": "And this is what it does...",
"created": "Sat, 28 Jan 2012 23:55:35 GMT",
"pgfnum": "4618"
},
"3": {
"text": "<%includeOutline (\"http://dropbox.scripting.com/dave/worldOutline/states.opml\")%>",
"created": "Sat, 28 Jan 2012 23:31:45 GMT",
"pgfnum": "4612"
},
"4": {
"text": "It's kind of obvious we're going to need some parameters to control the indentation, background color, etc.",
"created": "Sat, 28 Jan 2012 23:55:52 GMT",
"pgfnum": "4619"
},
"5": {
"text": "Don't build any mission-critical apps with this right away, because there will likely be some breakage here.",
"created": "Sat, 28 Jan 2012 23:56:15 GMT",
"pgfnum": "4620"
},
"6": {
"text": "Parts",
"created": "Sat, 28 Jan 2012 23:58:30 GMT",
"pgfnum": "4621",
"subs": {
"0": {
"text": "worldOutlineSuite.macros.includeOutline"
},
"1": {
"text": "worldOutlineSuite.viewOutline"
}
}
}
}
},
"1": {
"text": "Thumblists are a little smarter",
"created": "Sat, 28 Jan 2012 23:27:04 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4605",
"type": "blogpost",
"subs": {
"0": {
"text": "Previously the number of columns was fixed, at 4. Now we do a first pass over the thumbs, calculate the max width and then decide the number of columns based on that info.",
"created": "Sat, 28 Jan 2012 23:27:10 GMT",
"pgfnum": "4606"
},
"1": {
"text": "This came up in the glypharray site. It seemed silly that there were only 4 cols when the images were so small.",
"created": "Sat, 28 Jan 2012 23:28:09 GMT",
"pgfnum": "4609"
},
"2": {
"text": "It also helps with my photos site, and I imagine others will like it as well.",
"created": "Sat, 28 Jan 2012 23:34:04 GMT",
"pgfnum": "4613"
},
"3": {
"text": "Parts",
"created": "Sat, 28 Jan 2012 23:27:58 GMT",
"pgfnum": "4607",
"subs": {
"0": {
"text": "worldOutlineSuite.viewThumbListCallback",
"created": "Sat, 28 Jan 2012 23:27:59 GMT",
"pgfnum": "4608"
}
}
}
}
},
"2": {
"text": "includeHttp, includeOpml macros",
"created": "Sat, 28 Jan 2012 19:06:09 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4589",
"type": "blogpost",
"subs": {
"0": {
"text": "Two new macros that include something via HTTP.",
"created": "Sat, 28 Jan 2012 19:06:16 GMT",
"pgfnum": "4590"
},
"1": {
"text": "<%includeHttp (\"http://dropbox.scripting.com/dave/html/includeHttpDemo.html\")%>",
"created": "Sat, 28 Jan 2012 19:06:36 GMT",
"pgfnum": "4591",
"subs": {
"0": {
"text": "<%includeHttp (\"http://dropbox.scripting.com/dave/html/includeHttpDemo.html\")%>",
"created": "Sat, 28 Jan 2012 19:10:03 GMT",
"pgfnum": "4593"
}
}
},
"2": {
"text": "It replaces the macro with the contents of the file.",
"created": "Sat, 28 Jan 2012 19:10:48 GMT",
"pgfnum": "4594"
},
"3": {
"text": "<%includeOpml (\"http://dropbox.scripting.com/dave/outlines/includeOpmlDemo.opml\")%>",
"created": "Sat, 28 Jan 2012 19:22:06 GMT",
"pgfnum": "4600",
"subs": {
"0": {
"text": "<%includeOpml (\"http://dropbox.scripting.com/dave/outlines/includeOpmlDemo.opml\")%>",
"created": "Sat, 28 Jan 2012 19:19:04 GMT",
"pgfnum": "4599"
}
}
},
"4": {
"text": "It reads the OPML file, turns it into an outline, then into a string, and inserts the result in the page.",
"created": "Sat, 28 Jan 2012 19:23:26 GMT",
"pgfnum": "4601"
},
"5": {
"text": "Here's the file used in the example above.",
"created": "Sat, 28 Jan 2012 19:25:53 GMT",
"pgfnum": "4602"
},
"6": {
"text": "Parts",
"created": "Sat, 28 Jan 2012 19:41:15 GMT",
"pgfnum": "4603",
"subs": {
"0": {
"text": "worldOutlineSuite.macros.includeHttp"
},
"1": {
"text": "worldOutlineSuite.macros.includeOpml"
}
}
}
}
},
"3": {
"text": "Macros that call code, release of parts",
"created": "Sat, 28 Jan 2012 17:29:04 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4576",
"type": "blogpost",
"subs": {
"0": {
"text": "The worldoutline is getting a big new capability today -- macros that run code.",
"created": "Sat, 28 Jan 2012 17:29:17 GMT",
"pgfnum": "4578"
},
"1": {
"text": "Until now macros were things that were set up before the page renders. They were text or graphic elements that you could include in your page, or not.",
"created": "Sat, 28 Jan 2012 17:29:36 GMT",
"pgfnum": "4579"
},
"2": {
"text": "Now macros can be calls to code running in the Frontier environment that take parameters. The can contain calls to calls, so you can combine the functions of the macros.",
"created": "Sat, 28 Jan 2012 17:30:03 GMT",
"pgfnum": "4580"
},
"3": {
"text": "However, there are strict limits on what the macros can do. For example loops are not permitted. And most verbs are disabled. Eventually sysops will be able to add their own macros, but for now I am the only one who can write code that is run by macros.",
"created": "Sat, 28 Jan 2012 17:30:50 GMT",
"pgfnum": "4581"
},
"4": {
"text": "I've included a few demos, so we can check it out, before proceeding. I want to get a feel for this before adding new functions. I've learned from past systems that this is a good point to go slowly and carefully, especially if the goal is no breakage.",
"created": "Sat, 28 Jan 2012 17:32:24 GMT",
"pgfnum": "4582"
},
"5": {
"text": "Here's a list of macros that are part of the initial release:",
"created": "Sat, 28 Jan 2012 17:33:40 GMT",
"pgfnum": "4583",
"subs": {
"0": {
"text": "bootstrap.popover, bootstrap.twipsy, glyphicon.view, glyphicon.viewList, clock.now, string.upper, includeHttp, includeOpml, includeOutline.",
"created": "Sat, 28 Jan 2012 17:33:53 GMT",
"pgfnum": "4584"
}
}
},
"6": {
"text": "Also part of this release, a verb that gets the height and width of PNG images. A long-needed feature.",
"created": "Sat, 28 Jan 2012 17:42:40 GMT",
"pgfnum": "4587"
},
"7": {
"text": "Worknotes for this release:",
"created": "Sat, 28 Jan 2012 17:34:23 GMT",
"pgfnum": "4585",
"subs": {
"0": {
"text": "http://worknotes.scripting.com/january2012/12812ByDw/glyphicons/"
},
"1": {
"text": "http://worknotes.scripting.com/january2012/12812ByDw/getPngHeightwidth"
},
"2": {
"text": "http://worknotes.scripting.com/january2012/12812ByDw/includehttpIncludeopmlMacros",
"created": "Sun, 29 Jan 2012 01:09:47 GMT",
"pgfnum": "4624"
},
"3": {
"text": "http://worknotes.scripting.com/january2012/12712ByDw/macrosThatRunCode"
},
"4": {
"text": "http://glypharray.blorkmark.com/",
"created": "Sat, 28 Jan 2012 17:45:00 GMT",
"pgfnum": "4588"
}
}
},
"8": {
"text": "Parts",
"created": "Sat, 28 Jan 2012 17:29:11 GMT",
"pgfnum": "4577",
"subs": {
"0": {
"text": "html.getPngHeightWidth",
"created": "Sat, 28 Jan 2012 15:21:06 GMT",
"pgfnum": "4553"
},
"1": {
"text": "worldOutlineSuite.utilities.buildGlyphiconOpml"
},
"2": {
"text": "worldOutlineSuite.utilities.loadGlyphIconTable"
},
"3": {
"text": "worldOutlineSuite.data.glyphIcon"
},
"4": {
"text": "worldOutlineSuite.macros"
},
"5": {
"text": "worldOutlineSuite.main"
},
"6": {
"text": "worldOutlineSuite.processMacros"
}
}
}
}
},
"4": {
"text": "Glyphicons",
"created": "Sat, 28 Jan 2012 15:46:26 GMT",
"pgfnum": "4554",
"type": "blogpost",
"subs": {
"0": {
"text": "I love using graphic symbols in web pages, so when I saw the relatively new Glyphicon package by Jan Kovarik, I knew they would play a role in our work in the worldoutline.",
"created": "Sat, 28 Jan 2012 15:46:29 GMT",
"pgfnum": "4555"
},
"1": {
"text": "You can include a glyphicon in a web page with the following macro:",
"created": "Sat, 28 Jan 2012 15:47:06 GMT",
"pgfnum": "4556",
"subs": {
"0": {
"text": "<%glyphicon.view (iconname)%>",
"created": "Sat, 28 Jan 2012 15:47:20 GMT",
"pgfnum": "4557"
}
}
},
"2": {
"text": "There are 350 of them. The small low-res icons are free to use, but the bigger higher-resolution ones cost money to license. They're not expensive and they're absolutely beautiful. The kind of work we should reward by showering it with money.",
"created": "Sat, 28 Jan 2012 15:47:53 GMT",
"pgfnum": "4558"
},
"3": {
"text": "Examples",
"created": "Sat, 28 Jan 2012 15:48:53 GMT",
"pgfnum": "4559",
"subs": {
"0": {
"text": "<%glyphicon.view (\"beer\")%> -- <%glyphicon.view (\"beer\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
},
"1": {
"text": "<%glyphicon.view (\"dog\")%> -- <%glyphicon.view (\"dog\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
},
"2": {
"text": "<%glyphicon.view (\"heart\")%> -- <%glyphicon.view (\"heart\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
},
"3": {
"text": "<%glyphicon.view (\"keyboardWireless\")%> -- <%glyphicon.view (\"keyboardWireless\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
},
"4": {
"text": "<%glyphicon.view (\"screenshot\")%> -- <%glyphicon.view (\"screenshot\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
},
"5": {
"text": "<%glyphicon.view (\"warningSign\")%> -- <%glyphicon.view (\"warningSign\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
}
}
},
"4": {
"text": "CSS",
"created": "Sat, 28 Jan 2012 16:03:07 GMT",
"pgfnum": "4563",
"subs": {
"0": {
"text": "The img elements are class woGlyphiconImage, so you can control the styling of the images.",
"created": "Sat, 28 Jan 2012 16:03:09 GMT",
"pgfnum": "4564"
}
}
},
"5": {
"text": "Optional parameter",
"created": "Sat, 28 Jan 2012 16:06:42 GMT",
"pgfnum": "4565",
"subs": {
"0": {
"text": "If you want to specify alt text for the image, add a second optional parameter, with the text.",
"created": "Sat, 28 Jan 2012 16:06:46 GMT",
"pgfnum": "4566"
},
"1": {
"text": "<%glyphicon.view (\"beer\", \"Image of a beer stein.\")%> -- <%glyphicon.view (\"beer\", \"Image of a beer stein.\")%>",
"created": "Sat, 28 Jan 2012 15:49:05 GMT",
"pgfnum": "4560"
}
}
},
"6": {
"text": "List of the 350 image names",
"created": "Sat, 28 Jan 2012 16:09:27 GMT",
"pgfnum": "4567",
"subs": {
"0": {
"text": "Here's a page that shows all the glyphicons.",
"created": "Sat, 28 Jan 2012 16:09:53 GMT",
"pgfnum": "4570"
}
}
},
"7": {
"text": "Parts",
"created": "Sat, 28 Jan 2012 15:54:48 GMT",
"pgfnum": "4561",
"subs": {
"0": {
"text": "worldOutlineSuite.data.glyphIcon",
"created": "Sat, 28 Jan 2012 15:54:50 GMT",
"pgfnum": "4562"
},
"1": {
"text": "worldOutlineSuite.utilities.buildGlyphiconOpml"
},
"2": {
"text": "worldOutlineSuite.utilities.loadGlyphIconTable"
}
}
}
}
},
"5": {
"text": "Get PNG height/width",
"created": "Sat, 28 Jan 2012 15:18:26 GMT",
"pgfnum": "4549",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to provide easy access to a library of PNG images through the new macros facility, but we don't have a way to get the height and width of PNG images, just JPEGs and GIFs. So I wrote code that does this. Wasn't so hard.",
"created": "Sat, 28 Jan 2012 15:18:40 GMT",
"pgfnum": "4550"
},
"1": {
"text": "Followed the spec at mozilla.org, I was able to find the data in PNG images, and copied the technique used for getting height/width from GIFs.",
"created": "Sat, 28 Jan 2012 15:19:29 GMT",
"pgfnum": "4551"
},
"2": {
"text": "Parts",
"created": "Sat, 28 Jan 2012 15:21:05 GMT",
"pgfnum": "4552",
"subs": {
"0": {
"text": "html.getPngHeightWidth",
"created": "Sat, 28 Jan 2012 15:21:06 GMT",
"pgfnum": "4553"
}
}
}
}
}
}
},
"4": {
"text": "1/27/12 by DW",
"created": "Fri, 27 Jan 2012 14:53:20 GMT",
"pgfnum": "4510",
"subs": {
"0": {
"text": "Macros that run code",
"created": "Fri, 27 Jan 2012 16:48:13 GMT",
"pgfnum": "4523",
"type": "blogpost",
"subs": {
"0": {
"text": "I really want the ability to add macros to my worldOutline that run code. This is going to make it easy, for example, to add complex HTML elements to pages without introducing complexity into our outlines. It's a very good place to put programmability.",
"created": "Fri, 27 Jan 2012 16:48:18 GMT",
"pgfnum": "4524"
},
"1": {
"text": "The built-in verb html.neuterMacros is just what we want with one problem, the delimiters it uses are curly braces and we're using <% and %> to delimit our macros. I don't want to use two different syntaxes, and we're sure to run into problems with Javascript code that also uses curly braces for script structure.",
"created": "Fri, 27 Jan 2012 16:50:20 GMT",
"pgfnum": "4526"
},
"2": {
"text": "Then I thought of an elegant workaround that involves no kernel changes. I scan the text in script code, when I find a potentially unsafe macro, I enclose it in curly braces and ship it down to html.neuterMacros. If it neuters it, I neuter it. It's weird but it works. :-)",
"created": "Fri, 27 Jan 2012 16:51:48 GMT",
"pgfnum": "4527"
},
"3": {
"text": "I'm testing it now, will report progress.",
"created": "Fri, 27 Jan 2012 16:53:09 GMT",
"pgfnum": "4528",
"subs": {
"0": {
"text": "<%clock.now ()%> -- clock.now () -- legal -- should show date/time on server",
"created": "Fri, 27 Jan 2012 17:40:30 GMT",
"pgfnum": "4531"
},
"1": {
"text": "<%hooray.for.hollywood ()%> -- should be neutered",
"created": "Fri, 27 Jan 2012 17:40:30 GMT",
"pgfnum": "4531"
},
"2": {
"text": "<%string.upper (\"I'm dreaming of a white christmas\")%> -- string.upper -- legal",
"created": "Fri, 27 Jan 2012 17:40:30 GMT",
"pgfnum": "4531"
}
}
},
"4": {
"text": "How to make a twipsy",
"created": "Fri, 27 Jan 2012 18:02:43 GMT",
"pgfnum": "4532",
"subs": {
"0": {
"text": "A twipsy is a nice little idea that the Bootstrap Toolkit gives us.",
"created": "Fri, 27 Jan 2012 18:02:51 GMT",
"pgfnum": "4533"
},
"1": {
"text": "Here's an <%bootstrap.twipsy (\"Ask not what the Internet can do for you, ask what you can do for the Internet.\", \"example\")%> of one.",
"created": "Fri, 27 Jan 2012 18:03:27 GMT",
"pgfnum": "4534"
},
"2": {
"text": "Just hover the mouse over the world \"example\" above.",
"created": "Fri, 27 Jan 2012 18:03:31 GMT",
"pgfnum": "4535"
},
"3": {
"text": "Here's the code for that:",
"created": "Fri, 27 Jan 2012 18:03:32 GMT",
"pgfnum": "4536",
"subs": {
"0": {
"text": "<%bootstrap.twipsy (\"Ask not what the Internet can do for you, ask what you can do for the Internet.\", \"example\")%>",
"created": "Fri, 27 Jan 2012 18:03:38 GMT",
"pgfnum": "4537"
}
}
}
}
},
"5": {
"text": "How to make a popover",
"created": "Fri, 27 Jan 2012 22:37:00 GMT",
"pgfnum": "4540",
"subs": {
"0": {
"text": "For background on popovers, see worknotes for 9/30/11.",
"created": "Fri, 27 Jan 2012 22:37:04 GMT",
"pgfnum": "4541"
},
"1": {
"text": "Here's an <%bootstrap.popover (\"Isnt this cool?\", \"I just had to type some text into an outline to make this popover appear.\", \"example\")%> of a popover.",
"created": "Fri, 27 Jan 2012 18:03:27 GMT",
"pgfnum": "4534"
},
"2": {
"text": "The code",
"created": "Fri, 27 Jan 2012 22:56:19 GMT",
"pgfnum": "4546",
"subs": {
"0": {
"text": "<%bootstrap.popover (\"Isnt this cool?\", \"I just had to type some text into an outline to make this popover appear.\", \"example\")%>",
"created": "Fri, 27 Jan 2012 22:56:59 GMT",
"pgfnum": "4547"
}
}
}
}
},
"6": {
"text": "Error cases",
"created": "Fri, 27 Jan 2012 19:19:25 GMT",
"pgfnum": "4538",
"subs": {
"0": {
"text": "In this example we call a macro that hasn't been made legal, file.readwholefile. If we allowed it, you would be able to read every file on the hard disk of the server computer. A good one not to make legal. :-)",
"created": "Fri, 27 Jan 2012 22:42:24 GMT",
"pgfnum": "4542",
"subs": {
"0": {
"text": "<%string.upper (file.readwholefile (\"C:\\\\tmp.exe\"))%> -- shouldn't accept this -- file.readwholefile is not legal.",
"created": "Fri, 27 Jan 2012 19:19:31 GMT",
"pgfnum": "4539"
}
}
},
"1": {
"text": "This one illustrates a runtime error.",
"created": "Fri, 27 Jan 2012 22:44:50 GMT",
"pgfnum": "4543",
"subs": {
"0": {
"text": "<%string.upper (12 / 0)%> -- <%string.upper (12 / 0)%>",
"created": "Fri, 27 Jan 2012 22:45:18 GMT",
"pgfnum": "4544"
},
"1": {
"text": "If you do a view source, you'll see that the error is contained within a code element whose class is \"woRuntimeErrorMessage\". So you can style errors any way you want.",
"created": "Fri, 27 Jan 2012 22:47:12 GMT",
"pgfnum": "4545"
}
}
}
}
},
"7": {
"text": "Parts",
"created": "Fri, 27 Jan 2012 16:54:00 GMT",
"pgfnum": "4529",
"subs": {
"0": {
"text": "worldOutlineSuite.processMacros"
},
"1": {
"text": "worldOutlineSuite.macros"
},
"2": {
"text": "worldOutlineSuite.main"
}
}
}
}
},
"1": {
"text": "Better error messages on bad prefs links",
"created": "Fri, 27 Jan 2012 14:53:21 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4511",
"type": "blogpost",
"subs": {
"0": {
"text": "When you link to a prefs page that doesn't exist you get a perfectly awful error message.",
"created": "Fri, 27 Jan 2012 14:53:33 GMT",
"pgfnum": "4512",
"subs": {
"0": {
"text": "Array index is out of range. The table \"panelarray\" doesn't have an item #-1.",
"created": "Fri, 27 Jan 2012 14:55:40 GMT",
"pgfnum": "4513"
}
}
},
"1": {
"text": "Now there are two possible error message forms, which more accurately describe the problem:",
"created": "Fri, 27 Jan 2012 15:06:10 GMT",
"pgfnum": "4515",
"subs": {
"0": {
"text": "Can't display the prefs page because there is no panel numbered \"19.99.\"",
"created": "Fri, 27 Jan 2012 15:06:18 GMT",
"pgfnum": "4516"
},
"1": {
"text": "Can't display the prefs page because there is no panel entitled \"Hooray For Hollywood.\"",
"created": "Fri, 27 Jan 2012 15:06:38 GMT",
"pgfnum": "4517"
}
}
},
"2": {
"text": "Why this is important",
"created": "Fri, 27 Jan 2012 15:11:38 GMT",
"pgfnum": "4520",
"subs": {
"0": {
"text": "This is what users see when a link to a prefs page goes bad, either because it was removed or the title was changed.",
"created": "Fri, 27 Jan 2012 15:11:44 GMT",
"pgfnum": "4521"
},
"1": {
"text": "Better to talk to them in English rather than gibberish.",
"created": "Fri, 27 Jan 2012 15:12:52 GMT",
"pgfnum": "4522"
}
}
},
"3": {
"text": "Parts",
"created": "Fri, 27 Jan 2012 15:07:06 GMT",
"pgfnum": "4518",
"subs": {
"0": {
"text": "prefs2.viewPanel"
}
}
}
}
}
}
},
"5": {
"text": "1/26/12 by DW",
"created": "Thu, 26 Jan 2012 16:09:07 GMT",
"pgfnum": "4464",
"subs": {
"0": {
"text": "Saving on a fresh worldOutline installation",
"created": "Thu, 26 Jan 2012 20:06:49 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4504",
"type": "blogpost",
"subs": {
"0": {
"text": "Continuing with a fresh install.",
"created": "Thu, 26 Jan 2012 20:07:04 GMT",
"pgfnum": "4507"
},
"1": {
"text": "When you save an outline, it does a real hacky string parse, that breaks if the path begins with s3.amazonaws.com.",
"created": "Thu, 26 Jan 2012 20:07:13 GMT",
"pgfnum": "4508"
},
"2": {
"text": "We're going to kill the problem on both sides. Handle situations when the path begins with s3.amazonaws.com, and set it up so that by default it doesn't. But first we handle it.",
"created": "Thu, 26 Jan 2012 20:07:49 GMT",
"pgfnum": "4509"
},
"3": {
"text": "Parts",
"created": "Thu, 26 Jan 2012 20:06:56 GMT",
"pgfnum": "4505",
"subs": {
"0": {
"text": "worldOutlineSuite.roots.saveOutline",
"created": "Thu, 26 Jan 2012 20:06:58 GMT",
"pgfnum": "4506"
}
}
}
}
},
"1": {
"text": "DNS and a fresh worldOutline installation",
"created": "Thu, 26 Jan 2012 19:24:25 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4496",
"type": "blogpost",
"subs": {
"0": {
"text": "A fresh installation of worldOutline.root has config.worldOutline.prefs.dns.enabled set false. This is not good.",
"created": "Thu, 26 Jan 2012 19:24:33 GMT",
"pgfnum": "4497"
},
"1": {
"text": "It should be true, because the worldoutline app is fairly useless without it. You need to be able to allocate domain names to new roots, or else you won't be able to do much with them. So let's change this.",
"created": "Thu, 26 Jan 2012 19:25:34 GMT",
"pgfnum": "4498"
},
"2": {
"text": "Added a maintenence flag called enableDnsGlobally.",
"created": "Thu, 26 Jan 2012 19:26:19 GMT",
"pgfnum": "4499"
},
"3": {
"text": "Parts",
"created": "Thu, 26 Jan 2012 19:26:31 GMT",
"pgfnum": "4500",
"subs": {
"0": {
"text": "worldOutlineSuite.background.everyMinute",
"created": "Thu, 26 Jan 2012 19:26:32 GMT",
"pgfnum": "4501"
},
"1": {
"text": "worldoutlineSuite.init",
"created": "Thu, 26 Jan 2012 19:32:40 GMT",
"pgfnum": "4502"
},
"2": {
"text": "worldOutlineSuite.roots.setRootDomain"
}
}
}
}
},
"2": {
"text": "Testing worldOutline.root on cartwheel",
"created": "Thu, 26 Jan 2012 17:07:40 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"fldisquscomments": "true",
"pgfnum": "4472",
"type": "blogpost",
"subs": {
"0": {
"text": "Last night I set up a test micro instance called cartwheel on EC2 to be sure we run okay in that config. It's the one that Amazon is offering free for one year. Even though I won't get it for free, it's worth having one up and running so I can help people with their installations.",
"created": "Thu, 26 Jan 2012 17:07:47 GMT",
"pgfnum": "4473"
},
"1": {
"text": "Phil Ulrich reports a problem with installing worldOutline.root on his new server.",
"created": "Thu, 26 Jan 2012 17:08:28 GMT",
"pgfnum": "4474"
},
"2": {
"text": "So I'm going to try installing it on cartwheel and see what happens.",
"created": "Thu, 26 Jan 2012 17:08:48 GMT",
"pgfnum": "4475",
"subs": {
"0": {
"text": "Following the howto for setting up the worldOutline server software, the link to the domain-setting page was broken, so I rewrote the paragraph to help you navigate there. That's even better because I can mention some important concepts and get you looking at the prefs system for the OPML Editor. Important if you want to get a feel for running a server.",
"created": "Thu, 26 Jan 2012 17:26:18 GMT",
"pgfnum": "4480"
},
"1": {
"text": "I defined a CNAME for my editorial work, cartwheel.worldoutline.org.",
"created": "Thu, 26 Jan 2012 17:29:16 GMT",
"pgfnum": "4481"
},
"2": {
"text": "Also turned off caching. If you see any problems at all in using the worldoutline software, I suggest turning this off. I'm thinking about removing the feature, at least temporarily because the recent reorg probably broke stuff in there.",
"created": "Thu, 26 Jan 2012 17:31:29 GMT",
"pgfnum": "4482"
}
}
},
"3": {
"text": "Got the same result Phil reported. 500 Server Error, can't access this page because you're not logged in. ",
"created": "Thu, 26 Jan 2012 17:43:23 GMT",
"pgfnum": "4484",
"subs": {
"0": {
"text": "And that's quite true! It took me to the domain name I defined for editorial access, but I have never logged in using that address. So I don't have the cookie in the browser, and it's good that it didn't allow me access. But, it's bad that it didn't offer me a chance to log in. Now the question is -- why?",
"created": "Thu, 26 Jan 2012 17:44:10 GMT",
"pgfnum": "4486"
}
}
},
"4": {
"text": "The fix was pretty simple",
"created": "Thu, 26 Jan 2012 17:53:13 GMT",
"pgfnum": "4488",
"subs": {
"0": {
"text": "I just had the page redirect to the signin page when you don't have the cookie, and the signin page redirects to the roots page when you correctly signin. Excellent.",
"created": "Thu, 26 Jan 2012 17:53:19 GMT",
"pgfnum": "4489"
}
}
},
"5": {
"text": "To update",
"created": "Thu, 26 Jan 2012 17:55:07 GMT",
"pgfnum": "4493",
"subs": {
"0": {
"text": "On the server bring worldOutline.root to the front and choose Update Front Tool from the Tools menu.",
"created": "Thu, 26 Jan 2012 17:55:10 GMT",
"pgfnum": "4494"
}
}
},
"6": {
"text": "Parts",
"created": "Thu, 26 Jan 2012 17:53:53 GMT",
"pgfnum": "4490",
"subs": {
"0": {
"text": "worldOutlineWebsite.signin",
"created": "Thu, 26 Jan 2012 17:53:55 GMT",
"pgfnum": "4491"
},
"1": {
"text": "worldOutlineWebsite.roots",
"created": "Thu, 26 Jan 2012 17:55:03 GMT",
"pgfnum": "4492"
},
"2": {
"text": "worldOutlineInfo -- version 0.53.",
"created": "Thu, 26 Jan 2012 17:57:09 GMT",
"pgfnum": "4495"
}
}
}
}
},
"3": {
"text": "Problem in bookmarked outlines",
"created": "Thu, 26 Jan 2012 16:09:07 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4465",
"type": "blogpost",
"subs": {
"0": {
"text": "When I open a root outline from my Bookmarks menu, everything seems to work until I click the View button. Then it takes me to worldoutline.scripting.com/path/to/node instead of using the proper domain for this outline.",
"created": "Thu, 26 Jan 2012 16:09:20 GMT",
"pgfnum": "4466"
},
"1": {
"text": "The problem is in opmlEditor.worldOutline.getHeadlineUrl. When it surfaces as far as the root, it makes a call to opmlEditor.worldOutline.getUserPrefs. This gets the global prefs, when it really should get the prefs of the root outline that the user is editing. Fixed it so that's what it does.",
"created": "Thu, 26 Jan 2012 16:13:10 GMT",
"pgfnum": "4470"
},
"2": {
"text": "While here, a tweak -- if the cursor is on a headline with a \"url\" attribute, include it at the end of the path. That way, when you're getting the url of a node that is some kind of inclusion, you aren't fooled by the fact that it has no subs. When it's rendered on the worldoutline server it will have subs.",
"created": "Thu, 26 Jan 2012 16:43:32 GMT",
"pgfnum": "4471"
},
"3": {
"text": "Parts",
"created": "Thu, 26 Jan 2012 16:11:25 GMT",
"pgfnum": "4468",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.getUserPrefs"
},
"1": {
"text": "opmlEditor.worldOutline.getUserPrefs"
},
"2": {
"text": "opmlEditor.worldOutline.getHeadlineUrl",
"created": "Thu, 26 Jan 2012 16:11:27 GMT",
"pgfnum": "4469"
}
}
}
}
}
}
},
"6": {
"text": "1/25/12 by DW",
"created": "Wed, 25 Jan 2012 15:40:02 GMT",
"pgfnum": "4413",
"subs": {
"0": {
"text": "Seeing a node's atts in the About window",
"created": "Wed, 25 Jan 2012 22:51:32 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4456",
"type": "blogpost",
"subs": {
"0": {
"text": "In July I added callbacks to the scheduler that makes it possible for you to display your own status messages in the About window (the short wide window that displays the time).",
"created": "Wed, 25 Jan 2012 22:51:42 GMT",
"pgfnum": "4457"
},
"1": {
"text": "I've been running a callback since then that shows the attributes of the cursor headline in the About window. It's a necessity if you're writing world outlines. So now I'm releasing it so others can use it.",
"created": "Wed, 25 Jan 2012 22:52:32 GMT",
"pgfnum": "4458"
},
"2": {
"text": "To install it, update opml.root on your workstation.",
"created": "Wed, 25 Jan 2012 22:53:13 GMT",
"pgfnum": "4459"
},
"3": {
"text": "Jump to scheduler2.showAttsInAboutWindow. Click Run. It'll confirm that you want to install it as a statusMessage callback. Click OK if you do. That's it.",
"created": "Wed, 25 Jan 2012 22:59:42 GMT",
"pgfnum": "4463"
},
"4": {
"text": "I keep my About window at the top of my second monitor, across the full width of the screen, so I can see as many attributes as possible.",
"created": "Wed, 25 Jan 2012 22:56:52 GMT",
"pgfnum": "4462"
},
"5": {
"text": "Parts",
"created": "Wed, 25 Jan 2012 22:54:13 GMT",
"pgfnum": "4460",
"subs": {
"0": {
"text": "scheduler2.showAttsInAboutWindow",
"created": "Wed, 25 Jan 2012 22:54:14 GMT",
"pgfnum": "4461"
}
}
}
}
},
"1": {
"text": "pageTitle in default template",
"created": "Wed, 25 Jan 2012 17:31:09 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4441",
"type": "blogpost",
"subs": {
"0": {
"text": "Still using listings.opml.org as an example.",
"created": "Wed, 25 Jan 2012 17:31:14 GMT",
"pgfnum": "4442"
},
"1": {
"text": "Consider the page title -- World Outline: listings.opml.org.",
"created": "Wed, 25 Jan 2012 17:31:48 GMT",
"pgfnum": "4443"
},
"2": {
"text": "Screen shot.",
"created": "Wed, 25 Jan 2012 17:32:03 GMT",
"pgfnum": "4444"
},
"3": {
"text": "What should it be instead?",
"created": "Wed, 25 Jan 2012 17:46:56 GMT",
"pgfnum": "4445"
},
"4": {
"text": "Readers have no clue what \"World Outline\" is and why should they?",
"created": "Wed, 25 Jan 2012 17:47:54 GMT",
"pgfnum": "4447",
"subs": {
"0": {
"text": "We could put an ad in a comment in the HMTL source, that's where I look to find out how a site is generated.",
"created": "Wed, 25 Jan 2012 17:50:10 GMT",
"pgfnum": "4448"
}
}
},
"5": {
"text": "So I'm changing the default root template to have a title that's formed this way:",
"created": "Wed, 25 Jan 2012 17:50:22 GMT",
"pgfnum": "4449",
"subs": {
"0": {
"text": "<%outlineTitle%>: <pageTitle%>",
"created": "Wed, 25 Jan 2012 17:51:05 GMT",
"pgfnum": "4450"
}
}
},
"6": {
"text": "Turns out there's exactly one place where this needs to be set, in html.directory.walk.",
"created": "Wed, 25 Jan 2012 18:22:28 GMT",
"pgfnum": "4453"
},
"7": {
"text": "I changed the default template accordingly.",
"created": "Wed, 25 Jan 2012 18:22:46 GMT",
"pgfnum": "4454",
"subs": {
"0": {
"text": "If you're using a different template you'll have to make the change by hand.",
"created": "Wed, 25 Jan 2012 18:24:19 GMT",
"pgfnum": "4455"
}
}
},
"8": {
"text": "Parts",
"created": "Wed, 25 Jan 2012 17:52:07 GMT",
"pgfnum": "4451",
"subs": {
"0": {
"text": "html.directory.walk",
"created": "Wed, 25 Jan 2012 17:52:09 GMT",
"pgfnum": "4452"
}
}
}
}
},
"2": {
"text": "Titles and headerGraphics",
"created": "Wed, 25 Jan 2012 15:40:08 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4415",
"type": "blogpost",
"subs": {
"0": {
"text": "Fixed a major problem in the way titles and header graphics work.",
"created": "Wed, 25 Jan 2012 16:58:47 GMT",
"pgfnum": "4425"
},
"1": {
"text": "The <%outlineTitle%> macro and others like it didn't handle domains at all.",
"created": "Wed, 25 Jan 2012 16:59:04 GMT",
"pgfnum": "4426"
},
"2": {
"text": "The behavior that we want is this:",
"created": "Wed, 25 Jan 2012 16:59:22 GMT",
"pgfnum": "4427",
"subs": {
"0": {
"text": "When displaying an outline or directory set outlineTitle to the title of OPML file, with the following important exception.",
"created": "Wed, 25 Jan 2012 16:59:27 GMT",
"pgfnum": "4428"
},
"1": {
"text": "If we're going to a node contained within the outline that has a domain attribute, and it is the domain that the user is accessing, use the text attribute from its top headline as the outlineTitle.",
"created": "Wed, 25 Jan 2012 17:00:25 GMT",
"pgfnum": "4429"
},
"2": {
"text": "That's the technical description. An example will make it simpler.",
"created": "Wed, 25 Jan 2012 17:01:05 GMT",
"pgfnum": "4430"
}
}
},
"3": {
"text": "Example",
"created": "Wed, 25 Jan 2012 17:04:11 GMT",
"pgfnum": "4434",
"subs": {
"0": {
"text": "I have a domain called listings.opml.org. It's actually a small section of an outline I call My Sites. When you're viewing a page within the listings site, I want the title to be listings.opml.org, not My Sites.",
"created": "Wed, 25 Jan 2012 17:01:18 GMT",
"pgfnum": "4431"
},
"1": {
"text": "It should work the same for any page within listings.opml.org. Example.",
"created": "Wed, 25 Jan 2012 17:09:13 GMT",
"pgfnum": "4438"
}
}
},
"4": {
"text": "How it works",
"created": "Wed, 25 Jan 2012 17:04:17 GMT",
"pgfnum": "4435",
"subs": {
"0": {
"text": "Another way of saying it that's even simpler: It now works the way you think it would if you weren't thinking about it.",
"created": "Wed, 25 Jan 2012 17:03:23 GMT",
"pgfnum": "4432"
}
}
},
"5": {
"text": "Details",
"created": "Wed, 25 Jan 2012 17:04:38 GMT",
"pgfnum": "4436",
"subs": {
"0": {
"text": "outlineTitle was just an example. Other attributes that work this way are: outlineDescription, headerGraphic and headerEnabled. So header graphics should now work again more or less as they used to. Knock wood, I am not a lawyer, etc.",
"created": "Wed, 25 Jan 2012 17:04:40 GMT",
"pgfnum": "4437"
}
}
},
"6": {
"text": "How to update",
"created": "Wed, 25 Jan 2012 17:14:15 GMT",
"pgfnum": "4439",
"subs": {
"0": {
"text": "On the server, update opml.root and worldOutline.root. No changes on the workstation.",
"created": "Wed, 25 Jan 2012 17:14:18 GMT",
"pgfnum": "4440"
}
}
},
"7": {
"text": "Parts",
"created": "Wed, 25 Jan 2012 16:22:20 GMT",
"pgfnum": "4420",
"subs": {
"0": {
"text": "html.directory.popUri"
},
"1": {
"text": "html.directory.walk"
},
"2": {
"text": "worldOutlineSuite.main"
}
}
}
}
}
}
},
"7": {
"text": "1/24/12 by DW",
"created": "Tue, 24 Jan 2012 15:46:07 GMT",
"pgfnum": "4399",
"subs": {
"0": {
"text": "worldOutlineSuite.main",
"created": "Tue, 24 Jan 2012 17:34:59 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4410",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a core routine, like mainResponder.respond. It's where features pile up, and the code gets dense and fragile. It's a good place to master, because that's going to lead to clear docs, users and developers who understand the product, and something with a flexible yet simple extension architecture. And that's what I'm going to dive into when I get back from lunch!",
"created": "Tue, 24 Jan 2012 17:35:05 GMT",
"pgfnum": "4411"
}
}
},
"1": {
"text": "Your roots in a menu",
"created": "Tue, 24 Jan 2012 15:46:18 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4401",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's a utility script that might prove useful.",
"created": "Tue, 24 Jan 2012 15:46:38 GMT",
"pgfnum": "4402"
},
"1": {
"text": "Open opmlEditor.worldOutline.getRootsmenu and run it. A menubar object will open.",
"created": "Tue, 24 Jan 2012 15:46:51 GMT",
"pgfnum": "4403"
},
"2": {
"text": "You can copy/paste that into the Bookmarks menu.",
"created": "Tue, 24 Jan 2012 15:49:38 GMT",
"pgfnum": "4407"
},
"3": {
"text": "Choose Edit Bookmarks from the Bookmarks Menu.",
"created": "Tue, 24 Jan 2012 15:53:56 GMT",
"pgfnum": "4409"
},
"4": {
"text": "I ended up just keeping the outlines I accessed most frequently and edited the titles of the menu items, to make the menu look good. The goal is to make it easy to get to the things you need to get to often.",
"created": "Tue, 24 Jan 2012 15:51:16 GMT",
"pgfnum": "4408"
},
"5": {
"text": "You have to update your worldOutline.root on the server, and opml.root on your desktop.",
"created": "Tue, 24 Jan 2012 15:48:08 GMT",
"pgfnum": "4406"
},
"6": {
"text": "Parts",
"created": "Tue, 24 Jan 2012 15:47:54 GMT",
"pgfnum": "4404",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.getRootList",
"created": "Tue, 24 Jan 2012 15:47:56 GMT",
"pgfnum": "4405"
},
"1": {
"text": "opmlEditor.worldOutline.getRootsMenu"
}
}
}
}
}
}
},
"8": {
"text": "1/23/12 by DW",
"created": "Mon, 23 Jan 2012 15:46:38 GMT",
"pgfnum": "4349",
"subs": {
"0": {
"text": "Problem in myPhotos.root",
"created": "Mon, 23 Jan 2012 16:35:59 GMT",
"pgfnum": "4355",
"type": "blogpost",
"subs": {
"0": {
"text": "According to Kyle, when connecting to Flickr from the Prefs there something doesn't work properly.",
"created": "Mon, 23 Jan 2012 16:36:04 GMT",
"pgfnum": "4356",
"subs": {
"0": {
"text": "The \"Flickr site\" authorization link located on the myPhotos setup page at /opmlEditor/prefs?page=4.1 was the one that didn't work for me. The link to /opmlEditor/flickrAuthorize just appeared to hang."
}
}
},
"1": {
"text": "The problem for me isn't that the link hangs, but that it's broken. I fixed the link and now it takes me to the Flickr site to authorize the OPML Editor. And when I authorize it, it comes back and reports success.",
"created": "Tue, 24 Jan 2012 01:19:06 GMT",
"pgfnum": "4393"
},
"2": {
"text": "There's another problem -- the redirectUrl in myPhotosWebsite.flickrAuthorize sends the user back to the prefs system that's native to the tool. It should send them back to where they came from. Let's use the Referer header.",
"created": "Tue, 24 Jan 2012 01:21:47 GMT",
"pgfnum": "4396"
},
"3": {
"text": "To update, bring myPhotos.root to the front and choose Update Front Tool from the Tools menu.",
"created": "Tue, 24 Jan 2012 01:27:24 GMT",
"pgfnum": "4398"
},
"4": {
"text": "Parts",
"created": "Tue, 24 Jan 2012 01:21:05 GMT",
"pgfnum": "4394",
"subs": {
"0": {
"text": "myPhotosSuite.data.sysopPrefsOutline",
"created": "Tue, 24 Jan 2012 01:21:07 GMT",
"pgfnum": "4395"
},
"1": {
"text": "myPhotosWebsite.flickrAuthorize",
"created": "Tue, 24 Jan 2012 01:22:26 GMT",
"pgfnum": "4397"
}
}
}
}
},
"1": {
"text": "Outlines in tabs without template",
"created": "Mon, 23 Jan 2012 16:52:09 GMT",
"pgfnum": "4357",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to make it so that outlines in tabs don't render in their templates.",
"created": "Mon, 23 Jan 2012 16:52:11 GMT",
"pgfnum": "4358"
},
"1": {
"text": "Here's the demo.",
"created": "Tue, 24 Jan 2012 00:56:01 GMT",
"pgfnum": "4392"
},
"2": {
"text": "I now have that feature working in worldOutlineSuite.viewOutline.",
"created": "Mon, 23 Jan 2012 16:52:23 GMT",
"pgfnum": "4359"
},
"3": {
"text": "Here's a screen shot that illustrates the problem.",
"created": "Mon, 23 Jan 2012 17:45:11 GMT",
"pgfnum": "4365"
},
"4": {
"text": "Have to let worldOutlineSuite.viewOutlineCallback know when we're inside a tab. There's a new attribute called flTab that's true when we're rendering inside a tab, and either undefined or false in other circumstances.",
"created": "Mon, 23 Jan 2012 16:52:35 GMT",
"pgfnum": "4360"
},
"5": {
"text": "It works easily enough. Here's the screen shot after the fix.",
"created": "Mon, 23 Jan 2012 18:31:12 GMT",
"pgfnum": "4368"
},
"6": {
"text": "An aside -- I think you could do a pretty nice presenter with this functionality.",
"created": "Mon, 23 Jan 2012 18:32:13 GMT",
"pgfnum": "4369"
},
"7": {
"text": "Parts",
"created": "Mon, 23 Jan 2012 18:01:56 GMT",
"pgfnum": "4366",
"subs": {
"0": {
"text": "prefs2.bootstrap.xstructToTabs"
},
"1": {
"text": "worldOutlineSuite.viewOutlineCallback"
}
}
}
}
},
"2": {
"text": "The world outline user docs are out of date",
"created": "Mon, 23 Jan 2012 23:04:48 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4389",
"type": "blogpost",
"subs": {
"0": {
"text": "Let's fix that.",
"created": "Mon, 23 Jan 2012 23:04:55 GMT",
"pgfnum": "4390"
},
"1": {
"text": "I've created a new user on my server to see what a new user would see.",
"created": "Mon, 23 Jan 2012 23:04:58 GMT",
"pgfnum": "4391"
},
"2": {
"text": "The user's name is Hooligan. I'm not telling you the password. :-)",
"created": "Mon, 23 Jan 2012 23:22:22 GMT",
"pgfnum": "4402"
},
"3": {
"text": "http://userdocs.worldoutline.org/",
"created": "Mon, 23 Jan 2012 23:21:09 GMT",
"pgfnum": "4401"
}
}
},
"3": {
"text": "Improved rotating header code in Scripting2",
"created": "Mon, 23 Jan 2012 17:36:27 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4361",
"type": "blogpost",
"subs": {
"0": {
"text": "It wasn't random enough for my taste. I don't know why. So I wrote a fancier randomizer that ensures a better distribution. It chooses from all the graphics that have appeared least frequently. This guarantees they all get a visit no matter how shitty the randomizer is.",
"created": "Mon, 23 Jan 2012 17:36:37 GMT",
"pgfnum": "4362"
},
"1": {
"text": "Parts",
"created": "Mon, 23 Jan 2012 17:37:30 GMT",
"pgfnum": "4363",
"subs": {
"0": {
"text": "scripting2Suite.server.setupMacrosTable"
},
"1": {
"text": "scripting2Suite.utilities.getRotatingHeader"
}
}
}
}
},
"4": {
"text": "Problem with blorkmarks",
"created": "Mon, 23 Jan 2012 22:04:30 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4370",
"type": "blogpost",
"subs": {
"0": {
"text": "I started with a virgin OPML Editor.",
"created": "Mon, 23 Jan 2012 22:04:35 GMT",
"pgfnum": "4371"
},
"1": {
"text": "Chose Open Roots Page from the World Outline sub-menu of the Outliner menu.",
"created": "Mon, 23 Jan 2012 22:21:41 GMT",
"pgfnum": "4372",
"subs": {
"0": {
"text": "Got an error. We haven't set up the connection to the world outline server yet.",
"created": "Mon, 23 Jan 2012 22:21:59 GMT",
"pgfnum": "4373"
},
"1": {
"text": "http://userdocs.worldoutline.org/",
"created": "Mon, 23 Jan 2012 22:25:22 GMT",
"pgfnum": "4374"
},
"2": {
"text": "Followed the setup instructions, and now I can open the roots page.",
"created": "Mon, 23 Jan 2012 22:27:51 GMT",
"pgfnum": "4375"
}
}
},
"2": {
"text": "Now to create a blorkmark!",
"created": "Mon, 23 Jan 2012 22:28:04 GMT",
"pgfnum": "4376",
"subs": {
"0": {
"text": "I got the same error Kyle did.",
"created": "Mon, 23 Jan 2012 22:28:15 GMT",
"pgfnum": "4377"
},
"1": {
"text": "The server, blorkmarkserver.scripting.com, returned error code 4: Couldn't allocate the name \"vgucs.blorkmark.com\" because there was an error: \"Invalid Resource Record: FATAL problem: DomainNameEmpty encountered at.\"",
"created": "Mon, 23 Jan 2012 22:29:52 GMT",
"pgfnum": "4378"
}
}
},
"3": {
"text": "The problem",
"created": "Mon, 23 Jan 2012 22:33:42 GMT",
"pgfnum": "4379",
"subs": {
"0": {
"text": "user.opmlEditor.prefs.dnsApiCNAME is empty.",
"created": "Mon, 23 Jan 2012 22:33:45 GMT",
"pgfnum": "4380"
},
"1": {
"text": "If it's empty, we should use user.opmleditor.worldoutline.prefs.domain instead.",
"created": "Mon, 23 Jan 2012 22:33:50 GMT",
"pgfnum": "4381"
},
"2": {
"text": "Works! :-)",
"created": "Mon, 23 Jan 2012 22:41:30 GMT",
"pgfnum": "4382"
}
}
},
"4": {
"text": "Here are my test pages",
"created": "Mon, 23 Jan 2012 22:41:32 GMT",
"pgfnum": "4383",
"subs": {
"0": {
"text": "http://vgucs.blorkmark.com/ and http://foolonthehill.blorkmark.com/",
"created": "Mon, 23 Jan 2012 22:41:39 GMT",
"pgfnum": "4384"
}
}
},
"5": {
"text": "Parts",
"created": "Mon, 23 Jan 2012 22:41:51 GMT",
"pgfnum": "4385",
"subs": {
"0": {
"text": "opmleditor.blorkmark.add",
"created": "Mon, 23 Jan 2012 22:41:52 GMT",
"pgfnum": "4386"
}
}
}
}
},
"5": {
"text": "Harvard News",
"created": "Mon, 23 Jan 2012 15:46:39 GMT",
"pgfnum": "4350",
"type": "blogpost",
"subs": {
"0": {
"text": "It's starting to look pretty good.",
"created": "Mon, 23 Jan 2012 15:46:48 GMT",
"pgfnum": "4351"
},
"1": {
"text": "http://harvard.newsriver.org/",
"created": "Mon, 23 Jan 2012 15:46:53 GMT",
"pgfnum": "4352"
},
"2": {
"text": "I played with colors and backgrounds.",
"created": "Mon, 23 Jan 2012 15:46:59 GMT",
"pgfnum": "4353"
},
"3": {
"text": "Got a little help from the Bootstrap list.",
"created": "Mon, 23 Jan 2012 15:47:06 GMT",
"pgfnum": "4354"
}
}
}
}
},
"9": {
"text": "1/22/12 by DW",
"created": "Sun, 22 Jan 2012 19:13:58 GMT",
"pgfnum": "4335",
"subs": {
"0": {
"text": "Why does listings.opml.org have the wrong title?",
"created": "Sun, 22 Jan 2012 19:34:13 GMT",
"pgfnum": "4346",
"type": "blogpost",
"subs": {
"0": {
"text": "When I display listings.opml.org the title says \"My Sites.\" This is wrong.",
"created": "Sun, 22 Jan 2012 19:34:30 GMT",
"pgfnum": "4348"
},
"1": {
"text": "This is something that must have broken in the last corner turn.",
"created": "Sun, 22 Jan 2012 19:34:22 GMT",
"pgfnum": "4347"
}
}
},
"1": {
"text": "Code nodetypes display as outlines",
"created": "Sun, 22 Jan 2012 19:13:58 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4336",
"type": "blogpost",
"subs": {
"0": {
"text": "Now you can expand your way through a code nodetype. This is good because the old form of display, inside an HTML <pre> element, didn't handle wrapping well. So the code was virtually impossible to follow.",
"created": "Sun, 22 Jan 2012 19:14:10 GMT",
"pgfnum": "4337"
},
"1": {
"text": "Here's an example of what some code looks like now.",
"created": "Sun, 22 Jan 2012 19:23:27 GMT",
"pgfnum": "4344"
},
"2": {
"text": "This is also good because we now have working code that renders an expandable outline for another nodetype. So it can be re-used in other places. Where I need it next is in tabs.",
"created": "Sun, 22 Jan 2012 19:15:00 GMT",
"pgfnum": "4340"
},
"3": {
"text": "I also changed the default template for code to style the outline elements. There's a lot you can do to change the way they look. I added more divs and spans to the outline text to make it look better. For example, you can now style comments any way you want.",
"created": "Sun, 22 Jan 2012 19:18:31 GMT",
"pgfnum": "4341"
},
"4": {
"text": "Look for breakage in rendering outlines elsewhere. Here's my states outline with a blog post under Flint Michigan. It seems to work as before.",
"created": "Sun, 22 Jan 2012 19:19:38 GMT",
"pgfnum": "4342"
},
"5": {
"text": "I posted a note on the Frontier-User and World-Outline mail lists, thought the old-timers would like to see what a script listing looks like these days.",
"created": "Sun, 22 Jan 2012 19:22:09 GMT",
"pgfnum": "4343"
},
"6": {
"text": "Parts",
"created": "Sun, 22 Jan 2012 19:14:54 GMT",
"pgfnum": "4338",
"subs": {
"0": {
"text": "worldOutlineSuite.viewCodeCallback"
},
"1": {
"text": "worldOutlineSuite.viewOutline"
}
}
}
}
}
}
},
"10": {
"text": "1/21/12 by DW",
"created": "Sat, 21 Jan 2012 15:43:51 GMT",
"pgfnum": "4299",
"subs": {
"0": {
"text": "RPC handler to return roots",
"created": "Sat, 21 Jan 2012 18:36:32 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4327",
"type": "blogpost",
"subs": {
"0": {
"text": "scratchpad.myroots = [user.opmlEditor.worldOutline.prefs.server].worldoutline.getrootlist (\"dave\", string (user.opmlEditor.worldOutline.prefs.password))",
"created": "Sat, 21 Jan 2012 18:36:39 GMT",
"pgfnum": "4328"
},
"1": {
"text": "Parts",
"created": "Sat, 21 Jan 2012 22:38:12 GMT",
"pgfnum": "4333",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.getRootList"
}
}
}
}
},
"1": {
"text": "Problem with blorkmarks?",
"created": "Sat, 21 Jan 2012 17:43:25 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4310",
"type": "blogpost",
"subs": {
"0": {
"text": "I've heard reports that blorkmarks are broken, but I just did a test, and it worked for me.",
"created": "Sat, 21 Jan 2012 17:43:29 GMT",
"pgfnum": "4311",
"subs": {
"0": {
"text": "http://d7nc9.blorkmark.com/",
"created": "Sat, 21 Jan 2012 17:50:16 GMT",
"pgfnum": "4325"
}
}
},
"1": {
"text": "What I did...",
"created": "Sat, 21 Jan 2012 17:52:06 GMT",
"pgfnum": "4326",
"subs": {
"0": {
"text": "1. Opened my scratchpad outline.",
"created": "Sat, 21 Jan 2012 17:48:26 GMT",
"pgfnum": "4317"
},
"1": {
"text": "2. Added a headline with some subs.",
"created": "Sat, 21 Jan 2012 17:48:33 GMT",
"pgfnum": "4318"
},
"2": {
"text": "3. Clicked the Blorkmark button.",
"created": "Sat, 21 Jan 2012 17:48:50 GMT",
"pgfnum": "4319"
},
"3": {
"text": "4. Accepted the name it suggested.",
"created": "Sat, 21 Jan 2012 17:48:55 GMT",
"pgfnum": "4320"
},
"4": {
"text": "5. Waited till the dialog came back saying it had created the blorkmark. This can take up to a half-minute and is not something we control.",
"created": "Sat, 21 Jan 2012 17:49:05 GMT",
"pgfnum": "4321"
},
"5": {
"text": "6. When it came back I accepted the offer to visit the site.",
"created": "Sat, 21 Jan 2012 17:49:41 GMT",
"pgfnum": "4322"
}
}
}
}
},
"2": {
"text": "Problem with rivers in world outline",
"created": "Sat, 21 Jan 2012 15:43:52 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4300",
"type": "blogpost",
"subs": {
"0": {
"text": "Sometimes you'd get an error \"can't display this because xmltext is not defined\" or something like that.",
"created": "Sat, 21 Jan 2012 15:44:02 GMT",
"pgfnum": "4301"
},
"1": {
"text": "The problem is that when we fetch the outline, we don't need to read the OPML because it hasn't changed, but if the previous read didn't try to get the xmltext, we won't have it.",
"created": "Sat, 21 Jan 2012 15:44:25 GMT",
"pgfnum": "4302"
},
"2": {
"text": "So we just have to force the read in this case.",
"created": "Sat, 21 Jan 2012 15:45:04 GMT",
"pgfnum": "4303"
},
"3": {
"text": "The problem was introduced when we started using OPML files stored elsewhere for templates. It probably was showing up on AC's server. The problem was cured by quitting and restarting the server. You no longer need to do that.",
"created": "Sat, 21 Jan 2012 15:45:14 GMT",
"pgfnum": "4304"
},
"4": {
"text": "Parts",
"created": "Sat, 21 Jan 2012 15:45:47 GMT",
"pgfnum": "4305",
"subs": {
"0": {
"text": "op.getNetOutline",
"created": "Sat, 21 Jan 2012 15:46:02 GMT",
"pgfnum": "4306"
}
}
}
}
}
}
},
"11": {
"text": "1/20/12 by DW",
"created": "Fri, 20 Jan 2012 18:43:33 GMT",
"pgfnum": "4264",
"subs": {
"0": {
"text": "How daveriver.scripting.com works",
"created": "Fri, 20 Jan 2012 20:08:26 GMT",
"pgfnum": "4290",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a user named \"iowa\" for historic reasons on Houston that subscribes to the feeds I subscribe to.",
"created": "Fri, 20 Jan 2012 20:09:56 GMT",
"pgfnum": "4295"
},
"1": {
"text": "I used to add feeds by adding to reading list in the outliner, but now I have a follow bookmarklet that's fast and very easy, so I use that instead. It adds to the scripting community user on Houston, and I sub to his OPML on iowa/houston.",
"created": "Fri, 20 Jan 2012 20:10:13 GMT",
"pgfnum": "4296"
},
"2": {
"text": "daveriver has a custom template, that I edit in the outliner. It's in my Dropbox public folder and mirrored on S3 at:",
"created": "Fri, 20 Jan 2012 20:10:42 GMT",
"pgfnum": "4297",
"subs": {
"0": {
"text": "http://dropbox.scripting.com/dave/outlines/iowaRiverTemplateV2.opml",
"created": "Fri, 20 Jan 2012 20:11:38 GMT",
"pgfnum": "4298"
}
}
},
"3": {
"text": "On the server, in river2data.users.iowa.callbacks.afterStaticFileWrite.writeToApache, we write every file to a folder on our Apache server, which daveriver.scripting.com maps to.",
"created": "Fri, 20 Jan 2012 21:46:31 GMT",
"pgfnum": "4299"
}
}
},
"1": {
"text": "Change in World Outline sub-menu",
"created": "Fri, 20 Jan 2012 19:05:59 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4278",
"type": "blogpost",
"subs": {
"0": {
"text": "The World Outline sub-menu of the Outliner menu is where the editorial action is for the world outline.",
"created": "Fri, 20 Jan 2012 19:06:12 GMT",
"pgfnum": "4279"
},
"1": {
"text": "The first command in the menu used to be Open My Outline. Now it is Open Roots Page.",
"created": "Fri, 20 Jan 2012 19:06:32 GMT",
"pgfnum": "4280"
},
"2": {
"text": "There used to be a domain page in the user prefs for the world outline. This is no longer needed, because each root can have its own domain. Instead having one main domain, you can have many.",
"created": "Fri, 20 Jan 2012 19:21:01 GMT",
"pgfnum": "4284"
},
"3": {
"text": "The Domains page goes away. It's no longer in the menu bar. Again we have many possible domains for each root where we used to have one. This page will come back, linked into the name count for each root, on the Roots page.",
"created": "Fri, 20 Jan 2012 19:23:46 GMT",
"pgfnum": "4285"
},
"4": {
"text": "However, the Editorial Domain page in the system prefs is very important. This is the domain we'll take the user to when they open the Roots page from the World Outline sub-menu of the Outliner menu.",
"created": "Fri, 20 Jan 2012 19:25:42 GMT",
"pgfnum": "4287",
"subs": {
"0": {
"text": "To get there choose OPML Editor from the dropdown menu in the right corner of the menubar in any web page. From there, choose Prefs, and then go to the Domain page in the World Outline section.",
"created": "Fri, 20 Jan 2012 19:26:58 GMT",
"pgfnum": "4288"
},
"1": {
"text": "Or, go to this page from the browser on your server machine.",
"created": "Fri, 20 Jan 2012 19:28:37 GMT",
"pgfnum": "4289"
}
}
},
"5": {
"text": "Parts",
"created": "Fri, 20 Jan 2012 18:48:28 GMT",
"pgfnum": "4273",
"subs": {
"0": {
"text": "worldoutlineSuite.init",
"created": "Fri, 20 Jan 2012 18:48:30 GMT",
"pgfnum": "4274"
},
"1": {
"text": "worldOutlineSuite.data.prefsForSetup",
"created": "Fri, 20 Jan 2012 18:48:39 GMT",
"pgfnum": "4275"
},
"2": {
"text": "worldOutlineRpcHandlers.getRootsPageUrl"
},
"3": {
"text": "worldOutlineSuite.setup.validateDomain"
},
"4": {
"text": "opmlEditor.worldOutline.openRootsPage"
},
"5": {
"text": "system.menus.menubar",
"created": "Fri, 20 Jan 2012 19:05:37 GMT",
"pgfnum": "4277"
},
"6": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"7": {
"text": "worldOutlineSuite.viewMenu",
"created": "Fri, 20 Jan 2012 19:24:08 GMT",
"pgfnum": "4286"
}
}
}
}
},
"2": {
"text": "Domain names and world outline",
"created": "Fri, 20 Jan 2012 18:43:34 GMT",
"pgfnum": "4265",
"type": "blogpost",
"subs": {
"0": {
"text": "One more level to go to get the domain name stuff sorted out for the worldoutline app.",
"created": "Fri, 20 Jan 2012 18:43:56 GMT",
"pgfnum": "4266"
},
"1": {
"text": "Right now, we ask the sysop for a domain name for his server, but we don't actually use it for anything. It becomes the admin user's base outline, but that isn't even important anymore.",
"created": "Fri, 20 Jan 2012 18:44:11 GMT",
"pgfnum": "4267"
},
"2": {
"text": "So I'm going to do a corner-turn. New global, config.worldoutline.prefs.domain. When we generate a URL into the editorial system for the site, this is the domain we will use.",
"created": "Fri, 20 Jan 2012 18:44:54 GMT",
"pgfnum": "4268"
},
"3": {
"text": "It is initialized to default.users.admin.worldOutline.prefs.defaultAtts.domain.",
"created": "Fri, 20 Jan 2012 18:45:45 GMT",
"pgfnum": "4270"
},
"4": {
"text": "Now the two are decoupled. If anyone had any sites using the admin user's domain, they still work. But now you can change the value of the editorialDomain without fucking up the admin user's website. Confusing? YES.",
"created": "Fri, 20 Jan 2012 18:47:03 GMT",
"pgfnum": "4271"
}
}
}
}
},
"12": {
"text": "1/19/12 by DW",
"created": "Thu, 19 Jan 2012 14:02:33 GMT",
"pgfnum": "4264",
"subs": {
"0": {
"text": "The \"Open My Outline\" menu item",
"created": "Thu, 19 Jan 2012 15:37:55 GMT",
"pgfnum": "4279",
"subs": {
"0": {
"text": "Background",
"created": "Thu, 19 Jan 2012 15:40:08 GMT",
"pgfnum": "4284",
"subs": {
"0": {
"text": "Until today there was an item in the World Outline sub-menu of the OUtliner menu that opened your single outline.",
"created": "Thu, 19 Jan 2012 15:38:14 GMT",
"pgfnum": "4280"
},
"1": {
"text": "In the old model, there was The Outline, the place where all your content originated. You could fork off Archive files, but there was no easy way to edit them. We created a temporary path through the Bookmarks menu, knowing that wouldn't be the way to go ultimately.",
"created": "Thu, 19 Jan 2012 15:38:34 GMT",
"pgfnum": "4281"
},
"2": {
"text": "Now our model is you have N starting points. So instead of opening The Outline, we should get you to the web page where all your starting points are. From there you can open any one of them.",
"created": "Thu, 19 Jan 2012 15:39:24 GMT",
"pgfnum": "4282"
}
}
},
"1": {
"text": "Implementation",
"created": "Thu, 19 Jan 2012 15:40:04 GMT",
"pgfnum": "4283",
"subs": {
"0": {
"text": "New RPC handler in world outline, that returns the address of the roots page.",
"created": "Thu, 19 Jan 2012 15:41:41 GMT",
"pgfnum": "4285",
"subs": {
"0": {
"text": "It takes a username/password so that we'll have the option at some point in the future to return a different url based on the username.",
"created": "Thu, 19 Jan 2012 15:45:10 GMT",
"pgfnum": "4292"
}
}
},
"1": {
"text": "[\"xmlrpc://worldoutline.scripting.com/RPC2\"].worldoutline.getrootspageurl (\"dave\", \"xxx\")",
"created": "Thu, 19 Jan 2012 15:52:18 GMT",
"pgfnum": "4293",
"subs": {}
},
"2": {
"text": "We call that handler from the menu command, and then send the user there via webbrowser.openurl.",
"created": "Thu, 19 Jan 2012 15:41:52 GMT",
"pgfnum": "4286"
},
"3": {
"text": "The domain for this page can be set from the OPML Editor prefs, the World Outline section.",
"created": "Thu, 19 Jan 2012 15:42:12 GMT",
"pgfnum": "4288",
"subs": {
"0": {
"text": "http://127.0.0.1:5337/opmlEditor/prefs?title=domainname",
"created": "Thu, 19 Jan 2012 15:43:27 GMT",
"pgfnum": "4289"
}
}
}
}
},
"2": {
"text": "Parts",
"created": "Thu, 19 Jan 2012 15:44:37 GMT",
"pgfnum": "4290",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.getRootsPageUrl",
"created": "Thu, 19 Jan 2012 15:44:38 GMT",
"pgfnum": "4291"
}
}
}
}
},
"1": {
"text": "Setting up a new river",
"created": "Thu, 19 Jan 2012 14:02:34 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4265",
"type": "blogpost",
"subs": {
"0": {
"text": "Talking about doing a project with some former colleagues at Harvard, so naturally the first thing to do is to get a river going, so we can see the immediate benefit.",
"created": "Thu, 19 Jan 2012 14:02:45 GMT",
"pgfnum": "4266"
},
"1": {
"text": "I'm going to take notes on how I did it, so others can see how to set up a second river.",
"created": "Thu, 19 Jan 2012 14:05:01 GMT",
"pgfnum": "4268"
},
"2": {
"text": "1. Created a new user.",
"created": "Thu, 19 Jan 2012 14:05:49 GMT",
"pgfnum": "4269"
},
"3": {
"text": "2. Logged onto River2.",
"created": "Thu, 19 Jan 2012 14:06:04 GMT",
"pgfnum": "4270"
},
"4": {
"text": "3. Deleted all the initial feeds it subscribed me to.",
"created": "Thu, 19 Jan 2012 14:06:10 GMT",
"pgfnum": "4271"
},
"5": {
"text": "4. Edited the user prefs, to give my river a name, description,",
"created": "Thu, 19 Jan 2012 14:06:20 GMT",
"pgfnum": "4272"
},
"6": {
"text": "5. Enabled the open subs feature so my friends can add feeds, when we're ready for them to do that.",
"created": "Thu, 19 Jan 2012 14:08:30 GMT",
"pgfnum": "4273"
},
"7": {
"text": "6. I added the open subs link to my toolbar so I can easily start adding feeds.",
"subs": {
"0": {
"text": "Ooops, I got an error.",
"created": "Thu, 19 Jan 2012 14:10:26 GMT",
"pgfnum": "4274"
}
}
},
"8": {
"text": "7. Subscribe to about 25 feeds.",
"created": "Thu, 19 Jan 2012 14:53:15 GMT",
"pgfnum": "4276"
},
"9": {
"text": "8. Link to it from my worldoutline with a nice clean url.",
"created": "Thu, 19 Jan 2012 14:53:24 GMT",
"pgfnum": "4277",
"subs": {
"0": {
"text": "http://harvard.newsriver.org/",
"created": "Thu, 19 Jan 2012 14:53:40 GMT",
"pgfnum": "4278"
}
}
}
}
}
}
},
"13": {
"text": "1/18/12 by DW",
"created": "Wed, 18 Jan 2012 13:32:48 GMT",
"pgfnum": "4257",
"subs": {
"0": {
"text": "Demoing the world outline for Doc",
"created": "Thu, 19 Jan 2012 01:48:29 GMT",
"pgfnum": "4",
"subs": {
"0": {
"text": "I'm sitting in my living room demoing my worknotes process for Doc Searls using the OPML Editor.",
"created": "Thu, 19 Jan 2012 01:48:34 GMT",
"pgfnum": "5"
}
}
},
"1": {
"text": "Blacked out scripting.com",
"created": "Wed, 18 Jan 2012 14:20:17 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4264",
"type": "blogpost",
"subs": {
"0": {
"text": "I think it's pretty lame but everyone is doing it so wtf.",
"created": "Wed, 18 Jan 2012 14:20:21 GMT",
"pgfnum": "4265"
},
"1": {
"text": "The real IP address: 50.16.40.64.",
"created": "Wed, 18 Jan 2012 14:20:31 GMT",
"pgfnum": "4266"
},
"2": {
"text": "The temporary one: 173.203.65.251.",
"created": "Wed, 18 Jan 2012 14:20:39 GMT",
"pgfnum": "4267"
}
}
},
"2": {
"text": "S3 folder synch, again",
"created": "Wed, 18 Jan 2012 13:32:49 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4258",
"type": "blogpost",
"subs": {
"0": {
"text": "Ooops, it was in the prefs outline. In a separate section called Optional features. Now I have two S3 folder synch panels.",
"created": "Wed, 18 Jan 2012 13:44:53 GMT",
"pgfnum": "4261"
},
"1": {
"text": "So I did another release without the Optional features section (since we were obviously not seeing it for some reason).",
"created": "Wed, 18 Jan 2012 13:46:42 GMT",
"pgfnum": "4262"
},
"2": {
"text": "I spotted this because I did a fresh install of OPML on a new server. Also spotted some other errors.",
"created": "Wed, 18 Jan 2012 13:47:01 GMT",
"pgfnum": "4263"
},
"3": {
"text": "Parts",
"created": "Tue, 17 Jan 2012 16:01:21 GMT",
"pgfnum": "4261",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.prefs"
}
}
}
}
}
}
},
"14": {
"text": "1/17/12 by DW",
"created": "Tue, 17 Jan 2012 16:00:45 GMT",
"pgfnum": "4257",
"subs": {
"0": {
"text": "Updating for newbies",
"created": "Tue, 17 Jan 2012 16:12:06 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"fldisquscomments": "true",
"pgfnum": "4267",
"type": "blogpost",
"subs": {
"0": {
"text": "When you see news of a code update, and you want to get the change asap, choose Update opml.root from the File menu.",
"created": "Tue, 17 Jan 2012 16:11:08 GMT",
"pgfnum": "4266"
},
"1": {
"text": "If it's in a specific tool, like Radio2, River2 or worldOutline, then bring that root to the front and choose Update Front Tool from the Tools menu.",
"created": "Tue, 17 Jan 2012 16:12:32 GMT",
"pgfnum": "4269"
},
"2": {
"text": "If you leave the OPML app running overnight it will automatically update opml.root and all open tools. Servers running River2 will update every time they do a scan. (The updating is RSS-based, the theory is that updating is no more expensive than checking a feed, so if you're already checking a lot of feeds, why not check one more.)",
"created": "Tue, 17 Jan 2012 16:16:49 GMT",
"pgfnum": "4270"
}
}
},
"1": {
"text": "S3 folder synch prefs",
"created": "Tue, 17 Jan 2012 16:00:47 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4258",
"type": "blogpost",
"subs": {
"0": {
"text": "Somehow this prefs panel disappeared from the OPML Editor prefs system.",
"created": "Tue, 17 Jan 2012 16:00:57 GMT",
"pgfnum": "4259"
},
"1": {
"text": "Screen shot.",
"created": "Tue, 17 Jan 2012 16:05:24 GMT",
"pgfnum": "4265"
},
"2": {
"text": "I was able to find it in a backup, luckily. :-)",
"created": "Tue, 17 Jan 2012 16:01:14 GMT",
"pgfnum": "4260"
},
"3": {
"text": "If you're using Folder Synch, please verify that it still works and accurately reflects your prefs.",
"created": "Tue, 17 Jan 2012 16:02:46 GMT",
"pgfnum": "4264"
},
"4": {
"text": "Parts",
"created": "Tue, 17 Jan 2012 16:01:21 GMT",
"pgfnum": "4261",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.prefs"
}
}
}
}
}
}
},
"15": {
"text": "1/15/12 by DW",
"created": "Sun, 15 Jan 2012 15:02:11 GMT",
"pgfnum": "4257",
"subs": {
"0": {
"text": "Releasing code for \"tabs\" nodetype",
"created": "Sun, 15 Jan 2012 15:02:12 GMT",
"pgfnum": "4258",
"type": "blogpost",
"subs": {
"0": {
"text": "How to use",
"created": "Sun, 15 Jan 2012 15:06:31 GMT",
"pgfnum": "4261",
"subs": {
"0": {
"text": "Create a node with type set to \"tabs\". The first level subheads are the titles of the tabs, and the second-level subs are the tab contents. Demo.",
"created": "Sun, 15 Jan 2012 15:06:34 GMT",
"pgfnum": "4262"
},
"1": {
"text": "A first-level head can itself be a nodetype, which gives you this kind of power.",
"created": "Sun, 15 Jan 2012 15:07:03 GMT",
"pgfnum": "4263"
}
}
},
"1": {
"text": "Watch for breakage",
"created": "Sun, 15 Jan 2012 15:08:57 GMT",
"pgfnum": "4265",
"subs": {
"0": {
"text": "The place where you're likely to see breakage is in the Prefs for roots page.",
"created": "Sun, 15 Jan 2012 15:09:01 GMT",
"pgfnum": "4266"
},
"1": {
"text": "Also, be prepared for functionality changes, because the code is fairly magical and \"just works.\" Which means there are cases I never thought of that probably don't work.",
"created": "Sun, 15 Jan 2012 15:09:23 GMT",
"pgfnum": "4267"
},
"2": {
"text": "For example, the URLs of photos in thumblist pages are wrong. They assume the photos are stored in the same place as the thumb list. This is not true when you're including a thumblist in a panel.",
"created": "Sun, 15 Jan 2012 15:10:12 GMT",
"pgfnum": "4268"
}
}
},
"2": {
"text": "Parts",
"created": "Sun, 15 Jan 2012 15:02:26 GMT",
"pgfnum": "4259",
"subs": {
"0": {
"text": "worldOutlineSuite.init"
},
"1": {
"text": "prefs2.bootstrap"
},
"2": {
"text": "worldOutlineSuite.data.urls.defaultTabsTemplate"
},
"3": {
"text": "worldOutlineSuite.viewTabsCallback"
}
}
}
}
}
}
},
"16": {
"text": "1/14/12 by DW",
"created": "Sat, 14 Jan 2012 16:32:21 GMT",
"pgfnum": "4262",
"subs": {
"0": {
"text": "Nodetypes under tabs",
"created": "Sat, 14 Jan 2012 16:32:23 GMT",
"pgfnum": "4263",
"type": "blogpost",
"subs": {
"0": {
"text": "Digging the hole even deeper. I can now put nodes with types under tabs.",
"created": "Sat, 14 Jan 2012 16:32:34 GMT",
"pgfnum": "4264"
},
"1": {
"text": "http://davearchive037.mediahackers.org/nodetypes/moreTabs",
"created": "Sat, 14 Jan 2012 16:32:52 GMT",
"pgfnum": "4265"
},
"2": {
"text": "Yes this uncovers a lot of loose ends, because I never anticipated this kind of twisted placement of code and outline bits.",
"created": "Sat, 14 Jan 2012 16:42:50 GMT",
"pgfnum": "4269"
},
"3": {
"text": "Lots of mind bombs here.",
"created": "Sat, 14 Jan 2012 16:43:32 GMT",
"pgfnum": "4270"
}
}
}
}
},
"17": {
"text": "1/13/12 by DW",
"created": "Fri, 13 Jan 2012 15:18:23 GMT",
"pgfnum": "4207",
"subs": {
"0": {
"text": "Sneak peak at what's next",
"created": "Sat, 14 Jan 2012 00:28:00 GMT",
"pgfnum": "4252",
"type": "blogpost",
"subs": {
"0": {
"text": "To give you an idea of where we can go with Bootstrap.",
"created": "Sat, 14 Jan 2012 00:28:16 GMT",
"pgfnum": "4253"
},
"1": {
"text": "http://davearchive037.mediahackers.org/nodetypes/tabs/",
"created": "Sat, 14 Jan 2012 01:12:09 GMT",
"pgfnum": "4258"
},
"2": {
"text": "That's a new nodetype called tabs.",
"created": "Sat, 14 Jan 2012 01:12:15 GMT",
"pgfnum": "4259"
},
"3": {
"text": "It's just an outline, as you would expect.",
"created": "Sat, 14 Jan 2012 01:12:24 GMT",
"pgfnum": "4260"
},
"4": {
"text": ":-)",
"created": "Sat, 14 Jan 2012 01:12:42 GMT",
"pgfnum": "4261"
}
}
},
"1": {
"text": "Return to Roots",
"created": "Fri, 13 Jan 2012 22:50:13 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4247",
"type": "blogpost",
"subs": {
"0": {
"text": "When you click Submit after editing prefs, we redirect back to the Roots page.",
"created": "Fri, 13 Jan 2012 22:50:19 GMT",
"pgfnum": "4248"
},
"1": {
"text": "That's where you came from, and where you should return to.",
"created": "Fri, 13 Jan 2012 22:50:41 GMT",
"pgfnum": "4249"
},
"2": {
"text": "Parts",
"created": "Fri, 13 Jan 2012 22:50:58 GMT",
"pgfnum": "4250",
"subs": {
"0": {
"text": "worldOutlineWebsite.rootPrefs",
"created": "Fri, 13 Jan 2012 22:50:59 GMT",
"pgfnum": "4251"
}
}
}
}
},
"2": {
"text": "Show title on Owner tab",
"created": "Fri, 13 Jan 2012 22:22:03 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4240",
"type": "blogpost",
"subs": {
"0": {
"text": "I sometimes forget which outline I'm editing prefs for.",
"created": "Fri, 13 Jan 2012 22:22:11 GMT",
"pgfnum": "4241"
},
"1": {
"text": "So I added an uneditable Title field on the first \"owner\" panel.",
"created": "Fri, 13 Jan 2012 22:22:37 GMT",
"pgfnum": "4242"
},
"2": {
"text": "Screen shot.",
"created": "Fri, 13 Jan 2012 22:24:40 GMT",
"pgfnum": "4245"
},
"3": {
"text": "Parts",
"created": "Fri, 13 Jan 2012 22:23:13 GMT",
"pgfnum": "4243",
"subs": {
"0": {
"text": "prefs2.bootstrap.stringPref"
},
"1": {
"text": "prefs2.bootstrap.stylesAndScripts"
},
"2": {
"text": "worldOutlineSuite.data.prefsForRoot2"
},
"3": {
"text": "worldOutlineInfo -- Version 0.52.",
"created": "Fri, 13 Jan 2012 22:29:46 GMT",
"pgfnum": "4246"
}
}
}
}
},
"3": {
"text": "New prefs for roots released",
"created": "Fri, 13 Jan 2012 18:48:06 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4219",
"type": "blogpost",
"subs": {
"0": {
"text": "It's completely reworked to use Bootstrap toolkit panels.",
"created": "Fri, 13 Jan 2012 18:48:14 GMT",
"pgfnum": "4220"
},
"1": {
"text": "The contents of the Prefs panels have not been reworked.",
"created": "Fri, 13 Jan 2012 18:48:30 GMT",
"pgfnum": "4221"
},
"2": {
"text": "Why is this better?",
"created": "Fri, 13 Jan 2012 18:49:01 GMT",
"pgfnum": "4223",
"subs": {
"0": {
"text": "More standard user interface.",
"created": "Fri, 13 Jan 2012 18:49:05 GMT",
"pgfnum": "4224"
},
"1": {
"text": "Lots more room for growth.",
"created": "Fri, 13 Jan 2012 18:49:16 GMT",
"pgfnum": "4225"
},
"2": {
"text": "The old way was convenient for the programmer, but klunky for the user.",
"created": "Fri, 13 Jan 2012 18:49:20 GMT",
"pgfnum": "4226"
}
}
},
"3": {
"text": "Difference",
"created": "Fri, 13 Jan 2012 18:49:59 GMT",
"pgfnum": "4227",
"subs": {
"0": {
"text": "There's one fundamental difference from a user standpoint. When you go to look at another panel the values in the other panels are retained, but are not saved to the server until you hit the Submit button. When you hit Submit, all the prefs in all the panels are sent to the server.",
"created": "Fri, 13 Jan 2012 18:36:30 GMT",
"pgfnum": "4217"
}
}
},
"4": {
"text": "Screen shot",
"created": "Fri, 13 Jan 2012 18:54:22 GMT",
"pgfnum": "4230",
"subs": {
"0": {
"text": "http://scripting.com/images/2012/01/13/newWayPrefsWork.gif",
"created": "Fri, 13 Jan 2012 18:54:25 GMT",
"pgfnum": "4231"
}
}
},
"5": {
"text": "How to install",
"created": "Fri, 13 Jan 2012 19:02:56 GMT",
"pgfnum": "4232",
"subs": {
"0": {
"text": "Update both opml.root and worldOutline.root.",
"created": "Fri, 13 Jan 2012 19:03:00 GMT",
"pgfnum": "4233"
}
}
},
"6": {
"text": "How to test",
"created": "Fri, 13 Jan 2012 19:03:07 GMT",
"pgfnum": "4234",
"subs": {
"0": {
"text": "Go to the Roots page.",
"created": "Fri, 13 Jan 2012 19:03:12 GMT",
"pgfnum": "4235"
},
"1": {
"text": "Click on the gear icon for any of the roots in your list.",
"created": "Fri, 13 Jan 2012 19:03:19 GMT",
"pgfnum": "4236"
},
"2": {
"text": "The new prefs system should show up.",
"created": "Fri, 13 Jan 2012 19:03:34 GMT",
"pgfnum": "4237"
},
"3": {
"text": "Try changing one of the values and clicking Submit.",
"created": "Fri, 13 Jan 2012 19:03:41 GMT",
"pgfnum": "4238"
},
"4": {
"text": "It should come back to the first panel of the Prefs, with the changed value visible.",
"created": "Fri, 13 Jan 2012 19:03:48 GMT",
"pgfnum": "4239"
}
}
},
"7": {
"text": "Parts",
"created": "Fri, 13 Jan 2012 18:50:37 GMT",
"pgfnum": "4228",
"subs": {
"0": {
"text": "prefs2.bootstrap"
},
"1": {
"text": "worldOutlineSuite.data.prefsForRoot2"
},
"2": {
"text": "worldOutlineWebsite.rootPrefs"
}
}
}
}
},
"4": {
"text": "Styling",
"created": "Fri, 13 Jan 2012 16:59:11 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4212",
"type": "blogpost",
"subs": {
"0": {
"text": "
",
"created": "Fri, 13 Jan 2012 16:59:31 GMT",
"pgfnum": "4214"
}
}
},
"5": {
"text": "Progress on tabs for prefs",
"created": "Fri, 13 Jan 2012 15:18:24 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4208",
"type": "blogpost",
"subs": {
"0": {
"text": "The struggle has been that things work too fast and I'm not ready with the next level of design when I need it. As a result I've hit waves of puzzles, and have to take extensive breaks while I figure out my next step.",
"created": "Fri, 13 Jan 2012 15:18:37 GMT",
"pgfnum": "4209"
},
"1": {
"text": "I now have the ability to edit tabbed-prefs in the outliner, in a similar way to the way the old outline-based prefs worked. It can't be the same because editing takes place on the client, in the browser, and the results aren't sent back to the server until all the changes are submitted at once.",
"created": "Fri, 13 Jan 2012 15:19:16 GMT",
"pgfnum": "4210"
},
"2": {
"text": "I've got the design tool working, although I have to work on the style setting so it looks wonderful. Here's a screen shot of what it looks like right now.",
"created": "Fri, 13 Jan 2012 15:20:20 GMT",
"pgfnum": "4211"
}
}
}
}
},
"18": {
"text": "1/12/12 by DW",
"created": "Thu, 12 Jan 2012 16:29:36 GMT",
"pgfnum": "4200",
"subs": {
"0": {
"text": "Tab demo 1",
"created": "Thu, 12 Jan 2012 16:29:37 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4201",
"type": "blogpost",
"subs": {
"0": {
"text": "Starting to work on tabs in dialogs for prefs.",
"created": "Thu, 12 Jan 2012 16:29:46 GMT",
"pgfnum": "4202"
},
"1": {
"text": "http://tabdemo1.blorkmark.com/",
"created": "Thu, 12 Jan 2012 16:29:54 GMT",
"pgfnum": "4203"
}
}
}
}
},
"19": {
"text": "1/11/12 by DW",
"subs": {
"0": {
"text": "Add cloud element to feed",
"created": "Thu, 12 Jan 2012 01:53:45 GMT",
"pgfnum": "4194",
"type": "blogpost",
"subs": {
"0": {
"text": "The RSS feed that's built when you click RSS+ in a root outline window did not have a cloud element and therefore did not do realtime updates.",
"created": "Thu, 12 Jan 2012 01:53:50 GMT",
"pgfnum": "4195"
},
"1": {
"text": "This is where my feed is.",
"created": "Thu, 12 Jan 2012 01:55:59 GMT",
"pgfnum": "4199",
"subs": {
"0": {
"text": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"created": "Thu, 12 Jan 2012 01:56:05 GMT",
"pgfnum": "4200"
}
}
},
"2": {
"text": "I added a cloud element, and ping when I update. This post will test that feature, however no one who is subscribed to the feed is registered for realtime updates. However next time they read the feed it should register.",
"created": "Thu, 12 Jan 2012 01:54:25 GMT",
"pgfnum": "4196"
},
"3": {
"text": "Parts",
"created": "Thu, 12 Jan 2012 01:55:01 GMT",
"pgfnum": "4197",
"subs": {
"0": {
"text": "worldOutlineSuite.buildUserFeed",
"created": "Thu, 12 Jan 2012 01:55:02 GMT",
"pgfnum": "4198"
}
}
}
}
},
"1": {
"text": "Blogpost byline date",
"created": "Wed, 11 Jan 2012 23:50:18 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4188",
"type": "blogpost",
"subs": {
"0": {
"text": "The date in the byline on blogpost nodetypes was wrong. We were displaying the moddate of the directory outline it's contained within. We can now fix this bug because our headlines have created attributes.",
"created": "Wed, 11 Jan 2012 23:50:22 GMT",
"pgfnum": "4189"
},
"1": {
"text": "So, if there is a created att on the main headline of the blogpost node, use that in the byline.",
"created": "Wed, 11 Jan 2012 23:51:10 GMT",
"pgfnum": "4190"
},
"2": {
"text": "Also changed the default template for blogposts.",
"created": "Wed, 11 Jan 2012 23:51:29 GMT",
"pgfnum": "4191"
},
"3": {
"text": "Parts",
"created": "Wed, 11 Jan 2012 23:51:54 GMT",
"pgfnum": "4192",
"subs": {
"0": {
"text": "worldOutlineSuite.viewBlogPostCallback",
"created": "Wed, 11 Jan 2012 23:51:56 GMT",
"pgfnum": "4193"
}
}
}
}
},
"2": {
"text": "Time-stamping headlines",
"created": "Wed, 11 Jan 2012 23:32:11 GMT",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"pgfnum": "4184",
"type": "blogpost",
"subs": {
"0": {
"text": "Headlines in archive windows were not getting created or pgfnum attributes. That's because the opInsert callback for world outlines didn't recognize root outline windows as world outline windows.",
"created": "Wed, 11 Jan 2012 23:33:55 GMT"
},
"1": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.opInsertCallback"
}
}
}
}
},
"3": {
"text": "Bookmark roots",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "Create a bookmark for root outlines you open a lot. Saves a trip to the Roots table."
},
"1": {
"text": "How to use",
"subs": {
"0": {
"text": "Bring the root outline you want to bookmark to the front."
},
"1": {
"text": "Choose Add Bookmark in the Bookmarks menu."
},
"2": {
"text": "Edit the text of the menu item, if you want."
},
"3": {
"text": "Click OK."
}
}
},
"2": {
"text": "Picture",
"subs": {
"0": {
"text": "
"
}
}
},
"3": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.addBookmarkCallback"
},
"1": {
"text": "opmlEditor.worldOutline.init"
}
}
}
}
},
"4": {
"text": "Add bootstrap-modal.js to standard styles",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a worldoutline macro called <%systemStyles%> that adds the styles the system needs."
},
"1": {
"text": "I'm adding bootstrap-modal.js to that collection, so we can use modals in any worldoutline page.",
"subs": {
"0": {
"text": "<script src=\"http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js\"></script>"
}
}
},
"2": {
"text": "Not sure yet how this will be used or if it will be."
},
"3": {
"text": "Parts",
"subs": {
"0": {
"text": "webApp.data.headIncludes"
},
"1": {
"text": "worldOutlineSuite.data.rootPageScriptsAndStyles"
}
}
}
}
},
"5": {
"text": "To do",
"subs": {
"0": {
"text": "Explore panels"
},
"1": {
"text": "The date on blogposts should be the date the post was added."
},
"2": {
"text": "Add cloud element back to feed for world outline."
}
}
}
}
},
"20": {
"text": "1/10/12 by DW",
"subs": {
"0": {
"text": "Resurrected morningcoffeenotes.com",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "As I was transferring domains off GoDaddy, I realized this one no longer pointed anywhere."
},
"1": {
"text": "I found the root it was built from, and moved it over to my worldoutline. Mapped morningcoffeenotes.com to it."
},
"2": {
"text": "Clicked a few links and the MP3s seem to be there. I actually kept links to many of the podcasts that came before mine. So this is a very nice historic document."
},
"3": {
"text": "Also it gives me a place to work on formatting directories. It could look a lot better."
},
"4": {
"text": "Have a look at the archive.org record for this site."
},
"5": {
"text": "Also here's a snapshot of podcastBuilder.root, the app I used to build my podcast feeds and OPML."
}
}
},
"1": {
"text": "Ajax pointers",
"subs": {
"0": {
"text": "http://jsfiddle.net/kRLQ4/"
},
"1": {
"text": "http://stackoverflow.com/questions/8363802/bind-a-function-to-twitter-bootstrap-modal-close"
},
"2": {
"text": "http://reference.sitepoint.com/html/event-attributes/onload"
},
"3": {
"text": "http://twitter.github.com/bootstrap/javascript.html"
},
"4": {
"text": "http://www.w3schools.com/jsref/prop_option_selected.asp"
}
}
},
"2": {
"text": "Releasing new Roots page",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "Small new feature that could lead to lots more goodness."
},
"1": {
"text": "Now, if you click on the type of an outline, a dialog pops up allowing you to change the type without going to the settings pages. There will certainly be some glitches, given that this is all very very fresh."
},
"2": {
"text": "But now's the time to make these kinds of leaps! :-)"
},
"3": {
"text": "Screen shot."
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineWebsite.ajax"
},
"1": {
"text": "worldOutlineSuite.data.rootPageScriptsAndStyles"
},
"2": {
"text": "worldOutlineSuite.roots.viewRoots"
},
"3": {
"text": "worldOutlineSuite.userDefinedHostCallback"
}
}
}
}
},
"3": {
"text": "Another shortener fix",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "When we rolled out support for Adjix on December 31, an emergency, there was an error, and people who had not specified their own shortener would still get Adjix as their shortener, and it would error. Thanks to Chris Dixon for catching this, and sorry for the problem. Fixed."
},
"1": {
"text": "Parts",
"subs": {
"0": {
"text": "radio2Suite.shortener.create"
}
}
}
}
},
"4": {
"text": "Learning Bootstrap modals",
"fldisquscomments": "true",
"type": "blogpost",
"subs": {
"0": {
"text": "This has been a real interesting journey, but I'm getting pretty close. Thanks to Chuck Shotton for supplying key bits of information. I can now pop up a dialog, initialize elements in the dialog, and send a message back to the server when the user clicks OK. The dialog I'm working on to prove this stuff works is the (new) nodetype-setting dialog for the Roots page. But once it works, the same techniques should be hidden behind an interface in builtins.webApp."
},
"1": {
"text": "Screen shot."
},
"2": {
"text": "A very importan concept I was missing was globals. Both global code and variables. Both are necessary to make something like this work. Up till now everything I had been doing in JavaScript has been done in handlers."
},
"3": {
"text": "Later: I have the dialog working, mostly. It does what it's supposed to do, allows you to change the nodetype of an item in the Roots list, without having to go to the Prefs system. There's a ton of new stuff working."
},
"4": {
"text": "But here are the problems:"
},
"5": {
"text": "1. I can only run the dialog once. If I try to set another root's type, the dialog doesn't show up. What this says to me is that there's something happening on the way out that kills the \"page\" as a script. I think this is so, because if I click the Cancel button, I can run another dialog."
},
"6": {
"text": "2. I need to have the OK button refresh the page, so the new type shows up in the underlying list. I know the Ajaxy thing to do is to have just that one bit refresh, but I'd rather save that battle for another day, unless it's really easy."
},
"7": {
"text": "I've turned comments on so that Chuck can respond here if he wants, or via email -- no diff to me."
},
"8": {
"text": "Later: I tried adding window.reload but that appears to have broken the app. Perhaps reloading the page somehow interferes with the request being made to set the nodetype on the server??"
},
"9": {
"text": "Here's the sequence when you click OK:",
"subs": {
"0": {
"text": "var myPopup = document.getElementById (\"nodetypePopup\");"
},
"1": {
"text": "var newtype = myPopup.options [myPopup.selectedIndex].text;"
},
"2": {
"text": "$('#nodetypeDialog').load('/ajax/setNodetype?type=' + newtype + '&root=' + rootUrl);"
},
"3": {
"text": "$('#nodetypeDialog').modal('hide');"
},
"4": {
"text": "window.location.reload ()"
}
}
},
"10": {
"text": "So I tried changing the order -- and doing the reload before calling the server. Apparently it's synchronous, the reload completes before the call to the server is made, so it reflects the old type. You have to manually reload it to get it to show the correct new type."
},
"11": {
"text": "After an intervention by Chuck, I now have it all working just as I'd like it to. (Praise Murphy, etc.)",
"subs": {
"0": {
"text": "var myPopup = document.getElementById (\"nodetypePopup\");"
},
"1": {
"text": "var newtype = myPopup.options [myPopup.selectedIndex].text;"
},
"2": {
"text": "document.getElementById (rootViewTypeID).innerHTML = newtype;"
},
"3": {
"text": "$('#nodetypeDialog').load('/ajax/setNodetype?type=' + newtype + '&root=' + rootUrl);"
},
"4": {
"text": "$('#nodetypeDialog').modal('hide');"
}
}
},
"12": {
"text": "I've boldened the new bit."
}
}
}
}
},
"21": {
"text": "1/9/12 by DW",
"domain": "09Jan12.blorkmark.com",
"subs": {
"0": {
"text": "Blorkmark command",
"domain": "hruol.blorkmark.com",
"type": "blogpost",
"subs": {
"0": {
"text": "This was one of the things that didn't get re-wired-in after the big corner-turn."
},
"1": {
"text": "To test it out I put a random blorkmark on this item."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.buttons.archive.[\"00003500\\tBlorkmark\"]"
}
}
}
}
},
"1": {
"text": "If an item is in the feed don't add it again",
"feedurl": "",
"type": "blogpost",
"subs": {
"0": {
"text": "The server throws an error. \"Can't add the item to the feed, because it's arlready there.\""
},
"1": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.addFeedItem"
}
}
}
}
},
"2": {
"text": "Add attribute on RSS+",
"type": "blogpost",
"subs": {
"0": {
"text": "Add an attribute to the headline when you add the item to the feed."
},
"1": {
"text": "The attribute is feedUrl, and its value is the url of the feed the item was added to."
},
"2": {
"text": "It's nice to be able to see it's already been added."
},
"3": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.buttons.archive.[\"00003000\\tRSS+\"]"
}
}
}
}
},
"3": {
"text": "Shift-RSS+",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "If you hold down the Shift key while clicking the RSS+ button, the feed opens in the browser."
},
"1": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.buttons.archive.[\"00003000\\tRSS+\"]"
}
}
}
}
}
}
},
"22": {
"text": "1/8/12 by DW",
"subs": {
"0": {
"text": "Roots page column titles changed",
"type": "blogpost",
"subs": {
"0": {
"text": "On the Roots page, the cryptic column titles weren't working for me, so I expanded them."
},
"1": {
"text": "Swapped the order of Created/Modified. I want the modification date to appear first.",
"subs": {
"0": {
"text": "Maybe Created should be a tooltip for Modified? Eliminate the column altogether. Creation date is reflected in the list order, anyway. (Something to consider.)"
}
}
},
"2": {
"text": "I think the Type column is going to move to the left. Let's see."
},
"3": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.roots.viewRoots"
}
}
}
}
},
"1": {
"text": "HTML nodetypes and attributes",
"feedurl": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"type": "blogpost",
"subs": {
"0": {
"text": "An example of an HTML nodetype: smallpicture.com."
},
"1": {
"text": "That's a very simple page, but you should be able to make richer pages using macros."
},
"2": {
"text": "That's what I'm playing with now."
},
"3": {
"text": "Making a Bootstrap modal dialog, because that's something I want to explore anyway."
},
"4": {
"text": "And doing a jQuery app that makes an Ajax call back to the worldoutline server."
},
"5": {
"text": "This is experimental stuff, so you should look for breakage. You'll see if if macros are unexpanded. Or if there are 500 server errors rendering pages. I made this change on my server a few days ago, so I'm fairly confident the experiment worked."
},
"6": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.main"
},
"1": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"2": {
"text": "worldOutlineSuite.viewHtmlCallback"
}
}
}
}
},
"2": {
"text": "Setting up Manila",
"type": "blogpost",
"subs": {
"0": {
"text": "Using the Manila sub-menu of the Tools menu where the docs call for using the Server menu."
},
"1": {
"text": "user.prefs.mailaddress must not be empty"
},
"2": {
"text": "The Open Admin Site command opens http://127.0.0.1:5337/ and this doesn't work. Probably because we've got a different default setup for responders, which is totally cool."
},
"3": {
"text": "So I tried going to opening the control panel instead and that worked."
},
"4": {
"text": "http://oldspice.scripting.com:5337/controlpanel/"
},
"5": {
"text": "Here's a screen shot of the home page of the control panel site."
},
"6": {
"text": "The discussion on this should continue on the Frontier-user list."
}
}
}
}
},
"23": {
"text": "1/7/12 by DW",
"subs": {
"0": {
"text": "EasyDNS outage cleared",
"type": "blogpost",
"subs": {
"0": {
"text": "At 7:30PM all appears to be working well."
}
}
},
"1": {
"text": "EasyDNS outage",
"type": "blogpost",
"subs": {
"0": {
"text": "These notes will go up when the outage is cleared."
},
"1": {
"text": "I can help make my little network more reliable by having some names that are not CNAMEs and not part of scripting.com and opml.org, that point to the same physical servers as the base scripting.com names."
},
"2": {
"text": "I'm going to make them all on reallysimple.org."
},
"3": {
"text": "pensacola.reallysimple.org",
"subs": {
"0": {
"text": "184.106.99.108"
}
}
},
"4": {
"text": "memphis.reallysimple.org",
"subs": {
"0": {
"text": "184.106.106.47"
}
}
},
"5": {
"text": "shreveport.reallysimple.org",
"subs": {
"0": {
"text": "184.106.99.186"
}
}
},
"6": {
"text": "opmlmonster3.reallysimple.org, monster3.reallysimple.org",
"subs": {
"0": {
"text": "70.85.234.138"
}
}
},
"7": {
"text": "houston.scripting.com",
"subs": {
"0": {
"text": "184.106.106.149"
}
}
}
}
},
"2": {
"text": "Sorting out pre-defined atts",
"subs": {
"0": {
"text": "atts that definitely stay",
"subs": {
"0": {
"text": "disqusShortname"
},
"1": {
"text": "domain"
},
"2": {
"text": "flDirectoryIcons"
},
"3": {
"text": "flDisqusComments"
},
"4": {
"text": "flMenuFromOutline"
},
"5": {
"text": "flPgfPermalinks"
},
"6": {
"text": "flProcessHtmlText"
},
"7": {
"text": "menuEnabled"
},
"8": {
"text": "now"
},
"9": {
"text": "outlineCreatedDate"
},
"10": {
"text": "outlineCreatedTime"
},
"11": {
"text": "outlineDateCreated"
},
"12": {
"text": "outlineDateModified"
},
"13": {
"text": "outlineDescription"
},
"14": {
"text": "outlineModDate"
},
"15": {
"text": "outlineModTime"
},
"16": {
"text": "outlineOwnerBioUrl"
},
"17": {
"text": "outlineOwnerEmail"
},
"18": {
"text": "outlineOwnerName"
},
"19": {
"text": "outlineTitle"
},
"20": {
"text": "productName"
},
"21": {
"text": "rootOutlineUrl"
},
"22": {
"text": "rssUrl"
},
"23": {
"text": "slogan"
},
"24": {
"text": "startticks"
},
"25": {
"text": "systemStyles"
},
"26": {
"text": "text"
},
"27": {
"text": "type"
},
"28": {
"text": "urlTemplate"
}
}
},
"1": {
"text": "atts might go",
"subs": {
"0": {
"text": "googleFontsLink"
},
"1": {
"text": "styles"
},
"2": {
"text": "stylesheet"
},
"3": {
"text": "userStyles"
},
"4": {
"text": "comments"
},
"5": {
"text": "pgfnum"
},
"6": {
"text": "headerFontSize"
},
"7": {
"text": "template"
},
"8": {
"text": "directoryTemplate"
},
"9": {
"text": "iconImageHtml"
},
"10": {
"text": "headerGraphic"
},
"11": {
"text": "homeIcon"
},
"12": {
"text": "created"
},
"13": {
"text": "headerEnabled"
}
}
},
"2": {
"text": "atts that definitely go",
"subs": {
"0": {
"text": "directoryLinkColor"
},
"1": {
"text": "directoryFont"
},
"2": {
"text": "legendFont"
},
"3": {
"text": "menuFont"
},
"4": {
"text": "trailFont"
},
"5": {
"text": "headerFont"
},
"6": {
"text": "textFont"
},
"7": {
"text": "headerText"
},
"8": {
"text": "headerBgColor"
},
"9": {
"text": "systemTextColor"
},
"10": {
"text": "directoryVisitedLinkColor"
},
"11": {
"text": "bgColor"
},
"12": {
"text": "centerColumnBgColor"
},
"13": {
"text": "footerBgColor"
},
"14": {
"text": "leftColumnBgColor"
},
"15": {
"text": "menuTextColor"
},
"16": {
"text": "rightColumnBgColor"
},
"17": {
"text": "legendFontSize"
},
"18": {
"text": "legendLineHeight"
},
"19": {
"text": "menuFontSize"
},
"20": {
"text": "trailFontSize"
},
"21": {
"text": "directoryFontSize"
},
"22": {
"text": "directoryLeftIndent"
},
"23": {
"text": "textFontSize"
},
"24": {
"text": "directoryLineHeight"
},
"25": {
"text": "menuLineHeight"
},
"26": {
"text": "trailLineHeight"
},
"27": {
"text": "textLineHeight"
},
"28": {
"text": "templateOld"
}
}
}
}
},
"3": {
"text": "Fix View In Browser command",
"type": "blogpost",
"subs": {
"0": {
"text": "The View In Browser command generates HTML for the front outline and displays it in the browser."
},
"1": {
"text": "Rich Brown noted on one of the mail lists that it wasn't generating <ul> and </ul> around the list."
},
"2": {
"text": "It took a bit of time to figure out where the code for this was, but once located it was an easy fix."
},
"3": {
"text": "Choose Update opml.root from the File menu to get the updated part."
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.saveAsHtml"
}
}
}
}
}
}
},
"24": {
"text": "1/6/12 by DW",
"subs": {
"0": {
"text": "Fun hacking note",
"type": "blogpost",
"subs": {
"0": {
"text": "If you've lifted the hood on the implementation of the Roots table, you'll see there's a defaultAtts table in there."
},
"1": {
"text": "That's the equivalent of the attributes on the node that's being displayed. So it has a type element, that's the nodetype. Any of the other elements in that table are available the code that processes stuff."
},
"2": {
"text": "Basically when you're editing the prefs for a root outline, you're editing the entries in this table."
},
"3": {
"text": "There may not be a user interface for the pref you want to set, but if you have access to the database, you don't have to wait. Just edit or add the value you need in the table for the root."
},
"4": {
"text": "Screen shot."
},
"5": {
"text": "So, if you need to create a river node, just drop in there and set the type to river and add a url element that's the link to the JSON for the river."
}
}
},
"1": {
"text": "Archive button on archive windows",
"type": "blogpost",
"subs": {
"0": {
"text": "New button lets you archive an outline, the same way it worked in the previous way of doing things."
},
"1": {
"text": "You have to update worldOutline.root on the server, and opml.root on the workstation to get the fix."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.buttons.archive"
},
"1": {
"text": "worldOutlineSuite.roots.saveOutline"
}
}
}
}
},
"2": {
"text": "Release notes",
"type": "blogpost",
"subs": {
"0": {
"text": "Overview",
"subs": {
"0": {
"text": "Before, each user could have just one root. Now a user can have as many as they want."
},
"1": {
"text": "They are listed on the Roots page. It's in the menubar in your worldoutline website."
},
"2": {
"text": "The settings in Prefs command in the menu are now ignored. None of the values in there matter. However, we will have top-level prefs, so the command stays."
},
"3": {
"text": "On the OPML Editor side, a root is called an Archive. This is because I built out from that feature to create the new Roots feature. Yet another terminology collision, because in the OPML Editor a root file is a whole other thing. Sorry."
}
}
},
"1": {
"text": "Notes for users/admins",
"subs": {
"0": {
"text": "On your worldoutline server, be sure you've set up the DNS prefs at config.worldoutline.prefs.dns so we can assign domain names to your root outlines automatically. You can use the same server you're using to create blorkmarks."
},
"1": {
"text": "On your worldoutline server, run worldOutlineSuite.roots.setupUserRoots. It updates each user's archive outlines, stored in their member table, with all the features used on the Roots page."
},
"2": {
"text": "On each desktop machine, update opml.root."
}
}
},
"2": {
"text": "The Roots page",
"subs": {
"0": {
"text": "The Roots page is where all the action is."
},
"1": {
"text": "Start by creating a new root by clicking the big blue button. Hard to miss. :-)"
},
"2": {
"text": "It will create a root called Untitled. You should immediately edit it in the OPML Editor by clicking on the Edit icon all the way to the right. Change the title by clicking the Title button. Save it by clicking the Save button. When you save, refresh the roots page. You should see the count of saves go up."
},
"3": {
"text": "By default it creates a blogpost. You can change the nodetype in the Prefs for the root. It's accessed by clicking on the Gear icon. Lots of other things you can set on a per-root basis in the Prefs. There will be more work in this area for sure. This was a big part of the rewrite."
},
"4": {
"text": "One of the great things about the new way of working is that you can put domains in any of the roots, and as many as you want. The number of domains is in the 4th column."
},
"5": {
"text": "You can mouse over the column titles to get a brief explanation of what it's about."
},
"6": {
"text": "As always, I've left lots of hints around the UI, so please explore. Ask questions on the mail list."
}
}
},
"3": {
"text": "Code relese",
"subs": {
"0": {
"text": "In the lists below, I have subtracted parts that have already been released. Also if a table is new, I removed all sub-items from the list, since they will be released when the table is released."
},
"1": {
"text": "I also removed parts that were edited but not changed."
},
"2": {
"text": "I used workspace.userlandSamples.findChangedParts to generate these lists. Very useful utility! :-)"
}
}
},
"4": {
"text": "Parts that changed in builtins.opmleditor",
"subs": {
"0": {
"text": "opmlEditor.website.openRoot"
},
"1": {
"text": "opmlEditor.worldOutline.archiveSubOutline"
},
"2": {
"text": "opmlEditor.worldOutline.buttons.archive"
},
"3": {
"text": "opmlEditor.worldOutline.getHeadlineUrl"
},
"4": {
"text": "opmlEditor.worldOutline.saveArchivedOutline"
},
"5": {
"text": "opmlEditor.worldOutline.viewHeadline"
}
}
},
"5": {
"text": "Parts that changed in html.directory",
"subs": {
"0": {
"text": "html.directory.viewNodetype"
},
"1": {
"text": "html.directory.walk"
},
"2": {
"text": "html.directory.viewDirectory"
}
}
},
"6": {
"text": "Parts that changed in worldOutlineSuite",
"subs": {
"0": {
"text": "worldOutlineSuite.roots"
},
"1": {
"text": "worldOutlineSuite.background.everyMinute"
},
"2": {
"text": "worldOutlineSuite.buildUserFeed"
},
"3": {
"text": "worldOutlineSuite.getOutlineText"
},
"4": {
"text": "worldOutlineSuite.getRootOutlineUrl"
},
"5": {
"text": "worldOutlineSuite.getTemplateText"
},
"6": {
"text": "worldOutlineSuite.init"
},
"7": {
"text": "worldOutlineSuite.initUser"
},
"8": {
"text": "worldOutlineSuite.main"
},
"9": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"10": {
"text": "worldOutlineSuite.setUserDomain"
},
"11": {
"text": "worldOutlineSuite.userDefinedHostCallback"
},
"12": {
"text": "worldOutlineSuite.viewBlogPostCallback"
},
"13": {
"text": "worldOutlineSuite.viewDirectoryCallback"
},
"14": {
"text": "worldOutlineSuite.viewFeedCallback -- doesn't appear to be any change -- possible problem"
},
"15": {
"text": "worldOutlineSuite.viewHtmlCallback"
},
"16": {
"text": "worldOutlineSuite.viewMenu"
},
"17": {
"text": "worldOutlineSuite.viewOutline"
},
"18": {
"text": "worldOutlineSuite.viewOutlineCallback -- doesn't appear to be any change -- possible problem"
},
"19": {
"text": "worldOutlineSuite.viewPhotoCallback -- doesn't appear to be any change -- possible problem"
},
"20": {
"text": "worldOutlineSuite.viewRedirectCallback"
},
"21": {
"text": "worldOutlineSuite.viewRiverCallback -- doesn't appear to be any change -- possible problem"
},
"22": {
"text": "worldOutlineSuite.viewThumbListCallback -- doesn't appear to be any change -- possible problem"
}
}
}
}
},
"3": {
"text": "View command",
"type": "blogpost",
"subs": {
"0": {
"text": "A simple adaptation to worldOutline.viewHeadline worked."
},
"1": {
"text": "We check to see if the window has a domain attribute, instead of calling the server to find out the root domain. If it does, we use that to form the URL."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.viewHeadline"
},
"1": {
"text": "opmlEditor.worldOutline.getHeadlineUrl"
}
}
}
}
},
"4": {
"text": "Add to feed command",
"type": "blogpost",
"subs": {
"0": {
"text": "The feed works differently in this release. Instead of keying on the nodetype, there's now a button in the outline window called \"Add to Feed\" -- or something like that."
},
"1": {
"text": "When you do that, a dialog confirms that the headline you're on should be added to your feed."
},
"2": {
"text": "It sends an RPC message to the server containing the elements of the item. Its title, the first line of its body, and the URL."
},
"3": {
"text": "On the server, it's added to a table that's sorted chronologically."
},
"4": {
"text": "On the server, we rebuild the feed and save it in S3 storage and the URL is recorded, to be included in the HTML generated for this user on the server."
},
"5": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.init"
}
}
}
}
},
"5": {
"text": "Script to generate list of changes",
"subs": {
"0": {
"text": "system.verbs.builtins.opmlEditor"
},
"1": {
"text": "worldOutlineSuite"
}
}
},
"6": {
"text": "Things to deal with later",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to have outline nodes within directories",
"subs": {
"0": {
"text": "Right now it depends on it being the \"include\" style of outline."
},
"1": {
"text": "This is an obvious limit that must be removed."
},
"2": {
"text": "I wanted to make the Release Notes an outline."
},
"3": {
"text": "Couldn't do it without forking off a new root."
}
}
},
"1": {
"text": "Bookmarks callback",
"subs": {
"0": {
"text": "To allow worldoutline windows to appear in bookmark menu, must add a script to user.callbacks.addBookmark."
}
}
},
"2": {
"text": "Dates in blogposts are wrong",
"type": "blogpost",
"subs": {
"0": {
"text": "When a blogpost appears inside a directory the date on the blogpost rendering is the date of the directory, not of the blogpost."
}
}
},
"3": {
"text": "blog.rsscloud.org is missing",
"subs": {
"0": {
"text": "Ooops."
}
}
}
}
}
}
},
"25": {
"text": "1/5/12 by DW",
"created": "Thu, 05 Jan 2012 14:29:13 GMT",
"pgfnum": "4177",
"subs": {
"0": {
"text": "Safe parts release",
"subs": {
"0": {
"text": "Before calling it a day, I released the following parts.",
"subs": {
"0": {
"text": "worldOutlineSuite.data.html.deleteImg"
},
"1": {
"text": "worldOutlineSuite.data.html.editImg"
},
"2": {
"text": "worldOutlineSuite.data.html.miniXmlImg"
},
"3": {
"text": "worldOutlineSuite.data.html.settingsImg"
},
"4": {
"text": "worldOutlineSuite.data.newRootForm"
},
"5": {
"text": "worldOutlineSuite.data.prefsForRoot"
},
"6": {
"text": "worldOutlineSuite.data.rootPageScriptsAndStyles"
},
"7": {
"text": "worldOutlineSuite.data.urls.defaultBlogpostTemplate"
},
"8": {
"text": "worldOutlineSuite.data.urls.defaultDirectoryTemplate"
},
"9": {
"text": "worldOutlineSuite.data.urls.defaultOutlineTemplate"
},
"10": {
"text": "worldOutlineSuite.data.urls.defaultRootTemplate"
}
}
}
}
},
"1": {
"text": "Status of update",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm ready to start releasing parts in the new update for worldOutline.root."
},
"1": {
"text": "For tonight, I'm going to release stuff that's relatively safe. Low probability of breakage."
},
"2": {
"text": "Then tomorrow morning I'll release the parts that change the way it works, and write some docs for it."
},
"3": {
"text": "There will be some things that don't work -- for example the RSS feed isn't wired up. And there are missing commands. And some commands that are there now will be going away (like almost all the top level prefs)."
},
"4": {
"text": "But I want to start emptying out my pipe. I've accumulated a lot of stuff to release."
},
"5": {
"text": "Following is a full list of parts"
},
"6": {
"text": "Parts",
"subs": {
"0": {
"text": "html.directory.viewDirectory"
},
"1": {
"text": "html.directory.viewNodetype"
},
"2": {
"text": "html.directory.walk"
},
"3": {
"text": "opmlEditor.website.openRoot"
},
"4": {
"text": "opmlEditor.worldOutline.buttons.archive"
},
"5": {
"text": "worldOutlineRpcHandlers.archiveOutline"
},
"6": {
"text": "worldOutlineSuite.background.everyMinute"
},
"7": {
"text": "worldOutlineSuite.data.disqus.storyPageScript"
},
"8": {
"text": "worldOutlineSuite.data.html.deleteImg"
},
"9": {
"text": "worldOutlineSuite.data.html.editImg"
},
"10": {
"text": "worldOutlineSuite.data.html.miniXmlImg"
},
"11": {
"text": "worldOutlineSuite.data.html.settingsImg"
},
"12": {
"text": "worldOutlineSuite.data.newRootForm"
},
"13": {
"text": "worldOutlineSuite.data.prefsForRoot"
},
"14": {
"text": "worldOutlineSuite.data.rootPageScriptsAndStyles"
},
"15": {
"text": "worldOutlineSuite.data.urls.defaultBlogpostTemplate"
},
"16": {
"text": "worldOutlineSuite.data.urls.defaultDirectoryTemplate"
},
"17": {
"text": "worldOutlineSuite.data.urls.defaultOutlineTemplate"
},
"18": {
"text": "worldOutlineSuite.data.urls.defaultRootTemplate"
},
"19": {
"text": "worldOutlineSuite.findNodeWithDomain"
},
"20": {
"text": "worldOutlineSuite.getRootOutlineUrl"
},
"21": {
"text": "worldOutlineSuite.init"
},
"22": {
"text": "worldOutlineSuite.initRoot"
},
"23": {
"text": "worldOutlineSuite.main"
},
"24": {
"text": "worldOutlineSuite.roots"
},
"25": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"26": {
"text": "worldOutlineSuite.userDefinedHostCallback"
},
"27": {
"text": "worldOutlineSuite.viewBlogPostCallback"
},
"28": {
"text": "worldOutlineSuite.viewDirectoryCallback"
},
"29": {
"text": "worldOutlineSuite.viewHtmlCallback"
},
"30": {
"text": "worldOutlineSuite.viewOutline"
},
"31": {
"text": "worldOutlineSuite.viewRedirectCallback"
},
"32": {
"text": "worldOutlineSuite.viewRoots"
},
"33": {
"text": "worldOutlineWebsite.[\"#objectnotfoundhandler\"]"
},
"34": {
"text": "worldOutlineWebsite.rootDelete"
},
"35": {
"text": "worldOutlineWebsite.rootPrefs"
},
"36": {
"text": "worldOutlineWebsite.roots"
}
}
}
}
},
"2": {
"text": "Example blogpost for testing",
"description": "This is just a test post. Pay no attention the man behind the curtain.",
"type": "blogpost",
"subs": {
"0": {
"text": "
There's a new thing going on in the web world that really sucks.",
"created": "Thu, 05 Jan 2012 17:55:20 GMT",
"pgfnum": "12099"
},
"1": {
"text": "Two of my primary communication tools, Twitter and Gmail, recently forced all their users to upgrade to new user interfaces. As far as I can tell neither of them gave me anything in return in the form of new features, or streamlined functionality (fewer steps).",
"created": "Thu, 05 Jan 2012 17:55:30 GMT",
"pgfnum": "12100"
},
"2": {
"text": "I have no idea why we were forced to do these things. Neither company had anything to say to me, as a user, about it. Twitter held a press event where they explained somewhat why they wanted the changes. But nothing in the form of an explanation of why a user would want them.",
"created": "Thu, 05 Jan 2012 17:56:41 GMT",
"pgfnum": "12101"
},
"3": {
"text": "The Gmail upgrade happened today, so I'm dealing with the burnt braincells right now.",
"created": "Thu, 05 Jan 2012 17:57:29 GMT",
"pgfnum": "12102"
},
"4": {
"text": "I had developed neural pathways that allow me to scan my inbox without even having to think. My lower brain functions were able to spot new things I needed to pay attention to, things that were out of the ordinary humdrum of mail list updates, spam that made it through Google's filters, etc.",
"created": "Thu, 05 Jan 2012 17:57:49 GMT",
"pgfnum": "12103"
},
"5": {
"text": "Now I'm getting constant interrupts as I scan, as my higher brain functions have to get involved to figure out whether an item requires my immediate attention or not. To have to think about things I didn't have to before, slows me down and takes my focus off things I need to stay focused on. My problems fade into the background as the problems of managing the mechanics of Twitter and Gmail take over.",
"created": "Thu, 05 Jan 2012 17:58:42 GMT",
"pgfnum": "12104"
},
"6": {
"text": "And the Twitter changes are well-trod now, I know how the new version works, and I can see clearly the new overhead they introduced. The things you can't tuck away that you have to repeat over and over. I'd love to have at it myself and reduce Twitter down to the things I need it to do. But they made that so hard, I gave up on that idea long time ago.",
"created": "Thu, 05 Jan 2012 18:00:07 GMT",
"pgfnum": "12105"
},
"7": {
"text": "Can't wait for the next thing to come along. I'm tired of these bigco machinations. I'm sure these changes are tied to strategies of the companies to grow even larger, or to punish their competitors.",
"created": "Thu, 05 Jan 2012 18:01:09 GMT",
"pgfnum": "12106"
},
"8": {
"text": "It's at moments like these that I feel like the pawn that I am.",
"created": "Thu, 05 Jan 2012 18:01:52 GMT",
"pgfnum": "12107"
}
}
},
"3": {
"text": "Templates for directories",
"description": "Tubas in the moonlight playing for me all night.",
"type": "blogpost",
"subs": {
"0": {
"text": "Every nodetype has a template, but directory isn't a nodetype, it's the default."
},
"1": {
"text": "So it doesn't have a template. And that's gotta change."
},
"2": {
"text": "Now the question is how to shoehorn it in without breaking too much! :-)"
},
"3": {
"text": "Here's a screen shot that illustrates the problem."
}
}
},
"4": {
"text": "Getting close with the new version of worldOutline.root",
"created": "Thu, 05 Jan 2012 14:29:14 GMT",
"pgfnum": "4178",
"type": "blogpost",
"subs": {
"0": {
"text": "Huge number of changed parts, and a big widening of functionality.",
"created": "Thu, 05 Jan 2012 14:29:29 GMT",
"pgfnum": "4179"
},
"1": {
"text": "Here's a blogpost, in the new form that explains the concept.",
"created": "Thu, 05 Jan 2012 14:29:45 GMT",
"pgfnum": "4180"
},
"2": {
"text": "Update: Needs some more work! :-)",
"created": "Thu, 05 Jan 2012 15:38:57 GMT",
"pgfnum": "4183"
}
}
},
"5": {
"text": "Adjix shuts down",
"created": "Thu, 05 Jan 2012 14:29:57 GMT",
"pgfnum": "4181",
"subs": {
"0": {
"text": "Joe Moreno is a friend and a tech pioneer. Together we worked out a way for URL-shorteners to be less fragile, which involves writing them to static storage on S3. So when Adjix shut down on New Year's Day, an unpredicted event, none of the old links broke. But we lost the ability to get counts from Adjix. This is something I might be able to work around using bit.ly. Just wanted to make everyone who's listening aware of the problem.",
"created": "Thu, 05 Jan 2012 14:30:02 GMT",
"pgfnum": "4182"
}
}
}
}
},
"26": {
"text": "1/4/12 by DW",
"created": "Thu, 05 Jan 2012 00:14:19 GMT",
"pgfnum": "4177",
"subs": {
"0": {
"text": "Fixed problem with installing tools",
"created": "Thu, 05 Jan 2012 00:14:20 GMT",
"pgfnum": "4178",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2012/01/06/archive047.opml",
"subs": {
"0": {
"text": "If you tried to install River2 you'd get a message saying it was created with an incompatible version of the program.",
"created": "Thu, 05 Jan 2012 00:14:36 GMT",
"pgfnum": "4179"
},
"1": {
"text": "To get the fix...",
"created": "Thu, 05 Jan 2012 00:16:07 GMT",
"pgfnum": "4181",
"subs": {
"0": {
"text": "1. Launch the OPML Editor",
"created": "Thu, 05 Jan 2012 00:19:58 GMT",
"pgfnum": "4185"
},
"1": {
"text": "2. Choose Update opml.root from the File menu. At least one new or updated part should be installed.",
"created": "Thu, 05 Jan 2012 00:20:09 GMT",
"pgfnum": "4186"
},
"2": {
"text": "3. Try installing River2 again.",
"created": "Thu, 05 Jan 2012 00:20:24 GMT",
"pgfnum": "4187"
}
}
},
"2": {
"text": "Note",
"created": "Thu, 05 Jan 2012 00:21:02 GMT",
"pgfnum": "4188",
"subs": {
"0": {
"text": "The message was misleading, because it was failing to read the root due to a domain configuration error. When I was moving domains off GoDaddy around Christmas. It had nothing to do with the file, because it wasn't correctly reading it.",
"created": "Thu, 05 Jan 2012 00:16:20 GMT",
"pgfnum": "4182"
}
}
},
"3": {
"text": "Parts",
"created": "Thu, 05 Jan 2012 00:17:03 GMT",
"pgfnum": "4183",
"subs": {
"0": {
"text": "opmleditor.installTool",
"created": "Thu, 05 Jan 2012 00:17:04 GMT",
"pgfnum": "4184"
}
}
}
}
}
}
},
"27": {
"text": "1/2/12 by DW",
"created": "Mon, 02 Jan 2012 13:48:36 GMT",
"pgfnum": "4163",
"subs": {
"0": {
"text": "CSS cleanup",
"created": "Mon, 02 Jan 2012 15:28:45 GMT",
"pgfnum": "4172",
"type": "blogpost",
"subs": {
"0": {
"text": "It's very hard to construct layers of code that generates CSS-styled text because the ability to override is organized exactly backward from the way you need it to be. The closest-in declarations are impossible to override. But you need to have some defaults. Why should every application have to specify every detail about how every object displays. It's exactly the wrong way. (Makes a lot of sense for documents though.)",
"created": "Mon, 02 Jan 2012 15:28:52 GMT",
"pgfnum": "4173"
},
"1": {
"text": "So, to keep my sanity while developing object type code, I keep the style declarations with the code that generates the HTML. But after a while, when the code isn't being developed so much, I need to have some control over the look of things, so it makes sense to then move the style declarations out of the code genereation.",
"created": "Mon, 02 Jan 2012 15:30:36 GMT",
"pgfnum": "4174"
},
"2": {
"text": "Just to say that's where I am now. For example, I just moved the styles out of the code that's generated for the relatively new outline nodetype. This means for example that you can change the arrangement of the outline on the page. Clearly something you need to be able to do.",
"created": "Mon, 02 Jan 2012 15:31:51 GMT",
"pgfnum": "4175"
},
"3": {
"text": "Wanted to document this change. If you don't understand I wouldn't worry about it too much.",
"created": "Mon, 02 Jan 2012 15:32:32 GMT",
"pgfnum": "4176"
}
}
},
"1": {
"text": "Where do titles belong?",
"created": "Mon, 02 Jan 2012 13:48:37 GMT",
"pgfnum": "4164",
"type": "blogpost",
"subs": {
"0": {
"text": "We have two levels of templates in the worldoutline.",
"created": "Mon, 02 Jan 2012 13:48:53 GMT",
"pgfnum": "4165"
},
"1": {
"text": "There's a template for each type, one of blogpost, code, howto, outline, photo, river, rss, thumbList.",
"created": "Mon, 02 Jan 2012 13:49:18 GMT",
"pgfnum": "4166"
},
"2": {
"text": "And there's an overall template for the page.",
"created": "Mon, 02 Jan 2012 13:49:48 GMT",
"pgfnum": "4167"
},
"3": {
"text": "Right now we have the titles in the type template. But I'm wondering if that's the right way to go.",
"created": "Mon, 02 Jan 2012 13:50:00 GMT",
"pgfnum": "4168"
},
"4": {
"text": "It seems every page has a title, and uniformity in the way they are displayed is a good thing. Also having them appear in just one place makes it easy to change them in all pages. Further, the crumbtrail is in the page template. What sense does it make to have the crumbtrail in one place and the title in the other?",
"created": "Mon, 02 Jan 2012 13:50:25 GMT",
"pgfnum": "4169"
},
"5": {
"text": "I'm leaning toward making the change, and moving the title into the main template.",
"created": "Mon, 02 Jan 2012 13:51:26 GMT",
"pgfnum": "4170"
},
"6": {
"text": "Since all templates are user-editable, it's possible to do it a different way from the way I do it. Even if that doesn't happen very often.",
"created": "Mon, 02 Jan 2012 13:51:39 GMT",
"pgfnum": "4171"
}
}
}
}
},
"28": {
"text": "1/1/12 by DW",
"created": "Sun, 01 Jan 2012 05:52:12 GMT",
"pgfnum": "4170",
"subs": {
"0": {
"text": "Deep in templateland",
"created": "Mon, 02 Jan 2012 01:56:42 GMT",
"pgfnum": "4156",
"type": "blogpost",
"subs": {
"0": {
"text": "Working on templates. Every root can specify its own. Let's go crazy.",
"created": "Mon, 02 Jan 2012 01:56:48 GMT",
"pgfnum": "4157"
},
"1": {
"text": "As I'm working on the new system, everything is instantaneous, but I notice when I update the template it's not getting into my dropbox S3 bucket very quickly. Took a look and the connection betw file saving and file synching could be a lot more direct.",
"created": "Mon, 02 Jan 2012 01:57:09 GMT",
"pgfnum": "4158"
},
"2": {
"text": "I made it so.",
"created": "Mon, 02 Jan 2012 01:57:58 GMT",
"pgfnum": "4159"
},
"3": {
"text": "Parts",
"created": "Mon, 02 Jan 2012 01:58:01 GMT",
"pgfnum": "4160",
"subs": {
"0": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.save",
"created": "Mon, 02 Jan 2012 01:58:02 GMT",
"pgfnum": "4161"
},
"1": {
"text": "fileSynch.fileSaveCallback",
"created": "Mon, 02 Jan 2012 01:58:04 GMT",
"pgfnum": "4162"
}
}
}
}
},
"1": {
"text": "New button on Roots page",
"created": "Sun, 01 Jan 2012 17:26:50 GMT",
"pgfnum": "4152",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2012/01/01/archive029.opml",
"subs": {
"0": {
"text": "I continue to log my work \"over there\" -- the two places are almost ready to meet up. But not yet.",
"created": "Sun, 01 Jan 2012 17:26:54 GMT",
"pgfnum": "4153"
},
"1": {
"text": "A current screen shot of the Roots page. What's new is obvious -- the New Root button at the bottom of the list. It works.",
"created": "Sun, 01 Jan 2012 17:27:10 GMT",
"pgfnum": "4154"
}
}
},
"2": {
"text": "Link counts",
"created": "Sun, 01 Jan 2012 05:52:19 GMT",
"pgfnum": "4171",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2012/01/01/archive024.opml",
"subs": {
"0": {
"text": "2012",
"subs": {
"0": {
"text": "",
"created": "Sun, 01 Jan 2012 05:52:32 GMT",
"pgfnum": "4172"
}
}
},
"1": {
"text": "2011",
"created": "Sun, 01 Jan 2012 05:58:26 GMT",
"pgfnum": "4175",
"subs": {
"0": {
"text": "",
"created": "Sun, 01 Jan 2012 05:52:32 GMT",
"pgfnum": "4172"
}
}
}
}
}
}
}
}
},
"17": {
"created": "Thu, 01 Dec 2011 14:37:20 GMT",
"pgfnum": "3746",
"text": "December 2011",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2012/01/01/archive033.opml",
"subs": {
"0": {
"text": "12/31/11 by DW",
"created": "Sat, 31 Dec 2011 17:06:04 GMT",
"pgfnum": "4145",
"subs": {
"0": {
"text": "Radio2 system-wide shortener prefs",
"created": "Sat, 31 Dec 2011 18:24:30 GMT",
"pgfnum": "4161",
"type": "blogpost",
"subs": {
"0": {
"text": "New prefs page in the OPML Editor website that lets you set all the global shortening prefs for Radio2.",
"created": "Sat, 31 Dec 2011 18:24:35 GMT",
"pgfnum": "4162"
},
"1": {
"text": "You can now use bit.ly exactly as an individual user could before. So if you want to switch over, you can. But you won't get counts.",
"created": "Sat, 31 Dec 2011 18:51:06 GMT",
"pgfnum": "4166"
},
"2": {
"text": "You can test this by turning off your user-level shortening prefs from the Radio2 site and then posting a link through the bookmarklet. It should shorten using your global prefs.",
"created": "Sat, 31 Dec 2011 18:52:02 GMT",
"pgfnum": "4168"
},
"3": {
"text": "Parts",
"created": "Sat, 31 Dec 2011 18:24:55 GMT",
"pgfnum": "4163",
"subs": {
"0": {
"text": "radio2Suite.init",
"created": "Sat, 31 Dec 2011 18:24:56 GMT",
"pgfnum": "4164"
},
"1": {
"text": "radio2Suite.data.prefsForSetup",
"created": "Sat, 31 Dec 2011 18:25:17 GMT",
"pgfnum": "4165"
},
"2": {
"text": "radio2Suite.shortener.create"
}
}
}
}
},
"1": {
"text": "Switching to bit.ly",
"created": "Sat, 31 Dec 2011 17:32:44 GMT",
"pgfnum": "4152",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/12/31/archive023.opml",
"subs": {
"0": {
"text": "I found a bug in the user interface for switching the shortening preference in Radio2 from Adjix to bit.ly, something I need to do now, because Adjix is experiencing downtime.",
"created": "Sat, 31 Dec 2011 17:32:48 GMT",
"pgfnum": "4153"
},
"1": {
"text": "In the Using Adjix panel, we have a checkbox that says \"Check this box to shorten URLs with Adjix\" -- but that's not what it controls. It actually determines whether or not the user's shortener prefs are to override the prefs set at the server level.",
"created": "Sat, 31 Dec 2011 17:33:23 GMT",
"pgfnum": "4154"
},
"2": {
"text": "So if you were to uncheck it, you would not get shortened urls using your bit.ly account.",
"created": "Sat, 31 Dec 2011 17:34:12 GMT",
"pgfnum": "4155"
},
"3": {
"text": "I changed the prefs system to give you a third page, that says clearly what this checkbox does. Screen shot.",
"created": "Sat, 31 Dec 2011 17:34:27 GMT",
"pgfnum": "4156"
},
"4": {
"text": "Also modified the Adjix page to remove the checkbox, and made it clear on the bit.ly page that if you do nothing you will get Adjix-shortened URLs.",
"created": "Sat, 31 Dec 2011 17:41:46 GMT",
"pgfnum": "4157"
},
"5": {
"text": "Now finally I think the prefs reflect reality! :-)",
"created": "Sat, 31 Dec 2011 17:42:08 GMT",
"pgfnum": "4158"
},
"6": {
"text": "Parts",
"created": "Sat, 31 Dec 2011 17:42:17 GMT",
"pgfnum": "4159",
"subs": {
"0": {
"text": "radio2Suite.data.prefsOutline",
"created": "Sat, 31 Dec 2011 17:42:18 GMT",
"pgfnum": "4160"
}
}
}
}
},
"2": {
"text": "Radio2 HTML archive uses long URLs",
"created": "Sat, 31 Dec 2011 17:06:05 GMT",
"pgfnum": "4146",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/12/31/archive022.opml",
"subs": {
"0": {
"text": "We're having problems with Adjix today, and with Twitter -- at the same time. And I've just released two pieces I've invested a lot in. Very few people can get to them, given the hurdles I've put in their way.",
"created": "Sat, 31 Dec 2011 17:06:23 GMT",
"pgfnum": "4147"
},
"1": {
"text": "Then I realized once and for all that we should, where ever possible, be migrating away from shortened URLs.",
"created": "Sat, 31 Dec 2011 17:06:59 GMT",
"pgfnum": "4148"
},
"2": {
"text": "The ability to count clicks isn't worth the tradeoff. And anyway, after a period of time I no longer care about how many clicks a link is getting. It's mostly about current links that I care.",
"created": "Sat, 31 Dec 2011 17:07:18 GMT",
"pgfnum": "4149"
},
"3": {
"text": "So I was going to change the way Radio2 generates the archive page, as a place to get started on deprecating short URLs. But I was already using the un-shortened links. So that's cool",
"created": "Sat, 31 Dec 2011 17:07:49 GMT",
"pgfnum": "4150"
}
}
}
}
},
"1": {
"text": "12/30/11 by DW",
"created": "Fri, 30 Dec 2011 14:29:04 GMT",
"pgfnum": "4134",
"subs": {
"0": {
"text": "Hooray for Hollywood!",
"created": "Fri, 30 Dec 2011 16:26:48 GMT",
"pgfnum": "4142",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/12/30/archive021.opml",
"subs": {
"0": {
"text": "This is a test post, a place where I'm playing around in both the old and the new universe.",
"created": "Fri, 30 Dec 2011 16:26:56 GMT",
"pgfnum": "4143"
},
"1": {
"text": "The rules in each place are similar, and evolving! :-)",
"created": "Fri, 30 Dec 2011 16:27:12 GMT",
"pgfnum": "4144"
},
"2": {
"text": "What's next",
"subs": {
"0": {
"text": "Assume domain allocation can fail."
},
"1": {
"text": "On blogposts, I want the title to show up at the top of the page in big letters, instead of My Big Outline. Not even sure where this is coming from."
},
"2": {
"text": "Roots become workspaces -- with the ability to define domains. Just like the main root does. (After this change there is no longer a main root, at least as a concept. The code remains in there. Not sure how it will surface.)"
},
"3": {
"text": "Setting the title in the prefs doesn't set it. this is because it doesn't change it in the OPML. that's where the change must take place."
},
"4": {
"text": "Folders in directories are broken. This is actually good -- it gives me something to do in html.directory.",
"subs": {
"0": {
"text": "While there, also finalize walk. Then let's release both of these, and get it some testing."
},
"1": {
"text": "It should work just fine on old installations."
}
}
},
"5": {
"text": "directory becomes a nodetype"
}
}
},
"3": {
"text": "Done",
"subs": {
"0": {
"text": "Easy way to make a new root outline."
},
"1": {
"text": "Twipsies for the labels at the top of each column."
},
"2": {
"text": "View button on archive window.",
"subs": {
"0": {
"text": "The Edit buttom must also include information about the domain."
}
}
}
}
},
"4": {
"text": "In the new place, everything has a domain name.",
"subs": {
"0": {
"text": "You can't create a new thing without it automatically being given one."
},
"1": {
"text": "The sysop sets up the server with the basic info. The domain to use, and how you want to refer to this server."
},
"2": {
"text": "Then it generates hostnames by mashing together the username and serialnumber of the outline."
},
"3": {
"text": "The domain name for this outline is davearchive021.mediahackers.org. That's because my username is dave and the outline is my 21st. I've given the server the domain mediahackers.org to play with."
},
"4": {
"text": "If you're going to run this software, start thinking about what domain you want to use. There will be lots of CNAMEs created on this domain."
},
"5": {
"text": "Finally, we are using domain names routinely in software. It feels like a registrar when you use it. You create a new outline, refresh the list, and at first the title is not hot. Hmm wonder why. Then you realize it's taking a while to register the name on the net. FInally, you refresh and it's hot. Click the link, and it works."
},
"6": {
"text": "This is an important place to get to. Worth noting."
}
}
},
"5": {
"text": "Should each root have a feed?",
"subs": {
"0": {
"text": "Seems hard to manage."
},
"1": {
"text": "Why not use Radio2 to distribute links to things you want to have links, when you want them to go out."
},
"2": {
"text": "You can have multiple feeds, so that can't be the problem. Is it too much work?"
}
}
},
"6": {
"text": "Deleting",
"subs": {
"0": {
"text": "Nothing is actually deleted when you delete an outline. It is removed from the list of outlines you see. However, any place that includes the outline or points into it will still have the outline to connect up with. Publishing an outline therefore is an irrevocable public act. That said, it's very useful to be able to remove it from your list."
},
"1": {
"text": "Screen shot of roots list."
}
}
}
}
},
"1": {
"text": "Working on a major improvement to worldOutline.root",
"created": "Fri, 30 Dec 2011 14:35:08 GMT",
"pgfnum": "4140",
"type": "blogpost",
"subs": {
"0": {
"text": "Long-planned, and going well. :-)",
"created": "Fri, 30 Dec 2011 14:35:18 GMT",
"pgfnum": "4141"
}
}
},
"2": {
"text": "Backups in webEditServer",
"created": "Fri, 30 Dec 2011 14:29:05 GMT",
"pgfnum": "4135",
"type": "blogpost",
"subs": {
"0": {
"text": "I use webEdit to check in stuff to servers as I'm working on code. Now, before it overwrites an object, it creates a backup copy in a folder on the server. An extra level of safety.",
"created": "Fri, 30 Dec 2011 14:29:16 GMT",
"pgfnum": "4136"
},
"1": {
"text": "By default the feature is not enabled. Run webeditserver.init, then visit user.webeditserver.prefs to set it up.",
"created": "Fri, 30 Dec 2011 14:30:37 GMT",
"pgfnum": "4139"
},
"2": {
"text": "Parts",
"created": "Fri, 30 Dec 2011 14:30:22 GMT",
"pgfnum": "4137",
"subs": {
"0": {
"text": "webEditServer.backupObject"
},
"1": {
"text": "webEditServer.init"
},
"2": {
"text": "webEditServer.rpcHandlers.webEdit.sendToServer"
}
}
}
}
}
}
},
"2": {
"text": "12/28/11 by DW",
"created": "Wed, 28 Dec 2011 17:36:21 GMT",
"pgfnum": "4128",
"subs": {
"0": {
"text": "I might have something interesting working",
"created": "Wed, 28 Dec 2011 17:36:22 GMT",
"pgfnum": "4129",
"subs": {
"0": {
"text": "I had to slice worldoutline.root up into chunks and sew it back together.",
"created": "Wed, 28 Dec 2011 17:36:34 GMT",
"pgfnum": "4130"
},
"1": {
"text": "But now it should be able to handle lots of small outlines with much more facility and ease of use.",
"created": "Wed, 28 Dec 2011 17:36:53 GMT",
"pgfnum": "4131"
},
"2": {
"text": "Let's see....",
"created": "Wed, 28 Dec 2011 17:37:13 GMT",
"pgfnum": "4132"
}
}
}
}
},
"3": {
"text": "12/27/11 by DW",
"created": "Tue, 27 Dec 2011 15:40:35 GMT",
"pgfnum": "4117",
"subs": {
"0": {
"text": "Multiple roots in world outline",
"created": "Tue, 27 Dec 2011 16:35:22 GMT",
"pgfnum": "4125",
"subs": {
"0": {
"text": "A command that displays the items in the archives table.",
"created": "Tue, 27 Dec 2011 16:35:28 GMT",
"pgfnum": "4126"
},
"1": {
"text": "default.users.dave.worldOutline",
"created": "Tue, 27 Dec 2011 16:36:04 GMT",
"pgfnum": "4127"
}
}
},
"1": {
"text": "Version 2 of my river template",
"created": "Tue, 27 Dec 2011 15:40:37 GMT",
"pgfnum": "4118",
"type": "blogpost",
"subs": {
"0": {
"text": "A new template I worked on last week, has lots of new features, including a Bootstrap Toolkit menubar at the top of the screen. And a RT button that works with Radio2. You can see it in action on my river.",
"created": "Tue, 27 Dec 2011 15:40:51 GMT",
"pgfnum": "4119"
},
"1": {
"text": "If you want to use it on your river...",
"created": "Tue, 27 Dec 2011 17:43:04 GMT",
"pgfnum": "4128"
},
"2": {
"text": "Take a copy of this template and edit it in the OPML Editor before using it with your river because it has my name and Twitter account in it. But if you're comfortable hand-modifying HTML code, you shouldn't have too many problems finding the places to edit. Just use the Find command in the OPML Editor.",
"created": "Tue, 27 Dec 2011 15:49:27 GMT",
"pgfnum": "4124"
},
"3": {
"text": "http://dropbox.scripting.com/dave/outlines/iowaRiverTemplateV2.opml",
"created": "Tue, 27 Dec 2011 15:42:44 GMT",
"pgfnum": "4120"
},
"4": {
"text": "If you want to use it in a static river, use the Prefs command in River2 and enter its URL in the Template URL page.",
"created": "Tue, 27 Dec 2011 15:43:16 GMT",
"pgfnum": "4121"
},
"5": {
"text": "If you want to use it in a worldoutline-hosted river, add a urlTemplate attribute that points to your edited version of this template.",
"created": "Tue, 27 Dec 2011 15:43:45 GMT",
"pgfnum": "4122"
},
"6": {
"text": "No doubt there will be a version 3 of the template, and maybe beyond.",
"created": "Tue, 27 Dec 2011 15:44:14 GMT",
"pgfnum": "4123"
},
"7": {
"text": "If you have questions post them on the River2 googlegroup.",
"created": "Tue, 27 Dec 2011 17:43:40 GMT",
"pgfnum": "4129"
}
}
}
}
},
"4": {
"text": "12/26/11 by DW",
"created": "Mon, 26 Dec 2011 13:50:10 GMT",
"pgfnum": "4083",
"subs": {
"0": {
"text": "Testing update process after relocation",
"created": "Mon, 26 Dec 2011 20:50:34 GMT",
"pgfnum": "4112",
"type": "blogpost",
"subs": {
"0": {
"text": "Finally something worked in the efforts to fix bits.codecasting.org. Now I'm testing the update process by releasing a new userlandsamples script that just says Hello World.",
"created": "Mon, 26 Dec 2011 20:50:46 GMT",
"pgfnum": "4113"
},
"1": {
"text": "Problem is that the update process doesn't handle redirects. That should be fixed, in case we ever have to go through something like this again. The relevant script is rootupdates.update. The call to tcp.httpreadurl should have ctFollowRedirects passed in as 3 in case there are ever a sequence of redirects.",
"created": "Mon, 26 Dec 2011 20:51:22 GMT",
"pgfnum": "4114"
},
"2": {
"text": "I'm going to deal with this problem by changing the definition of bits.codecasting.org to not be redirecting through my redirect server, but going back to a CNAME. Let's see if things are behaving somewhat rationally.",
"created": "Mon, 26 Dec 2011 20:53:14 GMT",
"pgfnum": "4115"
},
"3": {
"text": "Update: It worked. Whew.",
"created": "Mon, 26 Dec 2011 21:24:50 GMT",
"pgfnum": "4116"
}
}
},
"1": {
"text": "Right-click to add attribute?",
"created": "Mon, 26 Dec 2011 16:16:29 GMT",
"pgfnum": "4103",
"subs": {
"0": {
"text": "Might be time to add an option to add an attribute from the right-click menu in the outliner.",
"created": "Mon, 26 Dec 2011 16:16:34 GMT",
"pgfnum": "4104"
}
}
},
"2": {
"text": "Trouble with radioReallySimple.root?",
"created": "Mon, 26 Dec 2011 16:13:58 GMT",
"fldisquscomments": "false",
"pgfnum": "4099",
"type": "blogpost",
"subs": {
"0": {
"text": "I set up NakedJen with a Radio2 account. We tried connecting it to Twitter, and it appeared to work. She posted one item that did go through to Twitter, but three or four more did not.",
"created": "Mon, 26 Dec 2011 16:14:08 GMT",
"pgfnum": "4100"
},
"1": {
"text": "I have three posts in her feed that she has given me permission to try to post to Twitter through my software, so hopefully now I should be able to find the problem. On my account the connecdtion to Twitter works. I think it also works for Jay and a few others on my server. But this is not the first report of trouble in this area.",
"created": "Mon, 26 Dec 2011 16:15:14 GMT",
"pgfnum": "4101"
},
"2": {
"text": "Actually, it appears she was able to post something earlier today and it got through to Twitter.",
"created": "Mon, 26 Dec 2011 16:16:13 GMT",
"pgfnum": "4102",
"subs": {
"0": {
"text": "http://twitter.com/#!/nakedjen/status/151330618179985408",
"created": "Mon, 26 Dec 2011 16:39:42 GMT",
"pgfnum": "4108"
}
}
},
"3": {
"text": "And at least one of the earlier posts that we thought didn't go through, actually did.",
"created": "Mon, 26 Dec 2011 16:42:44 GMT",
"pgfnum": "4109"
},
"4": {
"text": "At least something is working! :-)",
"created": "Mon, 26 Dec 2011 16:42:59 GMT",
"pgfnum": "4110"
}
}
},
"3": {
"text": "Trouble with moved domains",
"created": "Mon, 26 Dec 2011 13:50:14 GMT",
"domain": "hello.codecasting.org",
"pgfnum": "4084",
"type": "blogpost",
"subs": {
"0": {
"text": "I moved 9 domains from GoDaddy to hover.com, and all went as normal, except for bits.codecasting.org. It's not working. Having no luck tricking the Internet to find it.",
"created": "Mon, 26 Dec 2011 13:50:26 GMT",
"pgfnum": "4085"
},
"1": {
"text": "Trying a test with hello.codecasting.org, to see if the problem is with Amazon Route 53, which is where I've moved the DNS from GoDaddy. It should point to this post. Let's see if it works.",
"created": "Mon, 26 Dec 2011 13:51:25 GMT",
"pgfnum": "4087",
"subs": {
"0": {
"text": "Nope. That didn't work.",
"created": "Mon, 26 Dec 2011 13:53:23 GMT",
"pgfnum": "4088"
}
}
},
"2": {
"text": "Then I saw the problem. On Route 53, I had set up codecasting.com, but the domain is codecasting.org. I knew it had to be something like that. :-)",
"created": "Mon, 26 Dec 2011 13:53:39 GMT",
"pgfnum": "4089",
"subs": {
"0": {
"text": "I re-did everything with codecasting.org, told hover.com about the new nameservers.",
"created": "Mon, 26 Dec 2011 13:56:27 GMT",
"pgfnum": "4090"
},
"1": {
"text": "If it works, then we should be able to get this file.",
"created": "Mon, 26 Dec 2011 14:01:03 GMT",
"pgfnum": "4091",
"subs": {
"0": {
"text": "http://bits.codecasting.org/rss.xml",
"created": "Mon, 26 Dec 2011 14:01:41 GMT",
"pgfnum": "4092"
}
}
}
}
},
"3": {
"text": "Now I have to wait until the new nameserver locations make their way around the net, I guess. Because it's still not resolving. Taking a break.",
"created": "Mon, 26 Dec 2011 14:07:56 GMT",
"pgfnum": "4093"
},
"4": {
"text": "An hour later and it's still not finding bits.codecasting.org on any of my machines, located anywhere.",
"created": "Mon, 26 Dec 2011 16:07:20 GMT",
"pgfnum": "4094"
},
"5": {
"text": "Going to try using hover.com as the DNS, and have reset the nameservers to ns1.hover.com and ns2.hover.com.",
"created": "Mon, 26 Dec 2011 16:07:45 GMT",
"pgfnum": "4095"
},
"6": {
"text": "I've mapped buongiorno.codecasting.org to a test node in the world outline here, to see what happens. If it maps then we know that hover's dns is getting the request because this name is not defined on Amazon Route 53.",
"created": "Mon, 26 Dec 2011 16:08:10 GMT",
"pgfnum": "4096",
"subs": {
"0": {
"text": "It doesn't resolve, but that could just be because the nameserver updates haven't percolated yet.",
"created": "Mon, 26 Dec 2011 16:11:11 GMT",
"pgfnum": "4098"
}
}
},
"7": {
"text": "I've moved the DNS for codecasting.org to hover. Now nothing is resolving. All of them are getting errors. I guess I'll wait a while to see what happens with this, and hopefully things will shake out.",
"created": "Mon, 26 Dec 2011 16:33:44 GMT",
"pgfnum": "4107"
},
"8": {
"text": "Switched the DNS for codecasting.org back to Amazon Route 53.",
"created": "Mon, 26 Dec 2011 16:50:07 GMT",
"pgfnum": "4111"
}
}
}
}
},
"5": {
"text": "12/23/11 by DW",
"created": "Fri, 23 Dec 2011 17:07:03 GMT",
"pgfnum": "4074",
"subs": {
"0": {
"text": "Back to static rivers",
"created": "Fri, 23 Dec 2011 17:07:05 GMT",
"domain": "backtostaticrivers.blorkmark.com",
"pgfnum": "4075",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm now back on plan after diverting to worldOutline.root.",
"created": "Fri, 23 Dec 2011 17:07:14 GMT",
"pgfnum": "4076"
},
"1": {
"text": "I've forked off a new version of the iowaRiverTemplate, and am using it to display daveriver.scripting.com. The goal is to integrate Bootstrap Toolkit with the river in a non-temporary way. They belong together, imho. And since all the action is in JavaScript, there are no scaling issues. It should work pretty well.",
"created": "Fri, 23 Dec 2011 17:07:41 GMT",
"pgfnum": "4078"
},
"2": {
"text": "The best place to view the river is here.",
"created": "Fri, 23 Dec 2011 17:08:38 GMT",
"pgfnum": "4079"
},
"3": {
"text": "http://daveriver.scripting.com/",
"created": "Fri, 23 Dec 2011 17:09:11 GMT",
"pgfnum": "4080"
},
"4": {
"text": "If you want to see the detailed progress, open the OPML file, or view source in the browser. The template is here:",
"created": "Fri, 23 Dec 2011 17:07:33 GMT",
"pgfnum": "4077"
},
"5": {
"text": "http://dropbox.scripting.com/dave/outlines/iowaRiverTemplateV2.opml",
"created": "Fri, 23 Dec 2011 17:09:56 GMT",
"pgfnum": "4081"
},
"6": {
"text": "More info about static rivers, at a technical level.",
"created": "Fri, 23 Dec 2011 17:28:37 GMT",
"pgfnum": "4082"
}
}
}
}
},
"6": {
"text": "12/22/11 by DW",
"created": "Thu, 22 Dec 2011 14:26:20 GMT",
"pgfnum": "4047",
"subs": {
"0": {
"text": "This idea doesn't work",
"type": "blogpost",
"subs": {
"0": {
"text": "You can't put the worknotes in its own outline and still have the feed get the new bits."
},
"1": {
"text": "I have to move the worknotes back into the main outline, and start thinking again."
}
}
},
"1": {
"text": "World Outline editing performance",
"type": "blogpost",
"subs": {
"0": {
"text": "Part of the problem is that my Internet connection is very slow at uploading."
},
"1": {
"text": "So if the outline is big, it's going to take a long time."
},
"2": {
"text": "Just saving December's worknotes is taking 5 seconds here. (I added code to time the upload.)"
},
"3": {
"text": "I'm thinking the only way to get a major boost is to have each day's worknotes be its own outline."
},
"4": {
"text": "But none of this actually works, see the next note for an explanation."
},
"5": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.saveArchivedOutline"
},
"1": {
"text": "opmlEditor.worldOutline.saveWorkspace"
}
}
}
}
},
"2": {
"text": "Tricky bit of reorg",
"type": "blogpost",
"subs": {
"0": {
"text": "I was working real hard to try to move everything but the worknotes section out of my main outline, and then realized it would be a lot easier to just move worknotes out of the main outline, using the Archive command."
},
"1": {
"text": "I did it. It works. Now the question is how much faster are saves?"
},
"2": {
"text": "Answer: Faster. But not enough. Now I think there's a bug that's making it slower. I'm going to put some debugging code in there, and see how long it takes for the outline on the server to update. If that's taking a long time, then I have to understand why and see if it can be optimized."
}
}
},
"3": {
"text": "Command-line attributes",
"created": "Thu, 22 Dec 2011 16:16:08 GMT",
"pgfnum": "4068",
"type": "blogpost",
"subs": {
"0": {
"text": "As I'm reorganizing my main outline, I'm reviewing sites, and finding interesting stuff I had forgotten.",
"created": "Thu, 22 Dec 2011 16:16:18 GMT",
"pgfnum": "4069"
},
"1": {
"text": "Command-line attributes. Example.",
"created": "Thu, 22 Dec 2011 16:16:35 GMT",
"pgfnum": "4070"
},
"2": {
"text": "Any parameters passed to a page are available to macros in that page.",
"created": "Thu, 22 Dec 2011 16:16:55 GMT",
"pgfnum": "4071"
},
"3": {
"text": "Nice and clean and fun! :-)",
"created": "Thu, 22 Dec 2011 16:17:12 GMT",
"pgfnum": "4072"
}
}
},
"4": {
"text": "Saving world outline improvement",
"created": "Thu, 22 Dec 2011 15:44:20 GMT",
"pgfnum": "4056",
"type": "blogpost",
"subs": {
"0": {
"text": "Now when you save the outline we maintain an archive copy of the outline in the archive folder.",
"created": "Thu, 22 Dec 2011 15:44:21 GMT",
"pgfnum": "4057"
},
"1": {
"text": "The files are saved with a serial number, as workspace001.opml, workspace002.opml, etc.",
"created": "Thu, 22 Dec 2011 15:44:57 GMT",
"pgfnum": "4058"
},
"2": {
"text": "The serial number rolls over every day.",
"created": "Thu, 22 Dec 2011 15:45:23 GMT",
"pgfnum": "4059"
},
"3": {
"text": "We used to only maintain a local archive sub-outlines that are archived on the server.",
"created": "Thu, 22 Dec 2011 15:46:13 GMT",
"pgfnum": "4062"
},
"4": {
"text": "I want to keep a trail of this very important outline locally.",
"created": "Thu, 22 Dec 2011 15:46:40 GMT",
"pgfnum": "4063"
},
"5": {
"text": "Can be disabled with user.opmlEditor.worldOutline.prefs.flArchivedOutlinesLocally.",
"created": "Thu, 22 Dec 2011 15:46:54 GMT",
"pgfnum": "4064"
},
"6": {
"text": "The folder location is at: user.opmlEditor.worldOutline.prefs.folderLocalArchive.",
"created": "Thu, 22 Dec 2011 16:52:34 GMT",
"pgfnum": "4073"
},
"7": {
"text": "I keep the archive in Dropbox, in /public/worldoutline/archive/.",
"created": "Thu, 22 Dec 2011 15:48:16 GMT",
"pgfnum": "4065"
},
"8": {
"text": "Parts",
"created": "Thu, 22 Dec 2011 15:45:32 GMT",
"pgfnum": "4060",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.saveWorkspace",
"created": "Thu, 22 Dec 2011 15:45:35 GMT",
"pgfnum": "4061"
}
}
}
}
},
"5": {
"text": "Reverting File/Open code",
"created": "Thu, 22 Dec 2011 14:26:21 GMT",
"pgfnum": "4048",
"type": "blogpost",
"subs": {
"0": {
"text": "Earlier this week I embarked on an ill-advised adventure to do a quick fix of a problem in the opening and saving out OPML files on the desktop.",
"created": "Thu, 22 Dec 2011 14:26:37 GMT",
"pgfnum": "4049"
},
"1": {
"text": "The problem, as reported on the Frontier-user list, is that it doesn't preserve the title element in the head of the file. This is a bug. It should preserve it.",
"created": "Thu, 22 Dec 2011 14:27:06 GMT",
"pgfnum": "4050"
},
"2": {
"text": "However, the functionality seems simple from a user perspective, from a coding perspective, it is not simple. So when I made the fix I broke it in a few other ways. Then as I fixed the breakage from the fix, things never really got better.",
"created": "Thu, 22 Dec 2011 14:27:33 GMT",
"pgfnum": "4051"
},
"3": {
"text": "Bottom-line: This should be approached again, at some point, but with a few days to dig in and really understand how this works, so the fix will actually be a fix.",
"created": "Thu, 22 Dec 2011 14:28:19 GMT",
"pgfnum": "4052"
},
"4": {
"text": "Parts",
"created": "Thu, 22 Dec 2011 14:28:46 GMT",
"pgfnum": "4053",
"subs": {
"0": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.open",
"created": "Mon, 19 Dec 2011 17:45:01 GMT",
"pgfnum": "3945"
},
"1": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.save"
}
}
}
}
}
}
},
"7": {
"text": "12/21/11 by DW",
"created": "Wed, 21 Dec 2011 12:52:36 GMT",
"pgfnum": "3986",
"subs": {
"0": {
"text": "List of currently supported types",
"created": "Wed, 21 Dec 2011 12:56:43 GMT",
"pgfnum": "3995",
"subs": {
"0": {
"text": "The types that worldOutline.root knows how to render.",
"created": "Wed, 21 Dec 2011 12:56:51 GMT",
"pgfnum": "3996",
"subs": {
"0": {
"text": "blogpost",
"created": "Wed, 21 Dec 2011 12:57:18 GMT",
"pgfnum": "3997"
},
"1": {
"text": "code",
"created": "Wed, 21 Dec 2011 12:58:20 GMT",
"pgfnum": "3998"
},
"2": {
"text": "photo",
"created": "Wed, 21 Dec 2011 12:58:24 GMT",
"pgfnum": "4001"
},
"3": {
"text": "outline",
"created": "Wed, 21 Dec 2011 12:58:22 GMT",
"pgfnum": "4000"
},
"4": {
"text": "river",
"created": "Wed, 21 Dec 2011 12:58:26 GMT",
"pgfnum": "4002"
},
"5": {
"text": "howto",
"created": "Wed, 21 Dec 2011 12:58:21 GMT",
"pgfnum": "3999"
},
"6": {
"text": "",
"created": "Wed, 21 Dec 2011 17:27:30 GMT",
"pgfnum": "4036"
},
"7": {
"text": "rss",
"created": "Wed, 21 Dec 2011 12:58:27 GMT",
"pgfnum": "4003"
},
"8": {
"text": "thumblist",
"created": "Wed, 21 Dec 2011 12:58:28 GMT",
"pgfnum": "4004"
}
}
}
}
},
"1": {
"text": "Templates for rss nodes",
"created": "Wed, 21 Dec 2011 21:31:52 GMT",
"pgfnum": "4045",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's a rss node.",
"created": "Wed, 21 Dec 2011 21:31:59 GMT",
"pgfnum": "4046"
},
"1": {
"text": "Here's the default template.",
"created": "Wed, 21 Dec 2011 21:51:38 GMT",
"pgfnum": "4049"
},
"2": {
"text": "Lots more possibilities here, but this is where I stop for the day. :-)",
"created": "Wed, 21 Dec 2011 21:51:42 GMT",
"pgfnum": "4050"
},
"3": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 21:51:16 GMT",
"pgfnum": "4047",
"subs": {
"0": {
"text": "worldOutlineSuite.data.urls.defaultFeedTemplate"
},
"1": {
"text": "worldOutlineSuite.viewFeedCallback"
}
}
}
}
},
"2": {
"text": "Templates for howto nodes",
"created": "Wed, 21 Dec 2011 19:42:56 GMT",
"pgfnum": "4040",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's a howto document.",
"created": "Wed, 21 Dec 2011 19:44:11 GMT",
"pgfnum": "4043"
},
"1": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 19:43:03 GMT",
"pgfnum": "4041",
"subs": {
"0": {
"text": "howto2Suite.data.urlDefaultTemplate",
"created": "Wed, 21 Dec 2011 19:43:04 GMT",
"pgfnum": "4042"
},
"1": {
"text": "howto2Suite.renderSubOutline",
"created": "Wed, 21 Dec 2011 19:49:08 GMT",
"pgfnum": "4044"
}
}
}
}
},
"3": {
"text": "Templates for outline nodes",
"created": "Wed, 21 Dec 2011 16:49:05 GMT",
"pgfnum": "4032",
"type": "blogpost",
"subs": {
"0": {
"text": "Same as with the other types. The default template is here.",
"created": "Wed, 21 Dec 2011 17:02:28 GMT",
"pgfnum": "4035"
},
"1": {
"text": "Had to add a parameter to worldOutlineSuite.viewOutline, so it knows where the node's atts are so it can look for the urlTemplate attribute.",
"created": "Wed, 21 Dec 2011 17:39:53 GMT",
"pgfnum": "4038"
},
"2": {
"text": "Here's an example of an outline node.",
"created": "Wed, 21 Dec 2011 17:40:34 GMT",
"pgfnum": "4039"
},
"3": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 16:49:13 GMT",
"pgfnum": "4033",
"subs": {
"0": {
"text": "worldOutlineSuite.data.urls.defaultOutlineTemplate"
},
"1": {
"text": "worldOutlineSuite.viewOutline"
},
"2": {
"text": "worldOutlineSuite.viewOutlineCallback"
}
}
}
}
},
"4": {
"text": "Templates for blogpost nodes",
"created": "Wed, 21 Dec 2011 16:49:05 GMT",
"pgfnum": "4032",
"type": "blogpost",
"subs": {
"0": {
"text": "Same as with the other types. The default template is here.",
"created": "Wed, 21 Dec 2011 17:02:28 GMT",
"pgfnum": "4035"
},
"1": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 16:49:13 GMT",
"pgfnum": "4033",
"subs": {
"0": {
"text": "worldOutlineSuite.data.urls.defaultBlogpostTemplate"
},
"1": {
"text": "worldOutlineSuite.viewBlogPostCallback"
}
}
}
}
},
"5": {
"text": "Templates for code nodes",
"created": "Wed, 21 Dec 2011 14:15:39 GMT",
"pgfnum": "4021",
"type": "blogpost",
"subs": {
"0": {
"text": "Default template is here.",
"created": "Wed, 21 Dec 2011 16:01:36 GMT",
"pgfnum": "4027"
},
"1": {
"text": "Follows the usual protocol, if you want to provide a custom template for code, link to it from a urlTemplate attribute.",
"created": "Wed, 21 Dec 2011 16:01:44 GMT",
"pgfnum": "4028"
},
"2": {
"text": "Here's a code node that uses the default template.",
"created": "Wed, 21 Dec 2011 16:11:39 GMT",
"pgfnum": "4031"
},
"3": {
"text": "And one with a custom template.",
"created": "Wed, 21 Dec 2011 16:33:52 GMT",
"pgfnum": "4031"
},
"4": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 16:02:08 GMT",
"pgfnum": "4029",
"subs": {
"0": {
"text": "worldOutlineSuite.data.urls.defaultCodeTemplate"
},
"1": {
"text": "worldOutlineSuite.viewCodeCallback",
"created": "Wed, 21 Dec 2011 16:02:09 GMT",
"pgfnum": "4030"
}
}
}
}
},
"6": {
"text": "Templates for photo pages",
"created": "Wed, 21 Dec 2011 13:05:16 GMT",
"pgfnum": "4008",
"type": "blogpost",
"subs": {
"0": {
"text": "Photo pages are now generated through templates.",
"created": "Wed, 21 Dec 2011 14:50:18 GMT",
"pgfnum": "4025"
},
"1": {
"text": "The default template is here.",
"created": "Wed, 21 Dec 2011 14:50:27 GMT",
"pgfnum": "4026"
},
"2": {
"text": "As with rivers, if you specify a urlTemplate attribute, we render with your template. Otherwise we use the default template.",
"created": "Wed, 21 Dec 2011 13:06:18 GMT",
"pgfnum": "4012"
},
"3": {
"text": "Here's an example of a photo with a custom template. Look for the lyrics to a song below the picture.",
"created": "Wed, 21 Dec 2011 14:29:21 GMT",
"pgfnum": "4024"
},
"4": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 13:06:09 GMT",
"pgfnum": "4010",
"subs": {
"0": {
"text": "worldOutlineSuite.data.urls.defaultPhotoTemplate"
},
"1": {
"text": "worldOutlineSuite.getOutlineText"
},
"2": {
"text": "worldOutlineSuite.getTemplateText"
},
"3": {
"text": "worldOutlineSuite.viewPhotoCallback"
},
"4": {
"text": "worldOutlineSuite.viewRiverCallback"
}
}
}
}
},
"7": {
"text": "Styles for thumblists",
"created": "Wed, 21 Dec 2011 13:07:55 GMT",
"pgfnum": "4013",
"type": "blogpost",
"subs": {
"0": {
"text": "Cleaned up the HTML we generate for thumblists, and added classes so we can have styles.",
"created": "Wed, 21 Dec 2011 13:07:59 GMT",
"pgfnum": "4014"
},
"1": {
"text": "Add these styles to your world outline stylesheet to get started. Have fun changing the styles if that's your thing.",
"created": "Wed, 21 Dec 2011 13:08:38 GMT",
"pgfnum": "4016"
},
"2": {
"text": "Here's an example thumblist to look at, with the new styles.",
"created": "Wed, 21 Dec 2011 13:24:17 GMT",
"pgfnum": "4019"
},
"3": {
"text": "There was a bug with how it generates URLs for pictures, which was fixed.",
"created": "Wed, 21 Dec 2011 14:14:54 GMT",
"pgfnum": "4020"
},
"4": {
"text": "Parts",
"created": "Wed, 21 Dec 2011 13:09:08 GMT",
"pgfnum": "4017",
"subs": {
"0": {
"text": "worldOutlineSuite.viewThumbListCallback"
}
}
}
}
},
"8": {
"text": "Fixed another problem with outline saving",
"created": "Tue, 20 Dec 2011 17:39:33 GMT",
"pgfnum": "3977",
"type": "blogpost",
"subs": {
"0": {
"text": "Untitled windows don't always have a hyphen after then word \"untitled\" in their name. So don't insist on finding it. Never should have opened this can of worms. :-(",
"created": "Tue, 20 Dec 2011 17:39:41 GMT",
"pgfnum": "3978"
},
"1": {
"text": "Parts",
"created": "Tue, 20 Dec 2011 17:39:48 GMT",
"pgfnum": "3979",
"subs": {
"0": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.save",
"created": "Tue, 20 Dec 2011 17:39:49 GMT",
"pgfnum": "3980"
}
}
}
}
}
}
},
"8": {
"text": "12/20/11 by DW",
"created": "Tue, 20 Dec 2011 15:02:18 GMT",
"pgfnum": "3952",
"subs": {
"0": {
"text": "Fixed problem with outline saving",
"created": "Tue, 20 Dec 2011 17:39:33 GMT",
"pgfnum": "3977",
"type": "blogpost",
"subs": {
"0": {
"text": "Stuff that I did wrong yesterday. Oy.",
"created": "Tue, 20 Dec 2011 17:39:41 GMT",
"pgfnum": "3978"
},
"1": {
"text": "Parts",
"created": "Tue, 20 Dec 2011 17:39:48 GMT",
"pgfnum": "3979",
"subs": {
"0": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.save",
"created": "Tue, 20 Dec 2011 17:39:49 GMT",
"pgfnum": "3980"
}
}
}
}
},
"1": {
"text": "Log builds of the static river",
"created": "Tue, 20 Dec 2011 17:14:28 GMT",
"pgfnum": "3971",
"type": "blogpost",
"subs": {
"0": {
"text": "When River2 builds a static river from the Build command, log the event.",
"created": "Tue, 20 Dec 2011 17:14:33 GMT",
"pgfnum": "3972"
},
"1": {
"text": "This way you can see for sure that the build took place, how long it took.",
"created": "Tue, 20 Dec 2011 17:14:49 GMT",
"pgfnum": "3973"
},
"2": {
"text": "Also if there's one user doing a lot of builds you can see that and potentially ask them why.",
"created": "Tue, 20 Dec 2011 17:15:01 GMT",
"pgfnum": "3974"
},
"3": {
"text": "Parts",
"created": "Tue, 20 Dec 2011 17:15:16 GMT",
"pgfnum": "3975",
"subs": {
"0": {
"text": "river2Website.buildStaticRiver",
"created": "Tue, 20 Dec 2011 17:15:18 GMT",
"pgfnum": "3976"
}
}
}
}
},
"2": {
"text": "Expand/collapse on thumbList nodes",
"created": "Tue, 20 Dec 2011 16:36:29 GMT",
"pgfnum": "3965",
"type": "blogpost",
"subs": {
"0": {
"text": "myPhotos.root generates nodes of type thumbList. Here's an example of an OPML file that contains lots of them.",
"created": "Tue, 20 Dec 2011 16:36:39 GMT",
"pgfnum": "3966"
},
"1": {
"text": "If you're browsing an outline that has these types in the OPML Editor, with this update, they will now expand and collapse correctly.",
"created": "Tue, 20 Dec 2011 16:37:32 GMT",
"pgfnum": "3967"
},
"2": {
"text": "They basically behave just like include nodes.",
"created": "Tue, 20 Dec 2011 16:37:49 GMT",
"pgfnum": "3968"
},
"3": {
"text": "Parts",
"created": "Tue, 20 Dec 2011 16:37:57 GMT",
"pgfnum": "3969",
"subs": {
"0": {
"text": "Frontier.tools.data.nodeTypes.thumbList",
"created": "Tue, 20 Dec 2011 16:37:58 GMT",
"pgfnum": "3970"
}
}
}
}
},
"3": {
"text": "Templates for dynamic rivers",
"created": "Tue, 20 Dec 2011 15:02:19 GMT",
"pgfnum": "3953",
"type": "blogpost",
"subs": {
"0": {
"text": "You can now use templates for static rivers in dynamic rivers.",
"created": "Tue, 20 Dec 2011 15:02:50 GMT",
"pgfnum": "3955"
},
"1": {
"text": "To do so, add an attribute called urlTemplate to the river node, with the address of the template.",
"created": "Tue, 20 Dec 2011 15:03:00 GMT",
"pgfnum": "3956"
},
"2": {
"text": "The first couple of rivers in this directory use my template that supports RT. The last couple don't specify a template, therefore they get the default template.",
"created": "Tue, 20 Dec 2011 15:03:15 GMT",
"pgfnum": "3957"
},
"3": {
"text": "Parts",
"created": "Tue, 20 Dec 2011 15:03:42 GMT",
"pgfnum": "3959",
"subs": {
"0": {
"text": "worldOutlineSuite.viewRiverCallback",
"created": "Tue, 20 Dec 2011 15:03:43 GMT",
"pgfnum": "3960"
}
}
}
}
}
}
},
"9": {
"text": "12/19/11 by DW",
"created": "Mon, 19 Dec 2011 15:47:26 GMT",
"pgfnum": "3942",
"subs": {
"0": {
"text": "Preserving titles in File/Open",
"created": "Mon, 19 Dec 2011 17:35:36 GMT",
"pgfnum": "3942",
"type": "blogpost",
"subs": {
"0": {
"text": "When you open an OPML file, it should preserve the title element of the file. Same when you save the file.",
"created": "Mon, 19 Dec 2011 17:35:45 GMT",
"pgfnum": "3943"
},
"1": {
"text": "Lots of old code in here, hard to follow, but I believe I found and fixed the problems. It was mostly confusion, because op.xmlToOutline, the core code, does preserve the title.",
"created": "Mon, 19 Dec 2011 22:47:10 GMT",
"pgfnum": "3949"
},
"2": {
"text": "There's a new pref, user.prefs.flPreserveOpmlWindowTitle, that disables the change. It defaults true. Setting it false will restore the old behavior.",
"created": "Mon, 19 Dec 2011 23:46:16 GMT",
"pgfnum": "3951"
},
"3": {
"text": "To get the new parts, choose Update opml.root from the File menu in the OPML Editor.",
"created": "Mon, 19 Dec 2011 23:45:39 GMT",
"pgfnum": "3950"
},
"4": {
"text": "Parts",
"created": "Mon, 19 Dec 2011 17:44:59 GMT",
"pgfnum": "3944",
"subs": {
"0": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.open",
"created": "Mon, 19 Dec 2011 17:45:01 GMT",
"pgfnum": "3945"
},
"1": {
"text": "Frontier.tools.data.windowTypes.outlinerFile.save"
}
}
}
}
},
"1": {
"text": "RT in a static river",
"created": "Mon, 19 Dec 2011 15:47:27 GMT",
"pgfnum": "3943",
"type": "blogpost",
"subs": {
"0": {
"text": "Explained in a blog post on Scripting News.",
"created": "Mon, 19 Dec 2011 16:11:59 GMT",
"pgfnum": "3953"
}
}
}
}
},
"10": {
"text": "12/18/11 by DW",
"created": "Sun, 18 Dec 2011 13:16:27 GMT",
"pgfnum": "3927",
"subs": {
"0": {
"text": "Menu twipsies in Bootstrap?",
"created": "Sun, 18 Dec 2011 15:26:33 GMT",
"fldisquscomments": "false",
"pgfnum": "3937",
"type": "blogpost",
"subs": {
"0": {
"text": "It's possible that Bootstrap already does this, if so, my apologies for not reading the docs carefully enough.",
"created": "Sun, 18 Dec 2011 15:26:38 GMT",
"pgfnum": "3938"
},
"1": {
"text": "It's a pretty simple idea: I'd like a way to specify for each menu item a bit of help text that displays when the user hovers over the item. Like the title attribute of an <a> element. A tooltip.",
"created": "Sun, 18 Dec 2011 15:27:01 GMT",
"pgfnum": "3939"
},
"2": {
"text": "It would work pretty much like twipsies.",
"created": "Sun, 18 Dec 2011 15:28:45 GMT",
"pgfnum": "3940"
}
}
},
"1": {
"text": "Building static river on command",
"created": "Sun, 18 Dec 2011 13:16:28 GMT",
"pgfnum": "3928",
"type": "blogpost",
"subs": {
"0": {
"text": "Last week we added the ability to edit the template for your static river.",
"created": "Sun, 18 Dec 2011 13:16:42 GMT",
"pgfnum": "3929"
},
"1": {
"text": "However when you made a change you'd have to wait for the next scan to complete, and even then it might not build your river, if none of the feeds you're following updated.",
"created": "Sun, 18 Dec 2011 13:18:29 GMT",
"pgfnum": "3930"
},
"2": {
"text": "We need a way to do this \"on command.\"",
"created": "Sun, 18 Dec 2011 13:19:00 GMT",
"pgfnum": "3931"
},
"3": {
"text": "So I added a command to the River2 application, Build, that builds the current user's static river. When it completes, the message includes a URL to the river so you can check it out.",
"created": "Sun, 18 Dec 2011 13:32:38 GMT",
"pgfnum": "3934"
},
"4": {
"text": "I also implemented a RPC handler that does the same thing. It takes two parameters, the username and password for the user. This may prove useful if someone creates a template editor and wants to trigger a remote update of the static river.",
"created": "Sun, 18 Dec 2011 13:19:09 GMT",
"pgfnum": "3932"
},
"5": {
"text": "Parts",
"created": "Sun, 18 Dec 2011 13:33:54 GMT",
"pgfnum": "3935",
"subs": {
"0": {
"text": "river2Suite.rpcHandlers.buildStaticRiver"
},
"1": {
"text": "river2Suite.viewMenu"
},
"2": {
"text": "river2Website.buildStaticRiver"
},
"3": {
"text": "river2Suite.utilities.buildMyStaticRiver"
}
}
}
}
}
}
},
"11": {
"text": "12/16/11 by DW",
"created": "Fri, 16 Dec 2011 14:28:48 GMT",
"pgfnum": "3921",
"subs": {
"0": {
"text": "New icons for hiding/showing Bootstrap menu",
"created": "Fri, 16 Dec 2011 14:28:49 GMT",
"pgfnum": "3922",
"type": "blogpost",
"subs": {
"0": {
"text": "Per abetam's advice on the Bootstrap list, I changed the collapse icon to an up-wedge, and the expand icon to a down-wedge. The analogy is pushing the menu up into the top of the window, or pulling it down from under the top of the window.",
"created": "Fri, 16 Dec 2011 14:29:09 GMT",
"pgfnum": "3923"
},
"1": {
"text": "I think this is a better approach, so I made the change and released the updated part.",
"created": "Fri, 16 Dec 2011 14:30:41 GMT",
"pgfnum": "3926"
},
"2": {
"text": "Initially I wanted a pair of icons like the flags on a mailbox."
},
"3": {
"text": "The Alarm Clock on the original 1984 Mac had a UI that worked this way. Normally the app was just a small one-line window that showed the current time. It had the flag on it. If you clicked on the flag, the rest of the window scrolled down and revealed the settings. I can see it in my mind's eye, but couldn't find any screen shots of it on the web."
},
"4": {
"text": "Not much of an icon designer, so this will have to do until something better comes along."
},
"5": {
"text": "Parts",
"created": "Fri, 16 Dec 2011 14:29:45 GMT",
"pgfnum": "3924",
"subs": {
"0": {
"text": "webApp.viewMenu",
"created": "Fri, 16 Dec 2011 14:29:46 GMT",
"pgfnum": "3925"
}
}
}
}
}
}
},
"12": {
"text": "12/15/11 by DW",
"created": "Thu, 15 Dec 2011 15:09:00 GMT",
"pgfnum": "3917",
"subs": {
"0": {
"text": "World outline template rewrite",
"created": "Thu, 15 Dec 2011 15:09:10 GMT",
"pgfnum": "3918",
"subs": {
"0": {
"text": "Now it's time to rip up the pavement in the world outline template, and build something simple that's easy to control.",
"created": "Thu, 15 Dec 2011 15:09:28 GMT",
"pgfnum": "3919"
},
"1": {
"text": "I've archived my previous template here.",
"created": "Thu, 15 Dec 2011 15:09:49 GMT",
"pgfnum": "3920"
}
}
}
}
},
"13": {
"text": "12/14/11 by DW",
"created": "Wed, 14 Dec 2011 16:28:54 GMT",
"pgfnum": "3896",
"subs": {
"0": {
"text": "Use cookie to remember state of menu",
"created": "Wed, 14 Dec 2011 22:28:22 GMT",
"pgfnum": "3906",
"type": "blogpost",
"subs": {
"0": {
"text": "It's not enough to have a toggle, you have to remember what the value was.",
"created": "Wed, 14 Dec 2011 22:28:33 GMT",
"pgfnum": "3907"
},
"1": {
"text": "I've implemented it, but want to do some more testing before I release.",
"created": "Wed, 14 Dec 2011 22:29:04 GMT",
"pgfnum": "3908"
},
"2": {
"text": "How to test",
"created": "Wed, 14 Dec 2011 23:45:03 GMT",
"pgfnum": "3909",
"subs": {
"0": {
"text": "On this page, click the blue wedge.",
"created": "Wed, 14 Dec 2011 23:45:05 GMT",
"pgfnum": "3910"
},
"1": {
"text": "Go to this post on Scripting News.",
"created": "Wed, 14 Dec 2011 23:45:18 GMT",
"pgfnum": "3911"
},
"2": {
"text": "Click the link to \"Worknotes site.\"",
"created": "Wed, 14 Dec 2011 23:45:23 GMT",
"pgfnum": "3912"
},
"3": {
"text": "If the menubar was visible before you went away and came back, it should still be visible. If it was not visible it should still be not visible.",
"created": "Wed, 14 Dec 2011 23:45:31 GMT",
"pgfnum": "3913"
}
}
},
"3": {
"text": "What's new",
"created": "Wed, 14 Dec 2011 23:47:20 GMT",
"pgfnum": "3914",
"subs": {
"0": {
"text": "I am able to save state from JavaScript running on the user's machine. There's no reason why you shouldn't be able to, considering that the script is saving into memory on the user's machine. Why should you have to go through HTTP headers. Works nicely. Will be prior art for other stuff, for sure. :-)",
"created": "Wed, 14 Dec 2011 23:47:23 GMT",
"pgfnum": "3915"
}
}
},
"4": {
"text": "Parts",
"created": "Wed, 14 Dec 2011 16:30:58 GMT",
"pgfnum": "3903",
"subs": {
"0": {
"text": "webApp.data.menuScripts"
},
"1": {
"text": "webApp.viewMenu"
}
}
}
}
},
"1": {
"text": "Icon to toggle visibility of menubar",
"created": "Wed, 14 Dec 2011 16:28:55 GMT",
"pgfnum": "3897",
"type": "blogpost",
"subs": {
"0": {
"text": "In an effort to simplify the world outline environment, I added codt that makes the menubar visibility toggle.",
"created": "Wed, 14 Dec 2011 16:29:09 GMT",
"pgfnum": "3898"
},
"1": {
"text": "Click the blue wedge in the upper left corner of the screen to make it go away. Cick again to bring it back.",
"created": "Wed, 14 Dec 2011 16:29:41 GMT",
"pgfnum": "3899"
},
"2": {
"text": "I'm probably going to switch this around to default the other way, but I wanted it to work this way so I could demo it for others who use Bootstrap Toolkit.",
"created": "Wed, 14 Dec 2011 16:29:58 GMT",
"pgfnum": "3900"
},
"3": {
"text": "Perhaps this is a feature others want to impmement? Just View Source.",
"created": "Wed, 14 Dec 2011 16:30:25 GMT",
"pgfnum": "3901"
},
"4": {
"text": "Also, I'm not the best icon guy or CSS guy, so if you come up with something you think is better, please let me know.",
"created": "Wed, 14 Dec 2011 16:30:38 GMT",
"pgfnum": "3902"
},
"5": {
"text": "I wrote a blog post about this feature.",
"created": "Wed, 14 Dec 2011 16:44:19 GMT",
"pgfnum": "3905"
},
"6": {
"text": "Parts",
"created": "Wed, 14 Dec 2011 16:30:58 GMT",
"pgfnum": "3903",
"subs": {
"0": {
"text": "webApp.data.menuScripts"
},
"1": {
"text": "webApp.viewMenu"
}
}
}
}
}
}
},
"14": {
"text": "12/12/11 by DW",
"created": "Mon, 12 Dec 2011 16:33:33 GMT",
"pgfnum": "3861",
"subs": {
"0": {
"text": "Stats & Atts",
"created": "Mon, 12 Dec 2011 21:48:49 GMT",
"pgfnum": "3885",
"type": "blogpost",
"subs": {
"0": {
"text": "First little improvement in my World Outline template in quite a while.",
"created": "Mon, 12 Dec 2011 21:48:56 GMT",
"pgfnum": "3886"
},
"1": {
"text": "At the bottom of each page, I used to display stats about the current page. Who the editor is, read count, how many seconds it took to build the page.",
"created": "Mon, 12 Dec 2011 21:49:11 GMT",
"pgfnum": "3887"
},
"2": {
"text": "I also showed the attributes for the node. It's very useful for debugging.",
"created": "Mon, 12 Dec 2011 21:49:54 GMT",
"pgfnum": "3888"
},
"3": {
"text": "I replaced them with two popovers called ; Updated: <%lastModDate%>; <%hits%> reads. <%subItems%> items. Page build ran for <%ctsecs%> seconds.\">Stats & .\">Atts.",
"created": "Mon, 12 Dec 2011 21:50:09 GMT",
"pgfnum": "3889"
},
"4": {
"text": "Tucks away the data, helps simplify the display. These are going to get icons.",
"created": "Mon, 12 Dec 2011 21:50:35 GMT",
"pgfnum": "3890"
},
"5": {
"text": "Here's the code for the new bits:",
"created": "Mon, 12 Dec 2011 21:50:56 GMT",
"pgfnum": "3891"
},
"6": {
"text": "<p><a href=\"#\" rel=\"popover\" title=\"Node Stats\" data-content=\"Editor: <%editor%>; Updated: <%lastModDate%>; <%hits%> reads. <%subItems%> items. <%suggestLink%> Page build ran for <%ctsecs%> seconds.\">Stats</a> & <a href=\"#\" rel=\"popover\" title=\"Node Attributes\" data-content=\"<%nodeAttsDebug%>.\">Atts</a>.</p>",
"created": "Mon, 12 Dec 2011 21:51:10 GMT",
"pgfnum": "3892"
}
}
},
"1": {
"text": "Debugging notification",
"created": "Mon, 12 Dec 2011 18:47:28 GMT",
"pgfnum": "3878",
"subs": {
"0": {
"text": "Testing this site.",
"created": "Mon, 12 Dec 2011 18:47:32 GMT",
"pgfnum": "3879"
},
"1": {
"text": "http://garythegary.com/feed/",
"created": "Mon, 12 Dec 2011 18:47:39 GMT",
"pgfnum": "3880"
},
"2": {
"text": "tcp.dns.getdomainname (tcp.dns.getdottedid (\"garythegary.com\"))",
"created": "Mon, 12 Dec 2011 18:47:42 GMT",
"pgfnum": "3881",
"subs": {}
}
}
},
"2": {
"text": "Rebuilding my scripting2 site",
"created": "Mon, 12 Dec 2011 17:20:41 GMT",
"pgfnum": "3874",
"type": "blogpost",
"subs": {
"0": {
"text": "So many little do-dads and formats have changed on my scripting2 site, the old pages now look like crap. So I want to run a script on the server that will rebuild all the story pages going back to the beginning of the scripting2 site. Which I believe is February 2010 if I'm not mistaken.",
"created": "Mon, 12 Dec 2011 17:20:46 GMT",
"pgfnum": "3875"
},
"1": {
"text": "Ran into a problem at the end of scripting2Suite.server.buildEverything in scripting2Suite.server.buildMonthPage. Had to get the previous url of the month page in a try in case there is no previous month. This was newly rewritten code (according to a comment) that apparently had not been tested? It runs now.",
"created": "Mon, 12 Dec 2011 21:32:14 GMT",
"pgfnum": "3882"
},
"2": {
"text": "Parts",
"created": "Mon, 12 Dec 2011 21:33:53 GMT",
"pgfnum": "3883",
"subs": {
"0": {
"text": "scripting2Suite.server.buildMonthPage",
"created": "Mon, 12 Dec 2011 21:33:54 GMT",
"pgfnum": "3884"
}
}
}
}
},
"3": {
"text": "Disqus width problem",
"created": "Mon, 12 Dec 2011 16:33:34 GMT",
"fldisquscomments": "true",
"pgfnum": "3862",
"type": "blogpost",
"subs": {
"0": {
"text": "I've noticed and some readers have noticed that pages with Disqus comments sometimes grow to fill the entire screen horizontally. Sometimes even more space than there is.",
"created": "Mon, 12 Dec 2011 16:33:46 GMT",
"pgfnum": "3863"
},
"1": {
"text": "I sent an email to Daniel Ha, the founder of the company. He looked into it, and found the problem, and suggested a couple of possible solutions.",
"created": "Mon, 12 Dec 2011 16:34:21 GMT",
"pgfnum": "3864"
},
"2": {
"text": "1. Make sure Disqus is in a block that's the same width as the rest of your content. He says that in my case, I can just wrap Disqus in <p> tags.",
"created": "Mon, 12 Dec 2011 16:34:40 GMT",
"pgfnum": "3865"
},
"3": {
"text": "2. Explicitly define, via CSS, the width or margins of the Disqus block which is called #disqus_thread.",
"created": "Mon, 12 Dec 2011 16:35:54 GMT",
"pgfnum": "3866"
},
"4": {
"text": "Since we pass through the Disqus capability in our software, I wanted to post this tech note so people could see it, in case they're seeing this problem on their sites.",
"created": "Mon, 12 Dec 2011 16:36:18 GMT",
"pgfnum": "3867"
},
"5": {
"text": "Examples of pages with the problem",
"created": "Mon, 12 Dec 2011 16:41:38 GMT",
"pgfnum": "3868",
"subs": {
"0": {
"text": "http://rsscloud.org/walkthrough.html",
"created": "Mon, 12 Dec 2011 16:41:45 GMT",
"pgfnum": "3869",
"subs": {
"0": {
"text": "This will depend on a change Daniel makes on his server, because I don't have easy access to rebuilding this page. The entire rsscloud site will need to be ported to the worldoutline format at some point, but it hasn't happened yet.",
"created": "Mon, 12 Dec 2011 17:07:19 GMT",
"pgfnum": "3870"
}
}
},
"1": {
"text": "http://scripting.com/stories/2011/12/09/nprShouldGetAPulitzerForTh.html",
"created": "Mon, 12 Dec 2011 17:07:58 GMT",
"pgfnum": "3871",
"subs": {
"0": {
"text": "This one should be fixed by the change I just made to the Scripting2 story template.",
"created": "Mon, 12 Dec 2011 17:09:21 GMT",
"pgfnum": "3872"
},
"1": {
"text": "It was fixed. I set the width of #disqus_thread to 700px.",
"created": "Mon, 12 Dec 2011 17:13:10 GMT",
"pgfnum": "3873"
}
}
}
}
},
"6": {
"text": "Editing prefs in Disqus",
"created": "Mon, 12 Dec 2011 18:15:32 GMT",
"pgfnum": "3876",
"subs": {
"0": {
"text": "They have a Custom CSS feature, configurable on this page.",
"created": "Mon, 12 Dec 2011 18:15:36 GMT",
"pgfnum": "3877"
}
}
}
}
}
}
},
"15": {
"text": "12/11/11 by DW",
"created": "Sun, 11 Dec 2011 14:40:29 GMT",
"pgfnum": "3846",
"subs": {
"0": {
"text": "Dropbox works for podcatcher",
"created": "Mon, 12 Dec 2011 02:41:57 GMT",
"pgfnum": "3859",
"type": "blogpost",
"subs": {
"0": {
"text": "Per AC's recommendation, I installed Dropbox on my Nexus/S. Directed River2, running on a Rackspace server, to download podcasts to a sub-folder of the dropbox folder. And I can play them on Nexus/S without having to connect the phone to anything. It's all done over the air. Beautiful.",
"created": "Mon, 12 Dec 2011 02:42:04 GMT",
"pgfnum": "3860"
}
}
}
}
},
"16": {
"text": "12/10/11 by DW",
"created": "Sat, 10 Dec 2011 14:54:50 GMT",
"pgfnum": "3829",
"subs": {
"0": {
"text": "Better control over podcast downloads",
"created": "Sat, 10 Dec 2011 14:54:51 GMT",
"pgfnum": "3830",
"type": "blogpost",
"subs": {
"0": {
"text": "Background",
"created": "Sat, 10 Dec 2011 15:07:23 GMT",
"pgfnum": "3840",
"subs": {
"0": {
"text": "It really irritates me that the podcatcher downloads every enclosure that every feed puts out there.",
"created": "Sat, 10 Dec 2011 14:55:03 GMT",
"pgfnum": "3831"
},
"1": {
"text": "For some reason, a bunch of them attach small photos to their news items. (FastCompany, for example.)",
"created": "Sat, 10 Dec 2011 14:55:21 GMT",
"pgfnum": "3832"
},
"2": {
"text": "This clutters up my Podcatcher folder, and the River2 log page.",
"created": "Sat, 10 Dec 2011 14:55:51 GMT",
"pgfnum": "3833"
},
"3": {
"text": "So -- let's add a new pref in River2, that gives you control over what types of files are downloaded.",
"created": "Sat, 10 Dec 2011 14:56:10 GMT",
"pgfnum": "3834"
},
"4": {
"text": "I'm going to go by the type attribute on enclosures. I know some don't include them, but we're a strict RSS consumer, so we can depend on them being there. (They are required by the RSS 2.0 spec after all.)",
"created": "Sat, 10 Dec 2011 14:56:42 GMT",
"pgfnum": "3835"
},
"5": {
"text": "On my server, I'm only going to download audio enclosures.",
"created": "Sat, 10 Dec 2011 14:57:29 GMT",
"pgfnum": "3836"
}
}
},
"1": {
"text": "Implementation",
"created": "Sat, 10 Dec 2011 15:07:31 GMT",
"pgfnum": "3841",
"subs": {
"0": {
"text": "New river2-level pref (i.e. for all users on the machine), prefs.podcasts.typesToDownload. A comma-separated string. If the type of an enclosure contains one of the strings, we download it. Thus, by setting the value to \"audio\" -- all audio formats are downloaded. That is the default value. If you want all types to download set the value to \"all\".",
"created": "Sat, 10 Dec 2011 15:07:34 GMT",
"pgfnum": "3842"
},
"1": {
"text": "Updated the Podcatcher prefs page for the sysop -- in the OPML Editor prefs system. Screen shot.",
"created": "Sun, 11 Dec 2011 14:47:41 GMT",
"pgfnum": "3851"
},
"2": {
"text": "Wrote a howto that's linked into the new prefs page.",
"created": "Sun, 11 Dec 2011 15:13:50 GMT",
"pgfnum": "3858"
}
}
},
"2": {
"text": "Parts",
"created": "Sat, 10 Dec 2011 14:57:47 GMT",
"pgfnum": "3837",
"subs": {
"0": {
"text": "river2Suite.podcasts.typeIsAllowed"
},
"1": {
"text": "river2Suite.init"
},
"2": {
"text": "river2Suite.newItem"
},
"3": {
"text": "river2Suite.podcasts.checkQueue"
},
"4": {
"text": "river2Suite.podcasts.downloadOne"
},
"5": {
"text": "river2Suite.data.prefsOutline"
}
}
}
}
}
}
},
"17": {
"text": "12/9/11 by DW",
"created": "Fri, 09 Dec 2011 17:08:45 GMT",
"pgfnum": "3809",
"subs": {
"0": {
"text": "Custom template for my static river",
"created": "Fri, 09 Dec 2011 22:07:36 GMT",
"pgfnum": "3818",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to be able to add links to my static river, also allow designers access to be able to completely change the look and feel.",
"created": "Sat, 10 Dec 2011 13:37:07 GMT",
"pgfnum": "3825"
},
"1": {
"text": "The result is a feature that allows you to specify an OPML file that contains a template through which we will render the river.",
"created": "Sat, 10 Dec 2011 13:37:35 GMT",
"pgfnum": "3826"
},
"2": {
"text": "You can store the template anywhere, as long as it has a public address. This is the template for daveriver.scripting.com (at least now, may change later).",
"created": "Sat, 10 Dec 2011 13:38:12 GMT",
"pgfnum": "3827"
},
"3": {
"text": "Added a page to the user prefs for River2 that allow you to enter the URL of the template. Choose Prefs from your River2 site to find the page.",
"created": "Fri, 09 Dec 2011 22:17:39 GMT",
"pgfnum": "3823"
},
"4": {
"text": "When you change the template, look for the new rendering in the log page on your River2 site.",
"created": "Sat, 10 Dec 2011 13:39:58 GMT",
"pgfnum": "3828"
},
"5": {
"text": "Parts",
"created": "Fri, 09 Dec 2011 22:08:50 GMT",
"pgfnum": "3821",
"subs": {
"0": {
"text": "river2Suite.initUser"
},
"1": {
"text": "river2Suite.data.prefsOutlineUser"
},
"2": {
"text": "river2Suite.viewBeautifulRiver"
},
"3": {
"text": "river2Suite.static.buildBeautifulRiver"
}
}
}
}
},
"1": {
"text": "Rotating header on scripting.com",
"created": "Fri, 09 Dec 2011 17:08:46 GMT",
"pgfnum": "3810",
"type": "blogpost",
"subs": {
"0": {
"text": "I have a library of header graphics for Scripting News.",
"created": "Fri, 09 Dec 2011 17:08:59 GMT",
"pgfnum": "3811"
},
"1": {
"text": "Thought it would be fun to rotate them through the home page.",
"created": "Fri, 09 Dec 2011 17:09:14 GMT",
"pgfnum": "3812"
},
"2": {
"text": "One per day. In random order. Give people a reason to look at the home page. :-)",
"created": "Fri, 09 Dec 2011 17:09:24 GMT",
"pgfnum": "3813"
},
"3": {
"text": "I implemented it in scripting2.root, so in case someone else has a library of images they want to use, with a bit of scripting, the could set it up.",
"created": "Fri, 09 Dec 2011 17:09:41 GMT",
"pgfnum": "3814"
},
"4": {
"text": "I included, as a sample script, the code I used to load up my table from an HTML file.",
"created": "Fri, 09 Dec 2011 17:10:20 GMT",
"pgfnum": "3817"
},
"5": {
"text": "Parts",
"created": "Fri, 09 Dec 2011 17:10:10 GMT",
"pgfnum": "3815",
"subs": {
"0": {
"text": "scripting2Suite.utilities.loadRotatingHeaders"
},
"1": {
"text": "scripting2Suite.initUser"
},
"2": {
"text": "scripting2Suite.server.setupMacrosTable"
}
}
}
}
}
}
},
"18": {
"text": "12/7/11 by DW",
"created": "Wed, 07 Dec 2011 14:45:31 GMT",
"pgfnum": "3783",
"subs": {
"0": {
"text": "Next steps for World Outline",
"created": "Thu, 08 Dec 2011 01:18:18 GMT",
"pgfnum": "3802",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to take three steps back now and look at how to boot up something incredibly simple that anyone who can use an outliner can use to narrate their work. Not as formal as shownotes or worknotes.",
"created": "Thu, 08 Dec 2011 01:18:23 GMT",
"pgfnum": "3803"
},
"1": {
"text": "I think it will involve a watched folder that's kept in synch with a folder on S3, which then connects up to a server that I run.",
"created": "Thu, 08 Dec 2011 01:19:04 GMT",
"pgfnum": "3804"
},
"2": {
"text": "Then look for a few people to help burn it in.",
"created": "Thu, 08 Dec 2011 01:19:34 GMT",
"pgfnum": "3805"
},
"3": {
"text": "Probably have a few meetups in NYC, perhaps elsewhere.",
"created": "Thu, 08 Dec 2011 01:20:19 GMT",
"pgfnum": "3806"
}
}
},
"1": {
"text": "Writing a howto for outline nodes",
"created": "Wed, 07 Dec 2011 14:45:32 GMT",
"pgfnum": "3784",
"type": "blogpost",
"subs": {
"0": {
"text": "Now I want to show people how to use the new outline node.",
"created": "Wed, 07 Dec 2011 15:03:24 GMT",
"pgfnum": "3794"
},
"1": {
"text": "I wrote a blog post on Scripting News.",
"created": "Thu, 08 Dec 2011 01:17:38 GMT",
"pgfnum": "3801"
},
"2": {
"text": "Time to come out of the shadows on this stuff, somewhat.",
"created": "Wed, 07 Dec 2011 15:03:45 GMT",
"pgfnum": "3796"
}
}
}
}
},
"19": {
"text": "12/6/11 by DW",
"created": "Tue, 06 Dec 2011 14:50:35 GMT",
"pgfnum": "3769",
"subs": {
"0": {
"text": "Release of outline nodetype",
"created": "Tue, 06 Dec 2011 14:50:36 GMT",
"pgfnum": "3770",
"type": "blogpost",
"subs": {
"0": {
"text": "This is it.",
"created": "Wed, 07 Dec 2011 01:03:12 GMT",
"pgfnum": "3781"
},
"1": {
"text": "Demo1.",
"created": "Wed, 30 Nov 2011 20:52:56 GMT",
"pgfnum": "3745",
"type": "outline",
"url": "http://dropbox.scripting.com/dave/worldOutline/states.opml"
},
"2": {
"text": "Demo2.",
"created": "Wed, 07 Dec 2011 01:04:29 GMT",
"pgfnum": "3782"
},
"3": {
"text": "Parts",
"created": "Tue, 06 Dec 2011 14:50:46 GMT",
"pgfnum": "3771",
"subs": {
"0": {
"text": "worldOutlineSuite.data.outlineScriptsAndStyles"
},
"1": {
"text": "worldOutlineSuite.data.urls"
},
"2": {
"text": "html.directory.walk"
},
"3": {
"text": "worldOutlineSuite.init"
},
"4": {
"text": "worldOutlineSuite.viewOutline"
},
"5": {
"text": "worldOutlineSuite.viewOutlineCallback"
}
}
}
}
},
"1": {
"text": "Thinking out loud",
"created": "Tue, 06 Dec 2011 22:37:54 GMT",
"pgfnum": "3773",
"type": "blogpost",
"subs": {
"0": {
"text": "I didn't like how html.directory.walk came out, so I went to a backup and am looking at doing it a different way.",
"created": "Tue, 06 Dec 2011 22:37:57 GMT",
"pgfnum": "3774"
},
"1": {
"text": "There are two cases I want to handle:",
"created": "Tue, 06 Dec 2011 22:38:29 GMT",
"pgfnum": "3775"
},
"2": {
"text": "1. URL points to a node inside an outline node.",
"created": "Tue, 06 Dec 2011 22:38:47 GMT",
"pgfnum": "3776"
},
"3": {
"text": "2. URL points to a node of another nodetype in an outline node.",
"created": "Tue, 06 Dec 2011 22:39:01 GMT",
"pgfnum": "3777"
},
"4": {
"text": "When the walk routine hits an outline node, it should hand it off to the outline walker, and let it take care of it.",
"created": "Tue, 06 Dec 2011 22:39:21 GMT",
"pgfnum": "3778"
},
"5": {
"text": "So it should unconditionally return, not checking if the path is empty, just get out of there after dealing with an outline node.",
"created": "Tue, 06 Dec 2011 22:40:02 GMT",
"pgfnum": "3779"
},
"6": {
"text": "Outlines are special, they are not like blogposts or photos. So I'm going to write special code for it. No apologies.",
"created": "Tue, 06 Dec 2011 22:40:21 GMT",
"pgfnum": "3780"
}
}
}
}
},
"20": {
"text": "12/5/11 by DW",
"created": "Mon, 05 Dec 2011 19:50:25 GMT",
"pgfnum": "3762",
"subs": {
"0": {
"text": "A new worldoutline nodetype",
"created": "Mon, 05 Dec 2011 19:50:26 GMT",
"pgfnum": "3763",
"type": "blogpost",
"subs": {
"0": {
"text": "I have a new worldoutline nodetype to release. The code will probably go out tomorrow.",
"created": "Mon, 05 Dec 2011 19:50:45 GMT",
"pgfnum": "3764"
},
"1": {
"text": "The type is outline. When displayed by the worldoutline app it shows up as an expandable outline. This seems strictly better than the directory display which lets you view just one level at a time. In the expandable outline mode of viewing, you can see many levels. This is a lesson learned a very long time ago.",
"created": "Mon, 05 Dec 2011 19:51:33 GMT",
"pgfnum": "3766"
},
"2": {
"text": "Here's a demo of an outline node. It's the hello world of outlining -- the states outline.",
"created": "Mon, 05 Dec 2011 19:51:06 GMT",
"pgfnum": "3765"
},
"3": {
"text": "If you drill into Midwest/Michigan/Flint you will find a blogpost node. If you click on the document icon you view the blogpost. In the cookie crumb trail, you'll see entries that point into the outline. If you click on one, the outline displays with the path to that node open. All the expanded headlines are in boldface. So you can point into an outline this way. It's very natural, and obviously also totally necessary.",
"created": "Mon, 05 Dec 2011 19:53:08 GMT",
"pgfnum": "3767"
},
"4": {
"text": "This release is a first step, perhaps. I want to let this burn in for a while before deciding how to present the world outline to a new user. I want it to be very simple, yet to have all the power show through, and lay a foundation for more functionality later. If this were an album, I want to decide its title, and what the single is going to be. It's analogous to the decision in Radio 8 in 2002 on deciding which would be on the home page, the blogging tool or the aggregator.",
"created": "Mon, 05 Dec 2011 19:55:00 GMT",
"pgfnum": "3768"
}
}
}
}
},
"21": {
"text": "12/3/11 by DW",
"created": "Sat, 03 Dec 2011 19:52:54 GMT",
"pgfnum": "1",
"subs": {
"0": {
"text": "Test of list making",
"created": "Sat, 03 Dec 2011 19:53:23 GMT",
"pgfnum": "2",
"type": "outline",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/12/03/archive018.opml"
}
}
},
"22": {
"text": "12/1/11 by DW",
"created": "Thu, 01 Dec 2011 14:37:23 GMT",
"pgfnum": "3747",
"subs": {
"0": {
"text": "Expand/collapse in the world outline",
"created": "Thu, 01 Dec 2011 14:37:29 GMT",
"pgfnum": "3748",
"type": "outline",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/12/01/archive016.opml"
}
}
}
}
},
"18": {
"created": "Tue, 01 Nov 2011 14:06:00 GMT",
"pgfnum": "2952",
"text": "November 2011",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/12/02/archive017.opml",
"subs": {
"0": {
"text": "11/30/11 by DW",
"created": "Wed, 30 Nov 2011 20:42:45 GMT",
"pgfnum": "3738",
"subs": {
"0": {
"text": "Outlining in the World Outline",
"created": "Wed, 30 Nov 2011 20:42:47 GMT",
"pgfnum": "3739",
"type": "blogpost",
"subs": {
"0": {
"text": "An experimental feature.",
"created": "Wed, 30 Nov 2011 20:43:09 GMT",
"pgfnum": "3740"
},
"1": {
"text": "If you set the type of a node to \"outline\" -- I know that's kind of weird isn't it -- instead of rendering as a directory it will render as an outline, with blue wedges that let you expand and collapse.",
"created": "Wed, 30 Nov 2011 20:43:15 GMT",
"pgfnum": "3741"
},
"2": {
"text": "It's experimental! So don't ask when it will be released.",
"created": "Wed, 30 Nov 2011 20:44:08 GMT",
"pgfnum": "3742"
},
"3": {
"text": "Demo",
"created": "Wed, 30 Nov 2011 20:52:56 GMT",
"pgfnum": "3745",
"type": "outline",
"url": "http://dropbox.scripting.com/dave/worldOutline/states.opml"
}
}
}
}
},
"1": {
"text": "11/28/11 by DW",
"created": "Mon, 28 Nov 2011 16:43:23 GMT",
"pgfnum": "3719",
"subs": {
"0": {
"text": "Allow River2 user to set S3 location",
"created": "Mon, 28 Nov 2011 17:07:31 GMT",
"pgfnum": "3731",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to store the scripting.com community river in its own bucket.",
"created": "Mon, 28 Nov 2011 17:07:50 GMT",
"pgfnum": "3732"
},
"1": {
"text": "I was going to do a prefs page for this, but it's really involved and I'm pretty sure no one without access to the system is going to want to do this. You need to give the server owner access to your bucket.",
"created": "Mon, 28 Nov 2011 17:41:30 GMT",
"pgfnum": "3736"
},
"2": {
"text": "If you come across this feature, look in the user's prefs table, for the s3 sub-table. Set the enabled boolean to true and provide the path to the location you want the user's files to be stored in. They will also be stored in the default location for all users of your server.",
"created": "Mon, 28 Nov 2011 17:42:30 GMT",
"pgfnum": "3737"
},
"3": {
"text": "Parts",
"created": "Mon, 28 Nov 2011 17:08:29 GMT",
"pgfnum": "3734",
"subs": {
"0": {
"text": "river2suite.inituser",
"created": "Mon, 28 Nov 2011 17:08:30 GMT",
"pgfnum": "3735"
},
"1": {
"text": "river2Suite.static.writeFile"
}
}
}
}
},
"1": {
"text": "jQuery toe-dip",
"created": "Mon, 28 Nov 2011 16:43:23 GMT",
"pgfnum": "3720",
"type": "blogpost",
"subs": {
"0": {
"text": "Let's try to improve the river a little.",
"created": "Mon, 28 Nov 2011 16:43:36 GMT",
"pgfnum": "3721"
},
"1": {
"text": "When you mouse over the word \"Feed\" -- which links to the RSS feed for the group of posts -- right now it says \"Subscribe to feed.feedTitle,\" which is really generic and not that useful (we already know the feed title, it's in big letters to the left of the world Feed.",
"created": "Mon, 28 Nov 2011 16:43:49 GMT",
"pgfnum": "3722"
},
"2": {
"text": "The change was simple, change the HTML from the first (below) to the second:",
"created": "Mon, 28 Nov 2011 16:47:42 GMT",
"pgfnum": "3724",
"subs": {
"0": {
"text": "<a href=\"${feed.feedUrl}\" title=\"Subscribe to ${feed.feedTitle}\">Feed</a>",
"created": "Mon, 28 Nov 2011 16:48:19 GMT",
"pgfnum": "3725"
},
"1": {
"text": "<a href=\"${feed.feedUrl}\" title=\"${feed.feedDescription}\">Feed</a>",
"created": "Mon, 28 Nov 2011 16:48:19 GMT",
"pgfnum": "3725"
}
}
},
"3": {
"text": "I assumed we were outputting the feed description in the JSON, but we are not! (Easily fixed.)",
"created": "Mon, 28 Nov 2011 16:54:20 GMT",
"pgfnum": "3726",
"subs": {
"0": {
"text": "http://static.scripting.com/houston/rivers/scripting/River3.js",
"created": "Mon, 28 Nov 2011 16:55:13 GMT",
"pgfnum": "3727"
}
}
},
"4": {
"text": "Instead I'd like it to show the channel-level <description> element for the feed. Screen shot.",
"created": "Mon, 28 Nov 2011 16:45:23 GMT",
"pgfnum": "3723"
},
"5": {
"text": "Parts",
"created": "Mon, 28 Nov 2011 16:55:31 GMT",
"pgfnum": "3728",
"subs": {
"0": {
"text": "river2Suite.data.html.riverBody",
"created": "Mon, 28 Nov 2011 16:55:33 GMT",
"pgfnum": "3729"
},
"1": {
"text": "river2Suite.viewJsonNews3",
"created": "Mon, 28 Nov 2011 16:56:41 GMT",
"pgfnum": "3730"
}
}
}
}
},
"2": {
"text": "Adam Curry jingles \"in the morning\"",
"type": "blogpost",
"subs": {
"0": {
"text": "Adam Curry Pet Peeve.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Adam Curry Pet Peeve.mp3"
},
"1": {
"text": "Book of Knowledge.wav",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Book of Knowledge.wav"
},
"2": {
"text": "buzzer.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/buzzer.mp3"
},
"3": {
"text": "Clip of the Day.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Clip of the Day.mp3"
},
"4": {
"text": "Constitution.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Constitution.mp3"
},
"5": {
"text": "ding hq.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/ding hq.mp3"
},
"6": {
"text": "doasyouaretold_short.mov",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/doasyouaretold_short.mov"
},
"7": {
"text": "Douchebag.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Douchebag.mp3"
},
"8": {
"text": "douchebag_song.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/douchebag_song.mp3"
},
"9": {
"text": "Drone Nation Time.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Drone Nation Time.mp3"
},
"10": {
"text": "Dvorak.org/na.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Dvorak.org/na.mp3"
},
"11": {
"text": "DvorakPockets.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/DvorakPockets.mp3"
},
"12": {
"text": "Gitmo Downunder.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Gitmo Downunder.mp3"
},
"13": {
"text": "hummerJingle.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/hummerJingle.mp3"
},
"14": {
"text": "In The PM.wav",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/In The PM.wav"
},
"15": {
"text": "ITM-Chorus.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/ITM-Chorus.mp3"
},
"16": {
"text": "JCD sat times.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/JCD sat times.mp3"
},
"17": {
"text": "Jingle - Super de-douche.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Jingle - Super de-douche.mp3"
},
"18": {
"text": "Jingle33.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Jingle33.mp3"
},
"19": {
"text": "johnGaltPrimer.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/johnGaltPrimer.mp3"
},
"20": {
"text": "KevinReeves-Sunday Times.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/KevinReeves-Sunday Times.mp3"
},
"21": {
"text": "kidjingles.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/kidjingles.mp3"
},
"22": {
"text": "lithium.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/lithium.mp3"
},
"23": {
"text": "MagicNumberJingle.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/MagicNumberJingle.mp3"
},
"24": {
"text": "MickyLaugh.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/MickyLaugh.mp3"
},
"25": {
"text": "MILF Baby.m4a",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/MILF Baby.m4a"
},
"26": {
"text": "MILF Sting.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/MILF Sting.mp3"
},
"27": {
"text": "NA-BEST-PODCAST-IN-#6730A3B.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/NA-BEST-PODCAST-IN-#6730A3B.mp3"
},
"28": {
"text": "NA-HAPPY-YAPPERS-ITM.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/NA-HAPPY-YAPPERS-ITM.mp3"
},
"29": {
"text": "Obama cant wait.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Obama cant wait.mp3"
},
"30": {
"text": "Obama Predator Drone.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Obama Predator Drone.mp3"
},
"31": {
"text": "obey.wav",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/obey.wav"
},
"32": {
"text": "obey2.wav",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/obey2.wav"
},
"33": {
"text": "Open Up Now.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Open Up Now.mp3"
},
"34": {
"text": "PEDO-BEAR-JINGLE.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/PEDO-BEAR-JINGLE.mp3"
},
"35": {
"text": "poop-police.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/poop-police.mp3"
},
"36": {
"text": "Queen - Forever (Pi#5CC2776.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Queen - Forever (Pi#5CC2776.mp3"
},
"37": {
"text": "Rick Perry mofo.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Rick Perry mofo.mp3"
},
"38": {
"text": "ShoeThrow.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/ShoeThrow.mp3"
},
"39": {
"text": "TechnoExperts.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/TechnoExperts.mp3"
},
"40": {
"text": "The Message is Clear.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/The Message is Clear.mp3"
},
"41": {
"text": "turn off ur tv.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/turn off ur tv.mp3"
},
"42": {
"text": "Turn Off Your Television 2.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Turn Off Your Television 2.mp3"
},
"43": {
"text": "Win Lose Or Drone Ending.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Win Lose Or Drone Ending.mp3"
},
"44": {
"text": "Win Lose Or Drone Tagline.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Win Lose Or Drone Tagline.mp3"
},
"45": {
"text": "Win Lose Or Drone.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/Win Lose Or Drone.mp3"
},
"46": {
"text": "wolfHowl.wav",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/wolfHowl.wav"
},
"47": {
"text": "wtc7.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/wtc7.mp3"
},
"48": {
"text": "YouveGotKarma1.mp3",
"type": "link",
"url": "http://dropbox.curry.com/Jingles/YouveGotKarma1.mp3"
}
}
}
}
},
"2": {
"text": "11/27/11 by DW",
"created": "Sun, 27 Nov 2011 20:05:26 GMT",
"pgfnum": "3694",
"subs": {
"0": {
"text": "Tracking code in the River",
"created": "Sun, 27 Nov 2011 23:05:06 GMT",
"pgfnum": "3713",
"type": "blogpost",
"subs": {
"0": {
"text": "A new prefs page in the River2 prefs system, Tracking code.",
"created": "Sun, 27 Nov 2011 23:26:01 GMT",
"pgfnum": "3716"
},
"1": {
"text": "You can embed any code you like at the end of your static river. This can be used for statistics gathering, hit counters, web bugs, even an ad. It appears in the template at the bottom of the page.",
"created": "Sun, 27 Nov 2011 23:05:12 GMT",
"pgfnum": "3714"
},
"2": {
"text": "Screen shot.",
"created": "Sun, 27 Nov 2011 23:26:31 GMT",
"pgfnum": "3717"
},
"3": {
"text": "Parts",
"created": "Sun, 27 Nov 2011 23:05:18 GMT",
"pgfnum": "3715",
"subs": {
"0": {
"text": "river2Suite.data.html.beautifulRiverTemplate"
},
"1": {
"text": "river2Suite.data.prefsOutlineUser"
},
"2": {
"text": "river2Suite.viewBeautifulRiver"
}
}
}
}
},
"1": {
"text": "Rebuilding OPML after subscribing in River2",
"created": "Sun, 27 Nov 2011 22:02:43 GMT",
"pgfnum": "3705",
"type": "blogpost",
"subs": {
"0": {
"text": "If I add a feed, my OPML file should be rebuilt within a reasonable period of time.",
"created": "Sun, 27 Nov 2011 22:02:49 GMT",
"pgfnum": "3706"
},
"1": {
"text": "It happens in the everyMinute script, not after every subscription. If you subscribe to 100 feeds we don't want to rebuild the OPML 100 times.",
"created": "Sun, 27 Nov 2011 23:29:32 GMT",
"pgfnum": "3718"
},
"2": {
"text": "Added a comment at the head of the OPML we build with the date and time and the software version that's building it. The standard stuff that for some reason wasn't there.",
"created": "Sun, 27 Nov 2011 23:01:36 GMT",
"pgfnum": "3710"
},
"3": {
"text": "Parts",
"created": "Sun, 27 Nov 2011 22:03:07 GMT",
"pgfnum": "3707",
"subs": {
"0": {
"text": "river2suite.initUser",
"created": "Sun, 27 Nov 2011 22:03:09 GMT",
"pgfnum": "3708"
},
"1": {
"text": "river2Suite.opmlBuild"
},
"2": {
"text": "river2Suite.subscribeUserToFeed"
},
"3": {
"text": "river2Suite.background.everyMinute",
"created": "Sun, 27 Nov 2011 22:03:16 GMT",
"pgfnum": "3709"
}
}
}
}
},
"2": {
"text": "Problems with links in Atom feeds",
"created": "Sun, 27 Nov 2011 20:05:28 GMT",
"pgfnum": "3695",
"type": "blogpost",
"subs": {
"0": {
"text": "I just tried to subscribe to a feed that had link elements with no rel attributes.",
"created": "Sun, 27 Nov 2011 20:05:41 GMT",
"pgfnum": "3696"
},
"1": {
"text": "Apparently this is legal Atom.",
"created": "Sun, 27 Nov 2011 20:06:02 GMT",
"pgfnum": "3697"
},
"2": {
"text": "I had to make three changes to xml.rss.getFeedItems to handle this.",
"created": "Sun, 27 Nov 2011 20:06:10 GMT",
"pgfnum": "3698"
},
"3": {
"text": "I'm going to let this run on my aggregator for a while before releasing to be sure things didn't break too bad.",
"created": "Sun, 27 Nov 2011 20:06:36 GMT",
"pgfnum": "3701"
},
"4": {
"text": "Depending on how many feeds are doing this, and when they started, we might find some feeds come back to life.",
"created": "Sun, 27 Nov 2011 20:06:52 GMT",
"pgfnum": "3702"
},
"5": {
"text": "Apparently he's using Octopress.",
"created": "Sun, 27 Nov 2011 20:08:19 GMT",
"pgfnum": "3704"
},
"6": {
"text": "Parts",
"created": "Sun, 27 Nov 2011 20:06:26 GMT",
"pgfnum": "3699",
"subs": {
"0": {
"text": "xml.rss.getFeedItems",
"created": "Sun, 27 Nov 2011 20:06:28 GMT",
"pgfnum": "3700"
}
}
}
}
}
}
},
"3": {
"text": "11/26/11 by DW",
"created": "Sat, 26 Nov 2011 13:23:03 GMT",
"pgfnum": "3658",
"subs": {
"0": {
"text": "ServerMonitor",
"created": "Sun, 27 Nov 2011 02:42:57 GMT",
"pgfnum": "3683",
"type": "blogpost",
"subs": {
"0": {
"text": "Tie up some loose ends in serverMonitor.root.",
"created": "Sun, 27 Nov 2011 02:43:06 GMT",
"pgfnum": "3684"
},
"1": {
"text": "Better hit tracking, in some cases there was no tracking at all before.",
"created": "Sun, 27 Nov 2011 03:57:19 GMT",
"pgfnum": "3692"
},
"2": {
"text": "Parts",
"created": "Sun, 27 Nov 2011 02:44:15 GMT",
"pgfnum": "3686",
"subs": {
"0": {
"text": "opmlEditor.init",
"created": "Sun, 27 Nov 2011 03:06:29 GMT",
"pgfnum": "3691"
},
"1": {
"text": "opmlEditor.rpcHandlers.respondToServerMonitorPing",
"created": "Sun, 27 Nov 2011 02:44:16 GMT",
"pgfnum": "3687"
},
"2": {
"text": "opmlEditor.httpLog.postFilterCallback"
},
"3": {
"text": "serverMonitorSuite.viewStatusTable"
}
}
}
}
},
"1": {
"text": "Short name for my community river",
"created": "Sat, 26 Nov 2011 19:39:25 GMT",
"pgfnum": "3679",
"type": "blogpost",
"subs": {
"0": {
"text": "http://river.scripting.com/",
"created": "Sat, 26 Nov 2011 19:39:35 GMT",
"pgfnum": "3680"
},
"1": {
"text": "It points to the OPML file through the same mechanism blogs point to their RSS feeds.",
"created": "Sat, 26 Nov 2011 19:39:45 GMT",
"pgfnum": "3681"
}
}
},
"2": {
"text": "How I'm launching my Community River",
"created": "Sat, 26 Nov 2011 16:05:47 GMT",
"pgfnum": "3677",
"type": "blogpost",
"subs": {
"0": {
"text": "I decided not to show the URL publicly, yet, to readers of my site."
},
"1": {
"text": "http://scripting.com/stories/2011/11/26/areYouPartOfThisCommunity.html"
},
"2": {
"text": "Rather, I'm asking them to send me the URLs via email."
},
"3": {
"text": "This is for two reasons:"
},
"4": {
"text": "1. I want to get a feel for it."
},
"5": {
"text": "2. I want to do something about the URL for the page, before I publicize it. I want to make it shorter. I figure with all we know about Blorkmarks, that shouldn't be too hard, but I have to give it some thought."
},
"6": {
"text": "I'm very excited about this -- I think this is a key. Wish I had thought of it a year ago, except now River2 is fairly mature and smooth, so it'll be easy to guide people through the process of using the feature at a deeper level."
}
}
},
"3": {
"text": "Release the Open Subs feature",
"created": "Sat, 26 Nov 2011 13:23:04 GMT",
"pgfnum": "3659",
"type": "blogpost",
"subs": {
"0": {
"text": "How to test",
"created": "Sat, 26 Nov 2011 14:57:43 GMT",
"pgfnum": "3667",
"subs": {
"0": {
"text": "Create a new user on your River2 server, using the OPML Editor New User command.",
"created": "Sat, 26 Nov 2011 14:57:53 GMT",
"pgfnum": "3668"
},
"1": {
"text": "This user will be your community account.",
"created": "Sat, 26 Nov 2011 14:58:10 GMT",
"pgfnum": "3669"
},
"2": {
"text": "Log on as that user.",
"created": "Sat, 26 Nov 2011 14:58:17 GMT",
"pgfnum": "3670"
},
"3": {
"text": "Click on Prefs in the River menu in your browser. Click Submit.",
"created": "Sat, 26 Nov 2011 14:58:29 GMT",
"pgfnum": "3671"
},
"4": {
"text": "Choose the Open Subs feature page.",
"created": "Sat, 26 Nov 2011 14:58:39 GMT",
"pgfnum": "3672"
},
"5": {
"text": "Click the checkbox to enable the feature.",
"created": "Sat, 26 Nov 2011 14:58:58 GMT",
"pgfnum": "3673"
},
"6": {
"text": "Copy the URL at the bottom of the Prefs page.",
"created": "Sat, 26 Nov 2011 14:59:09 GMT",
"pgfnum": "3674"
},
"7": {
"text": "Go to that page, enter a URL, verify that it worked.",
"created": "Sat, 26 Nov 2011 14:59:16 GMT",
"pgfnum": "3675"
},
"8": {
"text": "Look in the Log page you should see an entry saying the feed was subscribed to.",
"created": "Sat, 26 Nov 2011 14:59:28 GMT",
"pgfnum": "3676"
}
}
},
"1": {
"text": "Plan",
"created": "Sat, 26 Nov 2011 14:57:33 GMT",
"pgfnum": "3666",
"subs": {
"0": {
"text": "User pref to enable the feature.",
"created": "Sat, 26 Nov 2011 13:23:17 GMT",
"pgfnum": "3660"
},
"1": {
"text": "Prefs page for the feature. Screen shot.",
"created": "Sat, 26 Nov 2011 14:12:27 GMT",
"pgfnum": "3665"
},
"2": {
"text": "You can subscribe to a web page if it has an RSS feed attached. (Not in this revision.)",
"created": "Sat, 26 Nov 2011 13:27:28 GMT",
"pgfnum": "3663"
},
"3": {
"text": "What to do with adrsubtable? (Comment out the code.)",
"created": "Sat, 26 Nov 2011 13:30:27 GMT",
"pgfnum": "3664"
}
}
},
"2": {
"text": "Parts",
"created": "Sat, 26 Nov 2011 13:25:42 GMT",
"pgfnum": "3661",
"subs": {
"0": {
"text": "river2Suite.initUser"
},
"1": {
"text": "river2Suite.data.html.addFeedForm"
},
"2": {
"text": "river2Suite.data.prefsOutlineUser"
},
"3": {
"text": "river2Suite.firewall"
},
"4": {
"text": "river2Suite.subscribeFeed"
},
"5": {
"text": "river2Website.addFeed"
}
}
}
}
}
}
},
"4": {
"text": "11/25/11 by DW",
"created": "Fri, 25 Nov 2011 13:43:26 GMT",
"pgfnum": "3609",
"subs": {
"0": {
"text": "Started on Open Subs feature",
"created": "Fri, 25 Nov 2011 17:44:31 GMT",
"pgfnum": "3650",
"type": "blogpost",
"subs": {
"0": {
"text": "First, created a new user on Houston, scripting. This is going to be the scripting news community river.",
"created": "Fri, 25 Nov 2011 18:06:51 GMT",
"pgfnum": "3653"
},
"1": {
"text": "It was automatically subscribed to a number of feeds. Most of them are not relevant to this application, but some are.",
"created": "Fri, 25 Nov 2011 18:07:15 GMT",
"pgfnum": "3654"
},
"2": {
"text": "Rough criteria: If they are people who read Scripting News, or news flows that I consider connected to my news flow, they're in. General stuff that would be in my personal river are not necessarily part of this one.",
"created": "Fri, 25 Nov 2011 18:07:42 GMT",
"pgfnum": "3655"
},
"3": {
"text": "I copied the code from photoRiver.root, and jammed it into my river2.root, and it worked. I subscribed to a feed. The page looks awful, and a bunch of stuff is hard-coded. But we've got a beach-head established.",
"created": "Fri, 25 Nov 2011 18:08:27 GMT",
"pgfnum": "3656"
},
"4": {
"text": "Next session I will fill out features and fix bugs.",
"created": "Fri, 25 Nov 2011 18:09:19 GMT",
"pgfnum": "3657"
},
"5": {
"text": "Parts",
"created": "Fri, 25 Nov 2011 17:44:47 GMT",
"pgfnum": "3651",
"subs": {
"0": {
"text": "river2Suite.data.html.addFeedForm"
},
"1": {
"text": "river2Website.addFeed"
}
}
}
}
},
"1": {
"text": "File dates are now correct in backups",
"created": "Fri, 25 Nov 2011 16:48:22 GMT",
"pgfnum": "3642",
"type": "blogpost",
"subs": {
"0": {
"text": "One of my pet peeves is file copying programs that don't preserve dates.",
"created": "Fri, 25 Nov 2011 16:48:53 GMT",
"pgfnum": "3643"
},
"1": {
"text": "So I made it so that the linkblog downloader keeps them.",
"created": "Fri, 25 Nov 2011 16:49:12 GMT",
"pgfnum": "3644"
},
"2": {
"text": "The feeds have pubDates and lastBuildDate values. And enclosures have the pubDates of the item they are attached to.",
"created": "Fri, 25 Nov 2011 16:49:28 GMT",
"pgfnum": "3645"
},
"3": {
"text": "If we have two dates to work with, the file creation date is the earlier of the two and the modification date is the later date.",
"created": "Fri, 25 Nov 2011 16:49:58 GMT",
"pgfnum": "3646"
},
"4": {
"text": "Parts",
"created": "Fri, 25 Nov 2011 17:02:20 GMT",
"pgfnum": "3647",
"subs": {
"0": {
"text": "radio2Suite.import"
},
"1": {
"text": "xml.rss.getFeedItems"
}
}
}
}
},
"2": {
"text": "New verb, tcp.httpFileExists (url)",
"created": "Fri, 25 Nov 2011 14:54:48 GMT",
"pgfnum": "3637",
"type": "blogpost",
"subs": {
"0": {
"text": "Returns true if the URL points to something that exists, according to the server.",
"created": "Fri, 25 Nov 2011 14:55:01 GMT",
"pgfnum": "3638"
},
"1": {
"text": "Should have had this verb a long time ago.",
"created": "Fri, 25 Nov 2011 17:11:31 GMT",
"pgfnum": "3649"
},
"2": {
"text": "Call it from radio2Suite.import.readFeedCalendar, where the code was factored from.",
"created": "Fri, 25 Nov 2011 14:55:19 GMT",
"pgfnum": "3641"
},
"3": {
"text": "Parts",
"created": "Fri, 25 Nov 2011 14:55:10 GMT",
"pgfnum": "3639",
"subs": {
"0": {
"text": "tcp.httpFileExists",
"created": "Fri, 25 Nov 2011 14:55:11 GMT",
"pgfnum": "3640"
}
}
}
}
},
"3": {
"text": "New pref to open world outline at startup",
"created": "Fri, 25 Nov 2011 14:28:09 GMT",
"pgfnum": "3626",
"type": "blogpost",
"subs": {
"0": {
"text": "It's the first thing I do on every launch of the OPML Editor, and it's taking so much time now that the outline is so huge, I want to be able to have it done while I go fill my coffee cup after a re-launch.",
"created": "Fri, 25 Nov 2011 14:37:58 GMT",
"pgfnum": "3631"
},
"1": {
"text": "New pref is at user.opmlEditor.worldOutline.prefs.flOpenOnLaunch, defaults false.",
"created": "Fri, 25 Nov 2011 14:38:32 GMT",
"pgfnum": "3632"
},
"2": {
"text": "Also have to put this in the Prefs system. Will do it next time I'm in there.",
"created": "Fri, 25 Nov 2011 14:38:59 GMT",
"pgfnum": "3633"
},
"3": {
"text": "Parts",
"created": "Fri, 25 Nov 2011 14:28:16 GMT",
"pgfnum": "3627",
"subs": {
"0": {
"text": "opmleditor.init",
"created": "Fri, 25 Nov 2011 14:28:18 GMT",
"pgfnum": "3628"
},
"1": {
"text": "opmleditor.startup",
"created": "Fri, 25 Nov 2011 14:28:22 GMT",
"pgfnum": "3629"
},
"2": {
"text": "opmleditor.worldoutline.init",
"created": "Fri, 25 Nov 2011 14:28:26 GMT",
"pgfnum": "3630"
}
}
}
}
},
"4": {
"text": "worldOutlineHeaderFont, worldOutlineServer prefs",
"created": "Fri, 25 Nov 2011 13:43:29 GMT",
"pgfnum": "3610",
"type": "blogpost",
"subs": {
"0": {
"text": "These prefs are in user.opmleditor.prefs. They should be in user.opmlEditor.worldOutline.prefs.",
"created": "Fri, 25 Nov 2011 13:43:49 GMT",
"pgfnum": "3611"
},
"1": {
"text": "Parts",
"created": "Fri, 25 Nov 2011 13:44:20 GMT",
"pgfnum": "3612",
"subs": {
"0": {
"text": "opmleditor.init",
"created": "Fri, 25 Nov 2011 13:44:40 GMT",
"pgfnum": "3614"
},
"1": {
"text": "opmleditor.worldoutline.init",
"created": "Fri, 25 Nov 2011 13:44:22 GMT",
"pgfnum": "3613"
},
"2": {
"text": "opmlEditor.menuCommands.outlinerSetNodeDomain"
}
}
}
}
}
}
},
"5": {
"text": "11/24/11 by DW",
"created": "Thu, 24 Nov 2011 14:25:40 GMT",
"pgfnum": "3602",
"subs": {
"0": {
"text": "Opening subscriptions in River2",
"created": "Thu, 24 Nov 2011 14:30:23 GMT",
"pgfnum": "3608",
"type": "blogpost",
"subs": {
"0": {
"text": "The idea",
"created": "Thu, 24 Nov 2011 14:37:52 GMT",
"pgfnum": "3616",
"subs": {
"0": {
"text": "An idea came up for occupyweb.com, and now it's come up again -- so I'm thinking maybe it would be a good feature to add to River2.",
"created": "Thu, 24 Nov 2011 14:31:04 GMT",
"pgfnum": "3610"
},
"1": {
"text": "At OWS they wanted to let any of the people operating an occupy site to be able to submit an RSS feed. This would be rolled up into an OPML file that would serve anyone who wanted to offer an aggregator.",
"created": "Thu, 24 Nov 2011 14:31:33 GMT",
"pgfnum": "3611"
},
"2": {
"text": "Of course this opens the risk of spam, but you can use the normal River2 editorial environment to quickly unsub from any feeds you don't want. Or in a second iteration we could implement a pref that makes subsription subject to review.",
"created": "Thu, 24 Nov 2011 14:36:25 GMT",
"pgfnum": "3613"
},
"3": {
"text": "Now I've been emailing with Dave Delaney. He says: \"I want to create an open, community blog roll for Nashville bloggers. I've been trying to find an easy(ish) way to let folks submit their RSS feeds, so that I can create one OPML file that people can import to their RSS reader of choice.\"",
"created": "Thu, 24 Nov 2011 14:32:59 GMT",
"pgfnum": "3612"
},
"4": {
"text": "It's basically the same feature request.",
"created": "Thu, 24 Nov 2011 14:37:33 GMT",
"pgfnum": "3614"
}
}
},
"1": {
"text": "Worknotes",
"created": "Thu, 24 Nov 2011 14:45:27 GMT",
"pgfnum": "3608",
"subs": {
"0": {
"text": "This is what the dialog looks like in occupyweb.org. It's running on Houston, and is in photoRiver.root. Random place for this code to be. That's what we're fixing.",
"created": "Thu, 24 Nov 2011 14:45:32 GMT",
"pgfnum": "3609"
},
"1": {
"text": "As I was investigating I re-discovered the bookmarklet and the Quick Subscribe page in each River2 website.",
"created": "Thu, 24 Nov 2011 14:53:59 GMT",
"pgfnum": "3611"
},
"2": {
"text": "So, except for permissions, all the code is written.",
"created": "Thu, 24 Nov 2011 16:08:55 GMT",
"pgfnum": "3612"
},
"3": {
"text": "I want to use this opportunity to review all the code in the subscibe bookmarklet, and refine it.",
"created": "Thu, 24 Nov 2011 16:09:03 GMT",
"pgfnum": "3613"
}
}
}
}
},
"1": {
"text": "Happy Thanksgiving!",
"created": "Thu, 24 Nov 2011 14:25:41 GMT",
"fldisquscomments": "false",
"pgfnum": "3603",
"type": "blogpost",
"subs": {
"0": {
"text": "If you're reading this you're part of the core community of Radio2/River2/World Outline users.",
"created": "Thu, 24 Nov 2011 14:25:51 GMT",
"pgfnum": "3604"
},
"1": {
"text": "That makes you a totally great person!!",
"created": "Thu, 24 Nov 2011 14:26:11 GMT",
"pgfnum": "3605"
},
"2": {
"text": "Thanks for all your ideas, support and inspiration!",
"created": "Thu, 24 Nov 2011 14:26:17 GMT",
"pgfnum": "3606"
},
"3": {
"text": "Dave",
"created": "Thu, 24 Nov 2011 14:26:47 GMT",
"pgfnum": "3607"
}
}
}
}
},
"6": {
"text": "11/23/11 by DW",
"created": "Wed, 23 Nov 2011 13:22:08 GMT",
"pgfnum": "3541",
"subs": {
"0": {
"text": "Downloading enclosures",
"created": "Thu, 24 Nov 2011 00:43:30 GMT",
"pgfnum": "3595",
"type": "blogpost",
"subs": {
"0": {
"text": "AC suggested downloading enclosures. Doh. Of course.",
"created": "Thu, 24 Nov 2011 00:43:34 GMT",
"pgfnum": "3596"
},
"1": {
"text": "Added a pref that allows you to turn it off, in case you can't handle all that downloading.",
"created": "Thu, 24 Nov 2011 00:43:50 GMT",
"pgfnum": "3597",
"subs": {
"0": {
"text": "config.radio2.prefs.flDownloadLinkblogEnclosures",
"created": "Thu, 24 Nov 2011 00:56:43 GMT",
"pgfnum": "3601"
}
}
},
"2": {
"text": "It won't download an enclosure if it already has a copy. So you can use this script to maintain a local archive without incurring huge bandwidth costs.",
"created": "Thu, 24 Nov 2011 00:44:11 GMT",
"pgfnum": "3598"
},
"3": {
"text": "Parts",
"created": "Thu, 24 Nov 2011 00:44:47 GMT",
"pgfnum": "3599",
"subs": {
"0": {
"text": "radio2Suite.init"
},
"1": {
"text": "radio2Suite.import.readOneDay",
"created": "Thu, 24 Nov 2011 00:44:48 GMT",
"pgfnum": "3600"
}
}
}
}
},
"1": {
"text": "Downloading your Radio2 archive",
"created": "Wed, 23 Nov 2011 21:50:31 GMT",
"pgfnum": "3584",
"type": "blogpost",
"subs": {
"0": {
"text": "We're testing a new feature that allows you to transfer the contents of a Radio2 linkblog to another server.",
"created": "Wed, 23 Nov 2011 21:50:37 GMT",
"pgfnum": "3585"
},
"1": {
"text": "The next step is to make it possible for a user to download the archive of his or her linkblog to a local computer as a structured folder of RSS 2.0 files.",
"created": "Wed, 23 Nov 2011 21:51:09 GMT",
"pgfnum": "3586"
},
"2": {
"text": "How to",
"created": "Wed, 23 Nov 2011 21:51:31 GMT",
"pgfnum": "3587",
"subs": {
"0": {
"text": "With radio2.root installed on the local computer, bring the OPML Editor to the front and choose Download Linkblog from the Radio2 sub-menu of the Tools menu.",
"created": "Wed, 23 Nov 2011 21:53:20 GMT",
"pgfnum": "3588"
},
"1": {
"text": "A dialog appears asking for the URL of a backup file. You can find the URL of your backup file on the Links page in Radio2. If you just want to test the feature you can use the backup file for my linkblog.",
"created": "Wed, 23 Nov 2011 21:55:40 GMT",
"pgfnum": "3589"
},
"2": {
"text": "Then a dialog asks you to choose a folder on your local computer.",
"created": "Wed, 23 Nov 2011 21:57:51 GMT",
"pgfnum": "3591"
},
"3": {
"text": "When you click OK, it will download the backup into the folder.",
"created": "Wed, 23 Nov 2011 21:58:02 GMT",
"pgfnum": "3592"
}
}
},
"3": {
"text": "Parts",
"created": "Wed, 23 Nov 2011 21:58:16 GMT",
"pgfnum": "3593",
"subs": {
"0": {
"text": "radio2Suite.utilities.downloadBackup"
},
"1": {
"text": "radio2Suite.import"
},
"2": {
"text": "radio2Suite.menu"
}
}
}
}
},
"2": {
"text": "List of current innovations",
"created": "Wed, 23 Nov 2011 21:48:54 GMT",
"pgfnum": "3577",
"subs": {
"0": {
"text": "World outline",
"created": "Wed, 23 Nov 2011 21:49:55 GMT",
"pgfnum": "3578"
},
"1": {
"text": "Instant outlining",
"created": "Wed, 23 Nov 2011 21:49:58 GMT",
"pgfnum": "3579"
},
"2": {
"text": "River2",
"created": "Wed, 23 Nov 2011 21:50:01 GMT",
"pgfnum": "3580"
},
"3": {
"text": "Radio2",
"created": "Wed, 23 Nov 2011 21:50:04 GMT",
"pgfnum": "3581"
},
"4": {
"text": "EC2 for Poets -- user-administrated servers",
"created": "Fri, 25 Nov 2011 14:44:20 GMT",
"pgfnum": "3636"
},
"5": {
"text": "Feedhose",
"created": "Wed, 23 Nov 2011 21:50:10 GMT",
"pgfnum": "3582"
},
"6": {
"text": "Editing code in outlines",
"created": "Fri, 25 Nov 2011 14:43:52 GMT",
"pgfnum": "3634"
},
"7": {
"text": "Live database, values visible as they recalc",
"created": "Fri, 25 Nov 2011 14:43:56 GMT",
"pgfnum": "3635"
},
"8": {
"text": "Realtime RSS -- updates without polling",
"created": "Wed, 23 Nov 2011 21:50:19 GMT",
"pgfnum": "3583"
}
}
},
"3": {
"text": "New setup instructions",
"created": "Wed, 23 Nov 2011 15:25:47 GMT",
"pgfnum": "3566",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a new howto for setting up Radio2.",
"created": "Wed, 23 Nov 2011 15:32:13 GMT",
"pgfnum": "3572"
},
"1": {
"text": "http://radio2oninstall.blorkmark.com/",
"created": "Wed, 23 Nov 2011 15:25:54 GMT",
"pgfnum": "3567"
},
"2": {
"text": "I've now replaced this URL in the Info table at the top of radio2.root.",
"created": "Wed, 23 Nov 2011 15:26:21 GMT",
"pgfnum": "3568"
},
"3": {
"text": "It's also the page that opens automatically when you install radio2.root.",
"created": "Wed, 23 Nov 2011 15:26:37 GMT",
"pgfnum": "3569"
},
"4": {
"text": "I point to this page from the old page.",
"created": "Wed, 23 Nov 2011 15:27:15 GMT",
"pgfnum": "3570"
},
"5": {
"text": "If you're in the mood for testing, try setting up a new Radio2 server. :-)",
"created": "Wed, 23 Nov 2011 15:31:30 GMT",
"pgfnum": "3571"
},
"6": {
"text": "How to test",
"created": "Wed, 23 Nov 2011 15:49:51 GMT",
"pgfnum": "3573",
"subs": {
"0": {
"text": "Choose Tool Catalog from the Misc menu.",
"created": "Wed, 23 Nov 2011 15:49:53 GMT",
"pgfnum": "3574"
},
"1": {
"text": "Click on the Install link next to radio2.",
"created": "Wed, 23 Nov 2011 15:50:04 GMT",
"pgfnum": "3575"
},
"2": {
"text": "Follow the instructions. :-)",
"created": "Wed, 23 Nov 2011 15:50:19 GMT",
"pgfnum": "3576"
}
}
}
}
},
"4": {
"text": "Another dry run",
"created": "Wed, 23 Nov 2011 13:47:19 GMT",
"pgfnum": "3556",
"subs": {
"0": {
"text": "Setting up a server. This one is named Jeff.",
"created": "Wed, 23 Nov 2011 13:47:23 GMT",
"pgfnum": "3557"
},
"1": {
"text": "http://jeff.scripting.com/",
"created": "Wed, 23 Nov 2011 14:13:19 GMT",
"pgfnum": "3558"
},
"2": {
"text": "Problems",
"created": "Wed, 23 Nov 2011 14:13:28 GMT",
"pgfnum": "3559",
"subs": {
"0": {
"text": "I entered a bogus domain name and it accepted it.",
"created": "Wed, 23 Nov 2011 14:23:41 GMT",
"pgfnum": "3560"
},
"1": {
"text": "Somewhere along the line the admin password got zero'd out! Oy.",
"created": "Wed, 23 Nov 2011 14:28:48 GMT",
"pgfnum": "3561"
},
"2": {
"text": "The cookie says it's for juliet.scripting.com?",
"created": "Wed, 23 Nov 2011 14:29:15 GMT",
"pgfnum": "3562"
}
}
},
"3": {
"text": "Done",
"created": "Wed, 23 Nov 2011 15:03:19 GMT",
"pgfnum": "3563",
"subs": {
"0": {
"text": "Add radio2suite.init () to prefs outline.",
"created": "Wed, 23 Nov 2011 15:03:21 GMT",
"pgfnum": "3564"
}
}
},
"4": {
"text": "Parts",
"created": "Wed, 23 Nov 2011 15:03:35 GMT",
"pgfnum": "3565",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.prefsForRadio2Setup"
}
}
}
}
},
"5": {
"text": "Prefs for Radio2",
"created": "Wed, 23 Nov 2011 13:22:09 GMT",
"pgfnum": "3542",
"type": "blogpost",
"subs": {
"0": {
"text": "There are a handful of prefs for setting up Radio2. It would be easier for users if they were all in one place, perhaps all on one page. So that's what I'm going to make happen today.",
"created": "Wed, 23 Nov 2011 13:22:17 GMT",
"pgfnum": "3543"
},
"1": {
"text": "There's a new page on the OPML Editor website, prefsForRadio2.",
"created": "Wed, 23 Nov 2011 13:22:52 GMT",
"pgfnum": "3544"
},
"2": {
"text": "What needs to be set up",
"created": "Wed, 23 Nov 2011 13:23:41 GMT",
"pgfnum": "3547",
"subs": {
"0": {
"text": "Admin password -- so you can access your server over the net.",
"created": "Wed, 23 Nov 2011 13:26:44 GMT",
"pgfnum": "3549"
},
"1": {
"text": "S3 Access Key Id and secret key -- so we have a place to store your feeds and other stuff.",
"created": "Wed, 23 Nov 2011 13:23:45 GMT",
"pgfnum": "3548"
},
"2": {
"text": "Radio2 bucket and URL -- where we will store stuff on S3.",
"created": "Wed, 23 Nov 2011 13:26:55 GMT",
"pgfnum": "3550"
},
"3": {
"text": "Domain for Radio2 -- how users will get to your site.",
"created": "Wed, 23 Nov 2011 13:27:10 GMT",
"pgfnum": "3552"
}
}
},
"3": {
"text": "Plan",
"created": "Wed, 23 Nov 2011 13:42:57 GMT",
"pgfnum": "3553",
"subs": {
"0": {
"text": "I tested this feature on an already-deployed server, and as expected, it worked. This stuff is just copy/pasted. The real question is if this is enough to get going with a Radio2 installation.",
"created": "Wed, 23 Nov 2011 13:42:59 GMT",
"pgfnum": "3554"
},
"1": {
"text": "For that I will have to release the parts so I can test them on a real server. At this time this is just for me. Do not test. :-)",
"created": "Wed, 23 Nov 2011 13:43:37 GMT",
"pgfnum": "3555"
}
}
},
"4": {
"text": "Parts",
"created": "Wed, 23 Nov 2011 13:23:23 GMT",
"pgfnum": "3545",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.prefsForRadio2Setup"
},
"1": {
"text": "opmlEditor.website.prefsForRadio2"
}
}
}
}
}
}
},
"7": {
"text": "11/22/11 by DW",
"created": "Tue, 22 Nov 2011 14:56:22 GMT",
"pgfnum": "3488",
"subs": {
"0": {
"text": "Fresh install of Radio2",
"created": "Sat, 19 Nov 2011 22:11:25 GMT",
"pgfnum": "3415",
"type": "blogpost",
"subs": {
"0": {
"text": "Prerequisites",
"created": "Sat, 19 Nov 2011 22:21:17 GMT",
"pgfnum": "3427",
"subs": {
"0": {
"text": "1. An S3 account, with a bucket to hold the Radio2 user's content.",
"created": "Sat, 19 Nov 2011 22:21:25 GMT",
"pgfnum": "3428",
"subs": {
"0": {
"text": "/",
"created": "Tue, 22 Nov 2011 21:10:39 GMT",
"pgfnum": "3532"
}
}
},
"1": {
"text": "2. A Windows or Macintosh server, accessible over the Internet, to run the Radio2 software on.",
"created": "Sat, 19 Nov 2011 22:21:42 GMT",
"pgfnum": "3429"
}
}
},
"1": {
"text": "1. Create a new EC2 instance, called Juliet, from the current EC2 for Poets AMI.",
"created": "Sat, 19 Nov 2011 22:13:25 GMT",
"pgfnum": "3416",
"subs": {
"0": {
"text": "xxx",
"created": "Sat, 19 Nov 2011 22:14:18 GMT",
"pgfnum": "3418"
}
}
},
"2": {
"text": "3. Go to Tool catalog, click on the Install link next to Radio2.",
"created": "Sat, 19 Nov 2011 22:14:25 GMT",
"pgfnum": "3419"
},
"3": {
"text": "4. Now -- what do you have to set up to get a functioning Radio2?",
"created": "Sat, 19 Nov 2011 22:14:45 GMT",
"pgfnum": "3420",
"subs": {
"0": {
"text": "4. Set the admin password so you can access the server remotely.",
"created": "Tue, 22 Nov 2011 21:42:52 GMT",
"pgfnum": "3540"
},
"1": {
"text": "1. Set your S3 prefs.",
"created": "Tue, 22 Nov 2011 21:09:42 GMT",
"pgfnum": "3527"
},
"2": {
"text": "2. Set the bucket and path.",
"created": "Tue, 22 Nov 2011 21:42:05 GMT",
"pgfnum": "3538"
},
"3": {
"text": "3. Set the domain.",
"created": "Tue, 22 Nov 2011 21:42:12 GMT",
"pgfnum": "3539"
},
"4": {
"text": "",
"created": "Tue, 22 Nov 2011 21:10:19 GMT",
"pgfnum": "3528"
},
"5": {
"text": "",
"created": "Tue, 22 Nov 2011 21:10:19 GMT",
"pgfnum": "3529"
},
"6": {
"text": "",
"created": "Tue, 22 Nov 2011 21:10:19 GMT",
"pgfnum": "3530"
},
"7": {
"text": "",
"created": "Tue, 22 Nov 2011 21:10:20 GMT",
"pgfnum": "3531"
}
}
},
"4": {
"text": "Having set it up, now use it!",
"created": "Tue, 22 Nov 2011 21:02:09 GMT",
"pgfnum": "3520",
"subs": {
"0": {
"text": "Post something.",
"created": "Tue, 22 Nov 2011 21:02:26 GMT",
"pgfnum": "3521"
},
"1": {
"text": "Override the S3 prefs.",
"created": "Tue, 22 Nov 2011 21:02:29 GMT",
"pgfnum": "3522"
},
"2": {
"text": "Adjix.",
"created": "Tue, 22 Nov 2011 21:02:37 GMT",
"pgfnum": "3523"
},
"3": {
"text": "Post a podcast.",
"created": "Tue, 22 Nov 2011 21:02:40 GMT",
"pgfnum": "3524"
},
"4": {
"text": "Import my site from R2.",
"created": "Tue, 22 Nov 2011 21:02:49 GMT",
"pgfnum": "3525"
},
"5": {
"text": "Keep going.",
"created": "Tue, 22 Nov 2011 21:03:02 GMT",
"pgfnum": "3526"
}
}
},
"5": {
"text": "Todo",
"created": "Tue, 22 Nov 2011 21:38:46 GMT",
"pgfnum": "3536",
"subs": {
"0": {
"text": "Add a command to the Radio2 sub-menu of the Tools menu to open the prefs page for Radio2.",
"created": "Tue, 22 Nov 2011 21:38:47 GMT",
"pgfnum": "3537"
}
}
}
}
},
"1": {
"text": "Check backups every minute",
"created": "Tue, 22 Nov 2011 20:11:30 GMT",
"pgfnum": "3516",
"type": "blogpost",
"subs": {
"0": {
"text": "Now that exporting is so much faster, let's check every minute instead of every hour. We can do it more frequently, therefore have better backups.",
"created": "Tue, 22 Nov 2011 20:12:00 GMT",
"pgfnum": "3517"
},
"1": {
"text": "Parts",
"created": "Tue, 22 Nov 2011 20:24:08 GMT",
"pgfnum": "3518",
"subs": {
"0": {
"text": "radio2Suite.background.everyHour"
},
"1": {
"text": "radio2Suite.background.everyMinute"
}
}
}
}
},
"2": {
"text": "First release of Radio2 import",
"created": "Tue, 22 Nov 2011 14:56:23 GMT",
"pgfnum": "3489",
"type": "blogpost",
"subs": {
"0": {
"text": "Exporting is automatic. Just by posting to your blog you're exporting. Every time you post we update your archive. In the last set of changes this became much more efficient.",
"created": "Tue, 22 Nov 2011 14:56:36 GMT",
"pgfnum": "3490"
},
"1": {
"text": "Importing requires a command, and a warning: Whatever you have stored in Radio2 will be overwritten. It really should only be done for empty accounts. But that's up to you.",
"created": "Tue, 22 Nov 2011 14:57:27 GMT",
"pgfnum": "3491"
},
"2": {
"text": "Since exporting does not export passwords and apiKeys, we turn off certain features after importing, basically anything that required special permission or a password. Examples: Adjix, Bitly and custom S3 prefs. You can use the Prefs system to set them up again after importing.",
"created": "Tue, 22 Nov 2011 14:58:06 GMT",
"pgfnum": "3492"
},
"3": {
"text": "Also, we do not import callback scripts. So if you've customized Radio2 with user-level callbacks, you'll have to arrange for them to be moved some other way. This is a security thing.",
"created": "Tue, 22 Nov 2011 19:44:32 GMT",
"pgfnum": "3513"
},
"4": {
"text": "How to use",
"created": "Tue, 22 Nov 2011 15:04:22 GMT",
"pgfnum": "3495",
"subs": {
"0": {
"text": "On the site you want to export from: Get the URL of your exported site. Go to the Links page in Radio2. Right-click on the Backup link. Copy the link to the clipboard. Screen shot.",
"created": "Tue, 22 Nov 2011 15:04:24 GMT",
"pgfnum": "3496"
},
"1": {
"text": "On the site you want to export to: Choose Import from the menu and paste the URL into the dialog. Click the Import button.",
"created": "Tue, 22 Nov 2011 15:08:06 GMT",
"pgfnum": "3497"
},
"2": {
"text": "It generally takes a minute or two, depending on how many posts you have.",
"created": "Tue, 22 Nov 2011 15:09:00 GMT",
"pgfnum": "3498"
}
}
},
"5": {
"text": "A linkblog to test with",
"created": "Tue, 22 Nov 2011 16:19:30 GMT",
"pgfnum": "3501",
"subs": {
"0": {
"text": "This is my exported linkblog.",
"created": "Tue, 22 Nov 2011 16:19:35 GMT",
"pgfnum": "3502"
},
"1": {
"text": "http://static.scripting.com/myReallySimple/userData.xml",
"created": "Tue, 22 Nov 2011 16:19:45 GMT",
"pgfnum": "3503"
}
}
},
"6": {
"text": "How to test",
"created": "Tue, 22 Nov 2011 16:21:51 GMT",
"pgfnum": "3504",
"subs": {
"0": {
"text": "Important: Only system operators should test this at this time. Let's get all the glitches out before trying to support it.",
"created": "Tue, 22 Nov 2011 16:21:54 GMT",
"pgfnum": "3505"
},
"1": {
"text": "1. Create a new user on your server.",
"created": "Tue, 22 Nov 2011 16:22:12 GMT",
"pgfnum": "3506"
},
"2": {
"text": "2. Log on as that user.",
"created": "Tue, 22 Nov 2011 16:22:24 GMT",
"pgfnum": "3507"
},
"3": {
"text": "3. Click on Import in the menu.",
"created": "Tue, 22 Nov 2011 16:22:36 GMT",
"pgfnum": "3508"
},
"4": {
"text": "4. Enter the url to my exported linkblog. Submit.",
"created": "Tue, 22 Nov 2011 16:22:46 GMT",
"pgfnum": "3509"
},
"5": {
"text": "You can follow the progress by refreshing the home page. When it's done there will be an entry in the log. Screen shot.",
"created": "Tue, 22 Nov 2011 19:47:12 GMT",
"pgfnum": "3514"
},
"6": {
"text": "Try posting to the newly imported blog and see what happens. See what's on the Links page.",
"created": "Tue, 22 Nov 2011 16:22:55 GMT",
"pgfnum": "3510"
},
"7": {
"text": "If it works, you should just be able to continue from there.",
"created": "Tue, 22 Nov 2011 19:47:57 GMT",
"pgfnum": "3515"
}
}
},
"7": {
"text": "Still to come",
"created": "Tue, 22 Nov 2011 15:09:30 GMT",
"pgfnum": "3499",
"subs": {
"0": {
"text": "A command to download all the files to your local computer. This will require that the user install the OPML Editor.",
"created": "Tue, 22 Nov 2011 15:09:33 GMT",
"pgfnum": "3500"
}
}
},
"8": {
"text": "Parts",
"created": "Tue, 22 Nov 2011 14:59:24 GMT",
"pgfnum": "3493",
"subs": {
"0": {
"text": "radio2Suite.data.html.importPageTemplate"
},
"1": {
"text": "radio2Suite.import"
},
"2": {
"text": "radio2Suite.utilities.backupOneUser"
},
"3": {
"text": "radio2Suite.viewImport"
},
"4": {
"text": "radio2Suite.viewMenu"
},
"5": {
"text": "radio2Website.import"
}
}
}
}
}
}
},
"8": {
"text": "11/21/11 by DW",
"created": "Mon, 21 Nov 2011 16:29:20 GMT",
"pgfnum": "3473",
"subs": {
"0": {
"text": "Working on import",
"created": "Mon, 21 Nov 2011 16:35:46 GMT",
"pgfnum": "3483",
"subs": {
"0": {
"text": "Started a new table for scripts relating to importing, radio2suite.import.",
"created": "Mon, 21 Nov 2011 16:35:49 GMT",
"pgfnum": "3484"
},
"1": {
"text": "Parts",
"created": "Mon, 21 Nov 2011 16:36:10 GMT",
"pgfnum": "3485",
"subs": {
"0": {
"text": "radio2Suite.import",
"created": "Mon, 21 Nov 2011 16:36:28 GMT",
"pgfnum": "3486"
}
}
}
}
},
"1": {
"text": "Using microblog:archive",
"created": "Mon, 21 Nov 2011 16:31:33 GMT",
"pgfnum": "3478",
"type": "blogpost",
"subs": {
"0": {
"text": "Finally, getting to using the microblog:archive element that we've been maintaining in the Radio2 feeds.",
"created": "Mon, 21 Nov 2011 16:31:46 GMT",
"pgfnum": "3479"
},
"1": {
"text": "I added a feature to xml.rss.getFeedItems. If a feed has a microblog:archive structure, reflect that in the feedinfo \"archive\" sub-table.",
"created": "Mon, 21 Nov 2011 16:32:04 GMT",
"pgfnum": "3480"
},
"2": {
"text": "Parts",
"created": "Mon, 21 Nov 2011 16:32:26 GMT",
"pgfnum": "3481",
"subs": {
"0": {
"text": "xml.rss.getFeedItems",
"created": "Mon, 21 Nov 2011 16:32:28 GMT",
"pgfnum": "3482"
}
}
}
}
},
"2": {
"text": "Error with the blork bookmarklet fixed",
"created": "Mon, 21 Nov 2011 16:29:21 GMT",
"pgfnum": "3474",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm working on archiving Radio2 linkblogs, and in the process, am cleaning up unused stuff in the user's prefs table. One of the things I'm moving away from, for now, is customCSS. This caused an error in initializing the pagetable, which is fixed in this part release.",
"created": "Mon, 21 Nov 2011 16:29:42 GMT",
"pgfnum": "3475"
},
"1": {
"text": "Parts",
"created": "Mon, 21 Nov 2011 16:30:34 GMT",
"pgfnum": "3476",
"subs": {
"0": {
"text": "beautWebsite.[\"#filters\"].firstFilter",
"created": "Mon, 21 Nov 2011 16:30:35 GMT",
"pgfnum": "3477"
}
}
}
}
}
}
},
"9": {
"text": "11/20/11 by DW",
"created": "Sun, 20 Nov 2011 14:57:04 GMT",
"pgfnum": "3448",
"subs": {
"0": {
"text": "Full export of user data",
"created": "Sun, 20 Nov 2011 14:57:53 GMT",
"pgfnum": "3450",
"type": "blogpost",
"subs": {
"0": {
"text": "I've changed the way we export user data.",
"created": "Sun, 20 Nov 2011 18:01:30 GMT",
"pgfnum": "3460"
},
"1": {
"text": "Once every hour we check every user's table to see if they've posted anything in the last hour.",
"created": "Sun, 20 Nov 2011 18:01:38 GMT",
"pgfnum": "3464"
},
"2": {
"text": "If so, we backup all the data we have for them that isn't already backed up.",
"created": "Sun, 20 Nov 2011 18:01:56 GMT",
"pgfnum": "3465"
},
"3": {
"text": "This means everything but the posts, which are preserved in the RSS archive structure. Have a look in the microblog namespace for an explanation of how this works.",
"created": "Sun, 20 Nov 2011 18:02:09 GMT",
"pgfnum": "3466"
},
"4": {
"text": "We used to back up the whole user's table, but that was highly inefficient. Now we backup the prefs, stats and callbacks for the user and for each feed. The calendars are not exported. That's what grows.",
"created": "Sun, 20 Nov 2011 18:02:37 GMT",
"pgfnum": "3467"
},
"5": {
"text": "This is my exported data file.",
"created": "Sun, 20 Nov 2011 22:49:12 GMT",
"pgfnum": "3468"
},
"6": {
"text": "Parts",
"created": "Sun, 20 Nov 2011 16:08:21 GMT",
"pgfnum": "3458",
"subs": {
"0": {
"text": "radio2Suite.deleteStaticFile"
},
"1": {
"text": "radio2Suite.shortener.getCounts"
},
"2": {
"text": "radio2Suite.utilities.backupOneUser"
},
"3": {
"text": "radio2Suite.utilities.backupUserTables"
},
"4": {
"text": "radio2Suite.background.everyMinute"
}
}
}
}
},
"1": {
"text": "Tweak history table",
"created": "Sat, 19 Nov 2011 23:46:18 GMT",
"pgfnum": "3442",
"subs": {
"0": {
"text": "Margins and padding are too generous. Tighten it up.",
"created": "Sat, 19 Nov 2011 23:46:22 GMT",
"pgfnum": "3443"
}
}
},
"2": {
"text": "New User and SLIde",
"created": "Sat, 19 Nov 2011 23:19:10 GMT",
"pgfnum": "3440",
"subs": {
"0": {
"text": "When I create a New User on a machine that's a SLIde client, the new user should be created on the server.",
"created": "Sat, 19 Nov 2011 23:19:22 GMT",
"pgfnum": "3441"
}
}
},
"3": {
"text": "Radio2 things to look at",
"created": "Sat, 19 Nov 2011 22:17:23 GMT",
"pgfnum": "3423",
"subs": {
"0": {
"text": "Full import/export. This means I can move my account from one server to another, strictly with XML files. Test this with my account, which I've been posting to since December last year.",
"created": "Sat, 19 Nov 2011 22:22:04 GMT",
"pgfnum": "3430"
}
}
}
}
},
"10": {
"text": "11/19/11 by DW",
"created": "Sat, 19 Nov 2011 22:11:25 GMT",
"pgfnum": "3414",
"subs": {
"0": {
"text": "First post for new user",
"created": "Sun, 20 Nov 2011 00:31:10 GMT",
"pgfnum": "3444",
"type": "blogpost",
"subs": {
"0": {
"text": "When you create a new user, build his or her RSS feed, so the first time they go to their home page the XML icon is present and goes somewhere. And the History table doesn't just have column titles and no content. Rather jarring!",
"created": "Sat, 19 Nov 2011 22:20:39 GMT",
"pgfnum": "3426"
},
"1": {
"text": "Parts",
"created": "Sun, 20 Nov 2011 00:31:52 GMT",
"pgfnum": "3446",
"subs": {
"0": {
"text": "radio2suite.initUser",
"created": "Sun, 20 Nov 2011 00:31:54 GMT",
"pgfnum": "3447"
}
}
}
}
},
"1": {
"text": "Admin-like users can create new users",
"created": "Sat, 19 Nov 2011 22:48:09 GMT",
"pgfnum": "3435",
"type": "blogpost",
"subs": {
"0": {
"text": "Right now, only \"admin\" and the local user can create new users.",
"created": "Sat, 19 Nov 2011 22:48:16 GMT",
"pgfnum": "3436"
},
"1": {
"text": "But we have defined the concept of an admin-like user. We should use that here. I should be able to create a new user when logged in on my own account, and not on the machine.",
"created": "Sat, 19 Nov 2011 22:48:29 GMT",
"pgfnum": "3437"
},
"2": {
"text": "Parts",
"created": "Sat, 19 Nov 2011 22:48:56 GMT",
"pgfnum": "3438",
"subs": {
"0": {
"text": "opmlEditor.viewNewUser",
"created": "Sat, 19 Nov 2011 22:48:58 GMT",
"pgfnum": "3439"
}
}
}
}
},
"2": {
"text": "Dropdown menu and Radio2",
"created": "Sat, 19 Nov 2011 22:40:26 GMT",
"pgfnum": "3433",
"type": "blogpost",
"subs": {
"0": {
"text": "In the dropdown menu, use the domain name in the config.radio2.prefs, if it's defined and non-empty.",
"created": "Sat, 19 Nov 2011 22:20:11 GMT",
"pgfnum": "3425"
},
"1": {
"text": "Parts",
"created": "Sat, 19 Nov 2011 22:39:56 GMT",
"pgfnum": "3431",
"subs": {
"0": {
"text": "webApp.viewMenu",
"created": "Sat, 19 Nov 2011 22:39:58 GMT",
"pgfnum": "3432"
}
}
}
}
}
}
},
"11": {
"text": "11/16/11 by DW",
"created": "Wed, 16 Nov 2011 13:58:49 GMT",
"pgfnum": "3346",
"subs": {
"0": {
"text": "Moving Manila sites",
"created": "Thu, 17 Nov 2011 14:37:17 GMT",
"pgfnum": "3383",
"type": "blogpost",
"subs": {
"0": {
"text": "It's time to start seriously moving Manila sites to S3.",
"created": "Thu, 17 Nov 2011 14:37:24 GMT",
"pgfnum": "3384"
},
"1": {
"text": "I have a tool that I wrote in 2009 called staticManila.root, and it works pretty well.",
"created": "Thu, 17 Nov 2011 14:37:59 GMT",
"pgfnum": "3385"
},
"2": {
"text": "But S3 doesn't have an .htaccess capability to redirect URLs, and this tool needs that. So I'm going to do permanent redirects through another server to make that work. Over time the new version of the site will replace the old one, at least in search engines.",
"created": "Thu, 17 Nov 2011 14:38:14 GMT",
"pgfnum": "3386"
},
"3": {
"text": "After adding code to redirector.root, I'm mapping www.xml-rpc.com to point to pensacola.scripting.com. There, the redirector will map it to xmlrpc.scripting.com which is an S3 bucket. And the URLs are mapped as well, according to a table generated by staticManila.root.",
"created": "Thu, 17 Nov 2011 14:58:13 GMT",
"pgfnum": "3388"
},
"4": {
"text": "Okay, now if it works, this url should be translated:",
"created": "Thu, 17 Nov 2011 15:16:13 GMT",
"pgfnum": "3389",
"subs": {
"0": {
"text": "http://www.xml-rpc.com/bootstrappingTheTwoWayWeb",
"created": "Thu, 17 Nov 2011 15:16:22 GMT",
"pgfnum": "3390"
}
}
},
"5": {
"text": "Next steps:",
"created": "Thu, 17 Nov 2011 15:26:55 GMT",
"pgfnum": "3391",
"subs": {
"0": {
"text": "Fix up the template for the site, and regenerate.",
"created": "Thu, 17 Nov 2011 15:27:00 GMT",
"pgfnum": "3392",
"subs": {
"0": {
"text": "Also stories must have dates.",
"created": "Thu, 17 Nov 2011 15:28:10 GMT",
"pgfnum": "3395"
},
"1": {
"text": "What about navlinks in the margin??",
"created": "Thu, 17 Nov 2011 15:28:16 GMT",
"pgfnum": "3396"
}
}
},
"1": {
"text": "Generate the home page.",
"created": "Thu, 17 Nov 2011 15:27:34 GMT",
"pgfnum": "3393"
}
}
},
"6": {
"text": "Pages to look at:",
"created": "Thu, 17 Nov 2011 16:32:40 GMT",
"pgfnum": "3397",
"subs": {
"0": {
"text": "http://xmlrpc.scripting.com/aBusyDevelopersGuideToSoap.html"
},
"1": {
"text": "http://xmlrpc.scripting.com/aggregatorApi.html"
},
"2": {
"text": "http://xmlrpc.scripting.com/alidl.html"
},
"3": {
"text": "http://xmlrpc.scripting.com/bdgChangeNotes.html"
},
"4": {
"text": "http://xmlrpc.scripting.com/bootstrappingTheTwoWayWeb.html"
},
"5": {
"text": "http://xmlrpc.scripting.com/callForEndorsements.html"
},
"6": {
"text": "http://xmlrpc.scripting.com/currentTime.html"
},
"7": {
"text": "http://xmlrpc.scripting.com/davesSoapJournalPart1.html"
},
"8": {
"text": "http://xmlrpc.scripting.com/faq.html"
},
"9": {
"text": "http://xmlrpc.scripting.com/feedback.html"
},
"10": {
"text": "http://xmlrpc.scripting.com/googleGateway.html"
},
"11": {
"text": "http://xmlrpc.scripting.com/howTheWebBugSimulatorWorks.html"
},
"12": {
"text": "http://xmlrpc.scripting.com/mailList.html"
},
"13": {
"text": "http://xmlrpc.scripting.com/manilaRpcSpec.html"
},
"14": {
"text": "http://xmlrpc.scripting.com/metaWeblogApi.html"
},
"15": {
"text": "http://xmlrpc.scripting.com/metaWeblogNewMediaObject.html"
},
"16": {
"text": "http://xmlrpc.scripting.com/mttf.html"
},
"17": {
"text": "http://xmlrpc.scripting.com/news.html"
},
"18": {
"text": "http://xmlrpc.scripting.com/rebuttalToRest.html"
},
"19": {
"text": "http://xmlrpc.scripting.com/roundingMetaweblogApi.html"
},
"20": {
"text": "http://xmlrpc.scripting.com/rpcInteropTests.html"
},
"21": {
"text": "http://xmlrpc.scripting.com/stateApril2001.html"
},
"22": {
"text": "http://xmlrpc.scripting.com/subsHarmonizer.html"
},
"23": {
"text": "http://xmlrpc.scripting.com/validator1Docs.html"
},
"24": {
"text": "http://xmlrpc.scripting.com/weblogsCom.html"
},
"25": {
"text": "http://xmlrpc.scripting.com/weblogsComForRss.html"
},
"26": {
"text": "http://xmlrpc.scripting.com/xmlRpcMan.html"
}
}
},
"7": {
"text": "Graphics",
"created": "Thu, 17 Nov 2011 16:39:39 GMT",
"pgfnum": "3399",
"subs": {
"0": {
"text": "These pages reference graphics on static.userland.com. Someday this site will disappear, so we can increase longevity by moving them. I think I can make a general-purpose script for this.",
"created": "Thu, 17 Nov 2011 16:39:43 GMT",
"pgfnum": "3400"
},
"1": {
"text": "The scripts are in staticManilaSuite.utilities. This is the second time we've done this, the first time was for moving files from github to a static server for the Bootstrap toolkit.",
"created": "Thu, 17 Nov 2011 17:01:34 GMT",
"pgfnum": "3401"
}
}
},
"8": {
"text": "Home page for the site",
"created": "Thu, 17 Nov 2011 17:02:19 GMT",
"pgfnum": "3402",
"subs": {
"0": {
"text": "There still is no home page.",
"created": "Thu, 17 Nov 2011 17:02:25 GMT",
"pgfnum": "3403"
},
"1": {
"text": "I found the outline containing the home page text in the discussion group's message 000000.",
"created": "Thu, 17 Nov 2011 17:09:40 GMT",
"pgfnum": "3404"
},
"2": {
"text": "Added a #title directive.",
"created": "Thu, 17 Nov 2011 17:09:59 GMT",
"pgfnum": "3405"
},
"3": {
"text": "Removed the viewdirectorybox macro, this might be something we bring back at some time.",
"created": "Thu, 17 Nov 2011 17:10:04 GMT",
"pgfnum": "3406",
"subs": {
"0": {
"text": "{viewDirectoryBox (1568, \"XML-RPC Directory\", align:\"right\", width:175, frameColor:\"#DCDCDC\", titleTextColor:\"#000000\", boxFillColor:\"#FFFFFF\", hspace:15, vspace:2)}",
"created": "Thu, 17 Nov 2011 17:10:09 GMT",
"pgfnum": "3407"
}
}
}
}
},
"9": {
"text": "Mapping domains",
"created": "Thu, 17 Nov 2011 17:45:59 GMT",
"pgfnum": "3408",
"subs": {
"0": {
"text": "The root domains map to",
"created": "Thu, 17 Nov 2011 17:46:02 GMT",
"pgfnum": "3409"
},
"1": {
"text": "tcp.dns.getdottedid (\"pensacola.scripting.com\")",
"created": "Thu, 17 Nov 2011 17:46:07 GMT",
"pgfnum": "3410",
"subs": {}
}
}
}
}
},
"1": {
"text": "Moved some old sites to S3",
"created": "Wed, 16 Nov 2011 21:59:52 GMT",
"pgfnum": "3373",
"type": "blogpost",
"subs": {
"0": {
"text": "These sites are now hosted on S3:",
"created": "Wed, 16 Nov 2011 21:59:58 GMT",
"pgfnum": "3374",
"subs": {
"0": {
"text": "bloggercon.org",
"created": "Wed, 16 Nov 2011 22:00:09 GMT",
"pgfnum": "3375"
},
"1": {
"text": "thetwowayweb.com",
"created": "Wed, 16 Nov 2011 22:00:15 GMT",
"pgfnum": "3376"
}
}
}
}
},
"2": {
"text": "Pref to disable count logging",
"created": "Wed, 16 Nov 2011 20:27:48 GMT",
"pgfnum": "3369",
"subs": {
"0": {
"text": "The count logging is too much, so let's add a pref to turn it on, when it's needed.",
"created": "Wed, 16 Nov 2011 20:27:54 GMT",
"pgfnum": "3370"
},
"1": {
"text": "Parts",
"created": "Wed, 16 Nov 2011 20:28:43 GMT",
"pgfnum": "3371",
"subs": {
"0": {
"text": "radio2Suite.init"
},
"1": {
"text": "radio2Suite.background.everyMinute"
}
}
}
}
},
"3": {
"text": "Counts needs a look",
"created": "Wed, 16 Nov 2011 15:35:54 GMT",
"pgfnum": "3360",
"type": "blogpost",
"subs": {
"0": {
"text": "See the log page.",
"created": "Wed, 16 Nov 2011 15:35:58 GMT",
"pgfnum": "3361"
},
"1": {
"text": "Frequency with which you fetch counts depends on how long since you last posted. Once an hour is okay if you haven't posted in over a day.",
"created": "Wed, 16 Nov 2011 15:40:43 GMT",
"pgfnum": "3363"
},
"2": {
"text": "Deal with errors connecting to Adjix.",
"created": "Wed, 16 Nov 2011 15:42:00 GMT",
"pgfnum": "3364",
"subs": {
"0": {
"text": "Error getting counts for user \"xxx.\" Can't get the address of \"visits\" because the table doesn't have an object with that name.",
"created": "Wed, 16 Nov 2011 15:42:27 GMT",
"pgfnum": "3365"
}
}
},
"3": {
"text": "Logging occurs for all users every time there's an update. And we try to synch them up, so we update as many as possible in one shot.",
"created": "Wed, 16 Nov 2011 17:39:27 GMT",
"pgfnum": "3368"
},
"4": {
"text": "Parts",
"created": "Wed, 16 Nov 2011 15:55:12 GMT",
"pgfnum": "3366",
"subs": {
"0": {
"text": "radio2Suite.initUser"
},
"1": {
"text": "radio2Suite.newPost",
"created": "Wed, 16 Nov 2011 15:55:14 GMT",
"pgfnum": "3367"
},
"2": {
"text": "radio2Suite.shortener.setNextGet"
},
"3": {
"text": "radio2Suite.shortener.getCounts"
},
"4": {
"text": "radio2Suite.background.everyMinute"
}
}
}
}
},
"4": {
"text": "Backfixing beaut.root",
"created": "Wed, 16 Nov 2011 15:32:04 GMT",
"pgfnum": "3354",
"subs": {
"0": {
"text": "In making changes to radio2.root, we made some things in Blork not look good, and it's possible some stuff broke. I'm going to take a bit of time this morning to have a look.",
"created": "Wed, 16 Nov 2011 15:32:10 GMT",
"pgfnum": "3355"
},
"1": {
"text": "To do",
"created": "Wed, 16 Nov 2011 15:32:49 GMT",
"pgfnum": "3356",
"subs": {
"0": {
"text": "History table needs styles",
"created": "Wed, 16 Nov 2011 15:32:56 GMT",
"pgfnum": "3357",
"subs": {
"0": {
"text": "Counts page",
"created": "Wed, 16 Nov 2011 15:34:41 GMT",
"pgfnum": "3358"
},
"1": {
"text": "Links",
"created": "Wed, 16 Nov 2011 15:34:53 GMT",
"pgfnum": "3359"
}
}
},
"1": {
"text": "New User command not needed",
"created": "Wed, 16 Nov 2011 15:36:20 GMT",
"pgfnum": "3362"
}
}
}
}
},
"5": {
"text": "Support for Readability shortener api",
"created": "Wed, 16 Nov 2011 13:58:50 GMT",
"pgfnum": "3347",
"type": "blogpost",
"subs": {
"0": {
"text": "Readability introduced a bunch of new API features today. The first one I'm looking at is the URL shortener.",
"created": "Wed, 16 Nov 2011 13:59:06 GMT",
"pgfnum": "3348"
},
"1": {
"text": "When you shorten an URL with Readability, it gives you a short URL that links to a readable version of the page.",
"created": "Wed, 16 Nov 2011 14:00:25 GMT",
"pgfnum": "3349"
},
"2": {
"text": "There's a new table, system.verbs.apps.readability, with, at this time, one entry-point: readability.shortenUrl.",
"created": "Wed, 16 Nov 2011 14:00:35 GMT",
"pgfnum": "3350"
},
"3": {
"text": "An example of a URL that's shortened this way: http://rdd.me/bgnyrix1.",
"created": "Wed, 16 Nov 2011 14:01:13 GMT",
"pgfnum": "3353"
},
"4": {
"text": "Parts",
"created": "Wed, 16 Nov 2011 14:00:55 GMT",
"pgfnum": "3351",
"subs": {
"0": {
"text": "readability.shortenUrl",
"created": "Wed, 16 Nov 2011 14:00:56 GMT",
"pgfnum": "3352"
}
}
}
}
}
}
},
"12": {
"text": "11/15/11 by DW",
"created": "Tue, 15 Nov 2011 14:32:09 GMT",
"pgfnum": "3315",
"subs": {
"0": {
"text": "Slogans for the What's Happening? prompt",
"created": "Tue, 15 Nov 2011 19:14:47 GMT",
"pgfnum": "3342",
"type": "blogpost",
"subs": {
"0": {
"text": "If you want to have some fun, change your prompt to <%slogan%>.",
"created": "Tue, 15 Nov 2011 19:14:57 GMT",
"pgfnum": "3343"
},
"1": {
"text": "Parts",
"created": "Tue, 15 Nov 2011 19:15:21 GMT",
"pgfnum": "3344",
"subs": {
"0": {
"text": "opmlEditor.viewSlogan",
"created": "Tue, 15 Nov 2011 19:15:22 GMT",
"pgfnum": "3345"
},
"1": {
"text": "radio2Suite.main"
}
}
}
}
},
"1": {
"text": "Removed TLE popover",
"created": "Tue, 15 Nov 2011 17:20:48 GMT",
"pgfnum": "3334",
"type": "blogpost",
"subs": {
"0": {
"text": "The popover is nice, it shows that popovers work -- and I'm sure we'll have occasion to use them.",
"created": "Tue, 15 Nov 2011 17:20:52 GMT",
"pgfnum": "3335"
},
"1": {
"text": "But the one that pops up over the Title/Link/Enclosure section of the Radio2 main page is distracting, and gets in the way of using the software. And that feature is no less obvious than the others that don't (and can't) have popovers.",
"created": "Tue, 15 Nov 2011 17:21:18 GMT",
"pgfnum": "3336"
},
"2": {
"text": "So I removed it, and pasted it below:",
"created": "Tue, 15 Nov 2011 17:22:07 GMT",
"pgfnum": "3337",
"subs": {
"0": {
"text": "Title, Link & Enclosure.",
"created": "Tue, 15 Nov 2011 17:22:16 GMT",
"pgfnum": "3338"
}
}
},
"3": {
"text": "Parts",
"created": "Tue, 15 Nov 2011 17:22:18 GMT",
"pgfnum": "3339",
"subs": {
"0": {
"text": "radio2Suite.data.homePageEditBox",
"created": "Tue, 15 Nov 2011 17:22:20 GMT",
"pgfnum": "3340"
}
}
}
}
},
"2": {
"text": "Performance bug hunt",
"created": "Tue, 15 Nov 2011 16:44:59 GMT",
"pgfnum": "3319",
"type": "blogpost",
"subs": {
"0": {
"text": "Found two ways to make the radio2 blog post much faster.",
"created": "Tue, 15 Nov 2011 17:07:32 GMT",
"pgfnum": "3326"
},
"1": {
"text": "1. There was a super-easy optimization possible for radio2Suite.findPost.",
"created": "Tue, 15 Nov 2011 17:07:46 GMT",
"pgfnum": "3330"
},
"2": {
"text": "2. A new parameter had been introduced to radio2Suite.main since the last time I worked on Radio2. It says that we should not wait for publish to complete. We now pass that in as true.",
"created": "Tue, 15 Nov 2011 17:08:09 GMT",
"pgfnum": "3331"
},
"3": {
"text": "Both these changes reduced the publish time to less than a second. That's in the ballpark of what I was looking for. :-)",
"created": "Tue, 15 Nov 2011 17:08:49 GMT",
"pgfnum": "3332"
},
"4": {
"text": "Parts",
"created": "Tue, 15 Nov 2011 17:09:16 GMT",
"pgfnum": "3333",
"subs": {
"0": {
"text": "radio2Suite.findPost"
},
"1": {
"text": "radio2Website.index"
}
}
}
}
},
"3": {
"text": "More Radio2 work",
"created": "Wed, 09 Nov 2011 22:17:14 GMT",
"pgfnum": "3169",
"type": "blogpost",
"subs": {
"0": {
"text": "Todo",
"created": "Wed, 09 Nov 2011 22:17:38 GMT",
"pgfnum": "3171",
"subs": {
"0": {
"text": "Write new server setup howto.",
"created": "Fri, 11 Nov 2011 14:49:34 GMT",
"pgfnum": "3220"
},
"1": {
"text": "Should the URL shortener become a system pref, that can be overridden by a user? (Similar to the way the S3 functionality works.)",
"created": "Fri, 11 Nov 2011 14:06:28 GMT",
"pgfnum": "3219"
},
"2": {
"text": "double posts with enclosures",
"created": "Thu, 10 Nov 2011 03:06:50 GMT",
"pgfnum": "3177"
},
"3": {
"text": "Review the user docs.",
"created": "Wed, 09 Nov 2011 17:34:02 GMT",
"pgfnum": "3162"
},
"4": {
"text": "review various ancillary pages in menu",
"created": "Wed, 09 Nov 2011 15:25:46 GMT",
"pgfnum": "3147"
},
"5": {
"text": "test with bit.ly",
"created": "Wed, 09 Nov 2011 15:31:04 GMT",
"pgfnum": "3152"
},
"6": {
"text": "Problem with counts?",
"created": "Tue, 15 Nov 2011 14:33:10 GMT",
"pgfnum": "3317",
"subs": {
"0": {
"text": "It's supposed to be the rankings of the last 40 posts. But that doesn't seem to be what's going on. Let's check it out.",
"created": "Tue, 15 Nov 2011 14:33:17 GMT",
"pgfnum": "3318"
}
}
},
"7": {
"text": "beaut.root template needs to get styles from the history table, and probably a bunch of others. there's replicated code in there. this is the problem with styles.",
"created": "Thu, 10 Nov 2011 14:18:31 GMT",
"pgfnum": "3188"
}
}
},
"1": {
"text": "Done",
"created": "Wed, 09 Nov 2011 22:17:50 GMT",
"pgfnum": "3172",
"subs": {
"0": {
"text": "I want posting to be blazing fast.",
"created": "Sat, 12 Nov 2011 14:36:31 GMT",
"pgfnum": "3273",
"subs": {
"0": {
"text": "review publishing process",
"created": "Wed, 09 Nov 2011 15:25:42 GMT",
"pgfnum": "3146"
}
}
},
"1": {
"text": "Test with multiple feeds.",
"created": "Fri, 11 Nov 2011 18:01:08 GMT",
"pgfnum": "3238"
},
"2": {
"text": "Why can't I log in from the iPad?",
"created": "Sat, 12 Nov 2011 13:57:35 GMT",
"pgfnum": "3257"
},
"3": {
"text": "Log page tweaks.",
"created": "Sat, 12 Nov 2011 13:57:30 GMT",
"pgfnum": "3256"
},
"4": {
"text": "Ordering of items in the menu.",
"created": "Sat, 12 Nov 2011 14:30:43 GMT",
"pgfnum": "3272"
},
"5": {
"text": "Twipsies for the when field on the History table.",
"created": "Sat, 12 Nov 2011 13:57:48 GMT",
"pgfnum": "3258"
},
"6": {
"text": "Edit button in history table opens the popup window. Not sure this is a mistake, but it needs a look.",
"created": "Thu, 10 Nov 2011 03:11:34 GMT",
"pgfnum": "3180"
},
"7": {
"text": "We need to hide the Title/Link/Enclosure section at first. People will think they're supposed to grok them. If they're collapsed the get the clear message that they're optional.",
"created": "Fri, 11 Nov 2011 15:03:02 GMT",
"pgfnum": "3226"
},
"8": {
"text": "Test the bookmarklet",
"created": "Wed, 09 Nov 2011 17:33:00 GMT",
"pgfnum": "3160"
},
"9": {
"text": "Start Radio2 users mail list.",
"created": "Thu, 10 Nov 2011 18:47:17 GMT",
"pgfnum": "3194"
},
"10": {
"text": "out of memory when publishing large podcasts",
"created": "Thu, 10 Nov 2011 03:06:41 GMT",
"pgfnum": "3176"
},
"11": {
"text": "No need to collapse things",
"created": "Wed, 09 Nov 2011 17:30:11 GMT",
"pgfnum": "3157"
},
"12": {
"text": "Home page style sheet",
"created": "Wed, 09 Nov 2011 17:30:04 GMT",
"pgfnum": "3156"
},
"13": {
"text": "In the history table instead of \"Wednesday\" say \"Wed\".",
"created": "Thu, 10 Nov 2011 14:59:36 GMT",
"pgfnum": "3189"
},
"14": {
"text": "font size in text areas should match the font size in one-line boxes",
"created": "Wed, 09 Nov 2011 15:27:40 GMT",
"pgfnum": "3149"
},
"15": {
"text": "History table borders",
"created": "Thu, 10 Nov 2011 03:10:00 GMT",
"pgfnum": "3179"
},
"16": {
"text": "The Home command is redundant",
"created": "Wed, 09 Nov 2011 17:31:59 GMT",
"pgfnum": "3158"
},
"17": {
"text": "Links page looks retarded",
"created": "Wed, 09 Nov 2011 17:32:34 GMT",
"pgfnum": "3159"
},
"18": {
"text": "There's no message in the log for backups",
"created": "Wed, 09 Nov 2011 17:33:30 GMT",
"pgfnum": "3161"
},
"19": {
"text": "Connecting to twitter.github.com -- slow!",
"created": "Thu, 10 Nov 2011 13:45:18 GMT",
"pgfnum": "3187"
}
}
}
}
}
}
},
"13": {
"text": "11/14/11 by DW",
"created": "Mon, 14 Nov 2011 20:57:32 GMT",
"pgfnum": "3309",
"subs": {
"0": {
"text": "HTTP log page",
"created": "Mon, 14 Nov 2011 20:57:33 GMT",
"pgfnum": "3310",
"type": "blogpost",
"subs": {
"0": {
"text": "A new page on the admin site that lists the last 50 HTTP requests handled by the built in web server.",
"created": "Mon, 14 Nov 2011 20:57:41 GMT",
"pgfnum": "3311"
},
"1": {
"text": "Screen shot.",
"created": "Mon, 14 Nov 2011 20:58:44 GMT",
"pgfnum": "3314"
},
"2": {
"text": "Parts",
"created": "Mon, 14 Nov 2011 20:58:20 GMT",
"pgfnum": "3312",
"subs": {
"0": {
"text": "log.visitReverseChronologic"
},
"1": {
"text": "opmlEditor.data.outlines.httpLogIntro"
},
"2": {
"text": "opmlEditor.data.outlines.logPageIntro"
},
"3": {
"text": "opmlEditor.httpLog"
},
"4": {
"text": "opmlEditor.init"
},
"5": {
"text": "opmlEditor.viewMenu"
},
"6": {
"text": "opmlEditor.website.[\"#template\"]"
},
"7": {
"text": "opmlEditor.website.httpLog"
}
}
}
}
}
}
},
"14": {
"text": "11/13/11 by DW",
"created": "Sun, 13 Nov 2011 15:37:49 GMT",
"pgfnum": "3298",
"subs": {
"0": {
"text": "Screen shot of today's radio2",
"created": "Sun, 13 Nov 2011 15:37:50 GMT",
"fldisquscomments": "true",
"pgfnum": "3299",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's a screen shot of Radio2 in production, being used to edit my linkblog.",
"created": "Sun, 13 Nov 2011 15:37:55 GMT",
"pgfnum": "3300",
"subs": {
"0": {
"text": "It's running on r2.scripting.com.",
"created": "Sun, 13 Nov 2011 15:39:05 GMT",
"pgfnum": "3305"
},
"1": {
"text": "If you have an account on my server, you can log in at that address, using your original username and password. It should work.",
"created": "Sun, 13 Nov 2011 15:39:11 GMT",
"pgfnum": "3306"
}
}
},
"1": {
"text": "My goal this week has been to make this software deserve its name.",
"created": "Sun, 13 Nov 2011 15:38:12 GMT",
"pgfnum": "3302",
"subs": {
"0": {
"text": "The original Radio blogging tool was very nice smooth tool for its day.",
"created": "Sun, 13 Nov 2011 15:38:23 GMT",
"pgfnum": "3303"
},
"1": {
"text": "We're getting there. :-)",
"created": "Sun, 13 Nov 2011 15:38:43 GMT",
"pgfnum": "3304"
}
}
}
}
}
}
},
"15": {
"text": "11/12/11 by DW",
"created": "Sat, 12 Nov 2011 13:57:05 GMT",
"pgfnum": "3255",
"subs": {
"0": {
"text": "A convenient outage? (Probably not)",
"created": "Sat, 12 Nov 2011 23:15:26 GMT",
"pgfnum": "3289",
"type": "blogpost",
"subs": {
"0": {
"text": "All of a sudden the server that I use to host a lot of new stuff, including radio2.scripting.com, is having trouble. I spent a bit of time trying to figure out what the problem is, but then I went for a walk and realized that it's a good time to make a change.",
"created": "Sat, 12 Nov 2011 23:15:31 GMT",
"pgfnum": "3290"
},
"1": {
"text": "I just spent the last week polishing and improving the Radio2 app. I was starting to think how I was going to do the transition, because I no longer want to use the old version, the new one is so much nicer and faster.",
"created": "Sat, 12 Nov 2011 23:16:42 GMT",
"pgfnum": "3291"
},
"2": {
"text": "So here's what I'm doing",
"created": "Sat, 12 Nov 2011 23:17:56 GMT",
"pgfnum": "3292",
"subs": {
"0": {
"text": "1. I've created a new server on Rackspace called Austin. (In honor of AC's new hometown.)",
"created": "Sat, 12 Nov 2011 23:18:02 GMT",
"pgfnum": "3293"
},
"1": {
"text": "2. I've installed Radio2 on the server. I'm using the new procedure for installing it, so that will get a test now.",
"created": "Sat, 12 Nov 2011 23:18:29 GMT",
"pgfnum": "3294"
},
"2": {
"text": "3. Radio's name on this server is radio2.reallysimple.org.",
"created": "Sat, 12 Nov 2011 23:18:56 GMT",
"pgfnum": "3295"
}
}
},
"3": {
"text": "Update: When I got Radio2 running on the new server, it had the same problem. Conclusion -- I must have broken something in an update. Found the problem. I had eliminated the column in the History table that says what the item number is. But that had a side-effect, the counter was used to limit the number of items in the history table. It was adding all the posts I had ever entered back to the beginning. Once I fixed the bug and released the parts both servers went back to normal.",
"created": "Sun, 13 Nov 2011 13:06:15 GMT",
"pgfnum": "3296"
},
"4": {
"text": "Conclusion: Maybe we don't need the new server after all.",
"created": "Sun, 13 Nov 2011 13:08:19 GMT",
"pgfnum": "3297"
}
}
},
"1": {
"text": "Multiple feeds",
"created": "Sat, 12 Nov 2011 16:30:43 GMT",
"pgfnum": "3282",
"type": "blogpost",
"subs": {
"0": {
"text": "Want to take a look at undoing a couple of klooges, bad design.",
"created": "Sat, 12 Nov 2011 16:30:53 GMT",
"pgfnum": "3283"
},
"1": {
"text": "If you have multiple feeds, the popup menu should go flush right.",
"created": "Sat, 12 Nov 2011 16:31:08 GMT",
"pgfnum": "3284"
},
"2": {
"text": "The prompt should stay right where it is.",
"created": "Sat, 12 Nov 2011 16:31:28 GMT",
"pgfnum": "3285"
},
"3": {
"text": "The popup menu was running the script at the onmouseup event. Turns out there's a special event for popups called onchange. Works much much better!",
"created": "Sat, 12 Nov 2011 16:31:38 GMT",
"pgfnum": "3286"
},
"4": {
"text": "Parts",
"created": "Sat, 12 Nov 2011 17:12:57 GMT",
"pgfnum": "3287",
"subs": {
"0": {
"text": "radio2Suite.data.feedMenuScript"
},
"1": {
"text": "radio2Suite.data.homePageEditBox"
},
"2": {
"text": "radio2Suite.main"
},
"3": {
"text": "radio2Website.[\"#template\"]"
}
}
}
}
},
"2": {
"text": "Static counts page",
"created": "Sat, 12 Nov 2011 16:14:54 GMT",
"pgfnum": "3276",
"type": "blogpost",
"subs": {
"0": {
"text": "Changed the defaults for intro and the template, to be more compact, and to use styles.",
"created": "Sat, 12 Nov 2011 16:14:58 GMT",
"pgfnum": "3277"
},
"1": {
"text": "To get the new features you have to manually delete the prefs in your user table. Or you can continue to use the old templates, they should still work.",
"created": "Sat, 12 Nov 2011 16:16:05 GMT",
"pgfnum": "3280"
},
"2": {
"text": "Example of the new static counts page.",
"created": "Sat, 12 Nov 2011 16:18:57 GMT",
"pgfnum": "3281"
},
"3": {
"text": "Parts",
"created": "Sat, 12 Nov 2011 16:15:19 GMT",
"pgfnum": "3278",
"subs": {
"0": {
"text": "radio2Suite.data.html.staticCountsPageTemplate"
},
"1": {
"text": "radio2Suite.data.strings.countsPageIntro"
}
}
}
}
},
"3": {
"text": "Counts table tweaks",
"created": "Sat, 12 Nov 2011 14:29:02 GMT",
"pgfnum": "3266",
"type": "blogpost",
"subs": {
"0": {
"text": "The usual borders thing on the table.",
"created": "Sat, 12 Nov 2011 14:29:07 GMT",
"pgfnum": "3267"
},
"1": {
"text": "It should be zebra-striped.",
"created": "Sat, 12 Nov 2011 14:29:23 GMT",
"pgfnum": "3268"
},
"2": {
"text": "Text should be bigger.",
"created": "Sat, 12 Nov 2011 14:29:28 GMT",
"pgfnum": "3269"
},
"3": {
"text": "Shouldn't occupy the whole width of the page.",
"created": "Sat, 12 Nov 2011 14:29:34 GMT",
"pgfnum": "3270"
},
"4": {
"text": "Right-align the numbers.",
"created": "Sat, 12 Nov 2011 14:29:46 GMT",
"pgfnum": "3271"
},
"5": {
"text": "Parts",
"created": "Sat, 12 Nov 2011 15:29:55 GMT",
"pgfnum": "3274",
"subs": {
"0": {
"text": "radio2Suite.data.html.countsPageTemplate"
},
"1": {
"text": "radio2Suite.viewCounts"
},
"2": {
"text": "radio2Website.counts"
}
}
}
}
},
"4": {
"text": "Added twipsies for the when column",
"created": "Sat, 12 Nov 2011 14:18:49 GMT",
"pgfnum": "3260",
"type": "blogpost",
"subs": {
"0": {
"text": "In Radio's history table, I moved the when column to be the first column. It's small, and gives you some important info. That the table is arranged in reverse-chronologic order. And obviously it's important when the post was created.",
"created": "Sat, 12 Nov 2011 14:19:02 GMT",
"pgfnum": "3261"
},
"1": {
"text": "And now when you hover over the value, which could be \"Fri\" or \"9:20AM\" it shows you the exact time and date of the post.",
"created": "Sat, 12 Nov 2011 14:19:46 GMT",
"pgfnum": "3262"
},
"2": {
"text": "Screen shot.",
"created": "Sat, 12 Nov 2011 14:20:32 GMT",
"pgfnum": "3263"
},
"3": {
"text": "Parts",
"created": "Sat, 12 Nov 2011 14:22:30 GMT",
"pgfnum": "3264",
"subs": {
"0": {
"text": "radio2Suite.viewHistory"
},
"1": {
"text": "radio2Website.[\"#template\"]"
}
}
}
}
}
}
},
"16": {
"text": "11/11/11 by DW",
"created": "Fri, 11 Nov 2011 14:04:01 GMT",
"pgfnum": "3212",
"subs": {
"0": {
"text": "History table refinement",
"created": "Fri, 11 Nov 2011 22:29:02 GMT",
"pgfnum": "3252",
"subs": {
"0": {
"text": "Drop the numbers on the history table. There is no meaning to the 1, 2, 3 etc in the first column.",
"created": "Fri, 11 Nov 2011 22:29:05 GMT",
"pgfnum": "3253"
},
"1": {
"text": "The text of the post remains big, we need to be able to read it comfortably. The rest of the items are not read, and should be smaller text.",
"created": "Fri, 11 Nov 2011 22:29:28 GMT",
"pgfnum": "3254"
}
}
},
"1": {
"text": "Tweaks",
"created": "Fri, 11 Nov 2011 21:48:04 GMT",
"pgfnum": "3246",
"type": "blogpost",
"subs": {
"0": {
"text": "Clicking on Title/Link/Enclosure text causes it to be revealed/hidden.",
"created": "Fri, 11 Nov 2011 21:48:06 GMT",
"pgfnum": "3247"
},
"1": {
"text": "The Post button becomes bigger.",
"created": "Fri, 11 Nov 2011 21:48:37 GMT",
"pgfnum": "3248"
},
"2": {
"text": "Use float property to arrange the items below the text box so they align in a comfortable way.",
"created": "Fri, 11 Nov 2011 22:22:28 GMT",
"pgfnum": "3249"
},
"3": {
"text": "Parts",
"created": "Fri, 11 Nov 2011 22:22:58 GMT",
"pgfnum": "3250",
"subs": {
"0": {
"text": "radio2Suite.data.homePageEditBox"
},
"1": {
"text": "radio2Website.[\"#template\"]"
}
}
}
}
},
"2": {
"text": "Added popover",
"created": "Fri, 11 Nov 2011 18:27:31 GMT",
"fldisquscomments": "true",
"pgfnum": "3239",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm using the popover feature from the Bootstrap toolkit in Radio2, to explain what's below the Title/Link/Enclosure wedge.",
"created": "Fri, 11 Nov 2011 18:28:41 GMT",
"pgfnum": "3240"
},
"1": {
"text": "Also added a text lable so it wouldn't be quite so stark. Here's a screen shot. As you can see a lot of stuff is working!",
"created": "Fri, 11 Nov 2011 18:29:18 GMT",
"pgfnum": "3241"
},
"2": {
"text": "I really feel like this software is beginning to deserve the name Radio2. It's getting as much attention to UI and the installation process as Radio got in 2002. Only now we're thinking in terms of clouds and microblogging. Back then it was desktop web servers. Not a whole lot of difference!",
"created": "Fri, 11 Nov 2011 18:29:37 GMT",
"pgfnum": "3242"
},
"3": {
"text": "I've turned comments on for this worknote.",
"created": "Fri, 11 Nov 2011 18:30:37 GMT",
"pgfnum": "3243"
},
"4": {
"text": "Parts",
"created": "Fri, 11 Nov 2011 18:31:16 GMT",
"pgfnum": "3244",
"subs": {
"0": {
"text": "radio2Suite.data.homePageEditBox",
"created": "Fri, 11 Nov 2011 18:31:18 GMT",
"pgfnum": "3245"
}
}
}
}
},
"3": {
"text": "Hiding Title/Link/Enclosure",
"created": "Fri, 11 Nov 2011 15:28:24 GMT",
"pgfnum": "3230",
"type": "blogpost",
"subs": {
"0": {
"text": "We need to hide the Title/Link/Enclosure section at first. People will think they're supposed to grok them. If they're collapsed the get the idea that they're optional.",
"created": "Fri, 11 Nov 2011 15:03:02 GMT",
"pgfnum": "3226"
},
"1": {
"text": "Parts",
"created": "Fri, 11 Nov 2011 17:28:34 GMT",
"pgfnum": "3236",
"subs": {
"0": {
"text": "radio2Suite.data.homePageEditBox"
},
"1": {
"text": "radio2Suite.main"
}
}
}
}
},
"4": {
"text": "History page/edit icons",
"created": "Fri, 11 Nov 2011 15:29:24 GMT",
"pgfnum": "3232",
"type": "blogpost",
"subs": {
"0": {
"text": "They cause the popup window to open. Not good. There is no popup window in Radio2.",
"created": "Fri, 11 Nov 2011 15:29:32 GMT",
"pgfnum": "3233"
},
"1": {
"text": "Parts",
"created": "Fri, 11 Nov 2011 15:58:27 GMT",
"pgfnum": "3234",
"subs": {
"0": {
"text": "radio2Suite.viewHistory"
},
"1": {
"text": "radio2Suite.main"
},
"2": {
"text": "radio2Website.index"
}
}
}
}
},
"5": {
"text": "Radio bookmarklet/popup window",
"created": "Fri, 11 Nov 2011 14:04:02 GMT",
"pgfnum": "3213",
"type": "blogpost",
"subs": {
"0": {
"text": "I was going to port the popup but when I tested the old bookmarklet, I liked it so much, that I decided to just go on from here.",
"created": "Fri, 11 Nov 2011 14:59:55 GMT",
"pgfnum": "3221"
},
"1": {
"text": "In Radio2, the bookmarklet now:",
"created": "Fri, 11 Nov 2011 15:00:58 GMT",
"pgfnum": "3222",
"subs": {
"0": {
"text": "1. Opens a new tab/window.",
"created": "Fri, 11 Nov 2011 15:01:05 GMT",
"pgfnum": "3223"
},
"1": {
"text": "2. It's the full Radio2 environment.",
"created": "Fri, 11 Nov 2011 15:01:16 GMT",
"pgfnum": "3224"
},
"2": {
"text": "3. The fields are pre-populated with information about the page you were on when you clicked the Bookmarklet.",
"created": "Fri, 11 Nov 2011 15:01:22 GMT",
"pgfnum": "3225"
}
}
},
"2": {
"text": "Parts",
"created": "Fri, 11 Nov 2011 15:25:45 GMT",
"pgfnum": "3228",
"subs": {
"0": {
"text": "radio2Suite.data.html.bookmarkletOpensInRadio"
},
"1": {
"text": "radio2Suite.data.html.contentLinksTemplate"
},
"2": {
"text": "radio2Suite.viewContentLinks"
},
"3": {
"text": "radio2Website.links"
},
"4": {
"text": "radio2Website.[\"#template\"]"
}
}
}
}
}
}
},
"17": {
"text": "11/10/11 by DW",
"created": "Thu, 10 Nov 2011 13:22:38 GMT",
"pgfnum": "3181",
"subs": {
"0": {
"text": "New Radio2 mail list",
"created": "Fri, 11 Nov 2011 00:02:20 GMT",
"pgfnum": "3208",
"type": "blogpost",
"subs": {
"0": {
"text": "http://groups.google.com/group/radio2-support",
"created": "Fri, 11 Nov 2011 00:02:22 GMT",
"pgfnum": "3209"
},
"1": {
"text": "Added to the Frontier river of news.",
"created": "Fri, 11 Nov 2011 00:02:48 GMT",
"pgfnum": "3210"
},
"2": {
"text": "I will announce the list when the new Howto is available and when there are some fresh Radio2 users to support.",
"created": "Fri, 11 Nov 2011 00:06:32 GMT",
"pgfnum": "3211"
}
}
},
"1": {
"text": "Enclosure uploading is more memory-efficient",
"created": "Thu, 10 Nov 2011 21:06:42 GMT",
"pgfnum": "3195",
"type": "blogpost",
"subs": {
"0": {
"text": "When processing an enclosure, as we descend through the layers of the stack we are making more than five copies of the data.",
"created": "Thu, 10 Nov 2011 21:06:53 GMT",
"pgfnum": "3196"
},
"1": {
"text": "This means that as the podcast is being uploaded if the file is 50MB, we use 250MB of memory.",
"created": "Thu, 10 Nov 2011 23:51:41 GMT",
"pgfnum": "3204"
},
"2": {
"text": "Not necessary. Make it so that each routine in the call stack can handle an address to the data if it's provided, instead of a copy of the data.",
"created": "Thu, 10 Nov 2011 23:52:04 GMT",
"pgfnum": "3205"
},
"3": {
"text": "The routines are:",
"created": "Thu, 10 Nov 2011 23:52:31 GMT",
"pgfnum": "3206",
"subs": {
"0": {
"text": "radio2Suite.main",
"created": "Thu, 10 Nov 2011 21:08:41 GMT",
"pgfnum": "3201"
},
"1": {
"text": "radio2Suite.writeStaticFile",
"created": "Thu, 10 Nov 2011 21:07:51 GMT",
"pgfnum": "3197"
},
"2": {
"text": "s3.newobject",
"created": "Thu, 10 Nov 2011 21:09:17 GMT",
"pgfnum": "3202"
},
"3": {
"text": "s3.httpClient",
"created": "Thu, 10 Nov 2011 21:09:41 GMT",
"pgfnum": "3203"
},
"4": {
"text": "tcp.httpClient"
}
}
},
"4": {
"text": "Turns out the first and last routines need to be modified, all the others just pass the data through without looking at it.",
"created": "Thu, 10 Nov 2011 21:07:51 GMT",
"pgfnum": "3198"
},
"5": {
"text": "I tested it on my servers, because tcp.httpClient is such a core routine. The changes are very simple, and the servers are working without problems. Knock wood.",
"created": "Thu, 10 Nov 2011 23:53:28 GMT",
"pgfnum": "3207"
},
"6": {
"text": "Parts",
"created": "Thu, 10 Nov 2011 21:07:51 GMT",
"pgfnum": "3199",
"subs": {
"0": {
"text": "radio2Suite.main"
},
"1": {
"text": "tcp.httpClient"
}
}
}
}
},
"2": {
"text": "Interim Radio2 release",
"created": "Thu, 10 Nov 2011 17:11:58 GMT",
"pgfnum": "3190",
"type": "blogpost",
"subs": {
"0": {
"text": "In this release, I did work on the home page of the Radio2 site and its style sheet. It looks very nice now, uses more Bootstrap features, and the style sheet has no cruft in it. Time to test and take a break.",
"created": "Thu, 10 Nov 2011 17:12:03 GMT",
"pgfnum": "3191"
},
"1": {
"text": "Parts",
"created": "Thu, 10 Nov 2011 17:13:16 GMT",
"pgfnum": "3192",
"subs": {
"0": {
"text": "radio2Suite.data.homePageEditBox"
},
"1": {
"text": "radio2Suite.main"
},
"2": {
"text": "radio2Suite.viewHistory"
},
"3": {
"text": "radio2Website.[\"#template\"]"
}
}
}
}
},
"3": {
"text": "Interim release",
"created": "Thu, 10 Nov 2011 13:22:49 GMT",
"pgfnum": "3183",
"type": "blogpost",
"subs": {
"0": {
"text": "See the worknote below. The work continues, but I want to release the parts so far, so I can focus on a bit of surgery between beaut.root and radio2.root.",
"created": "Thu, 10 Nov 2011 13:22:51 GMT",
"pgfnum": "3184"
},
"1": {
"text": "Parts",
"created": "Thu, 10 Nov 2011 13:24:22 GMT",
"pgfnum": "3185",
"subs": {
"0": {
"text": "prefs2.textAreaPref"
},
"1": {
"text": "radio2Suite.data.html.contentLinksTemplate"
},
"2": {
"text": "radio2Suite.utilities.backupUserTables"
},
"3": {
"text": "radio2Suite.viewHistory"
},
"4": {
"text": "radio2Suite.viewMenu"
},
"5": {
"text": "radio2Website.[\"#template\"]"
}
}
}
}
}
}
},
"18": {
"text": "11/9/11 by DW",
"created": "Wed, 09 Nov 2011 14:21:03 GMT",
"pgfnum": "3130",
"subs": {
"0": {
"text": "Nothing happens until S3 is enabled",
"created": "Wed, 09 Nov 2011 16:33:26 GMT",
"pgfnum": "3153",
"subs": {
"0": {
"text": "The everyMinute script just returns if it's not enabled.",
"created": "Wed, 09 Nov 2011 16:33:38 GMT",
"pgfnum": "3154"
}
}
},
"1": {
"text": "Textareas in prefs pages",
"created": "Wed, 09 Nov 2011 14:22:28 GMT",
"pgfnum": "3133",
"type": "blogpost",
"subs": {
"0": {
"text": "A text area is a multi-row box for entering text. An example is the Admin user list in the OPML Editor prefs.",
"created": "Wed, 09 Nov 2011 14:22:38 GMT",
"pgfnum": "3134"
},
"1": {
"text": "There were issues with editing elements that were stored in databases with addresses that contain double-quotes. Anything for editing an element of a feed could potentially have a problem.",
"created": "Wed, 09 Nov 2011 14:22:54 GMT",
"pgfnum": "3135"
},
"2": {
"text": "How to test",
"created": "Wed, 09 Nov 2011 14:23:53 GMT",
"pgfnum": "3139",
"subs": {
"0": {
"text": "Keep an eye out for problems editing text areas in Prefs pages.",
"created": "Wed, 09 Nov 2011 14:23:56 GMT",
"pgfnum": "3140"
},
"1": {
"text": "When the new version of Radio2 is released, look at the prefs page for editing elements of your current RSS feed.",
"created": "Wed, 09 Nov 2011 14:26:36 GMT",
"pgfnum": "3142"
}
}
},
"3": {
"text": "Parts",
"created": "Wed, 09 Nov 2011 14:23:42 GMT",
"pgfnum": "3136",
"subs": {
"0": {
"text": "prefs2.textareapref",
"created": "Wed, 09 Nov 2011 14:23:51 GMT",
"pgfnum": "3138"
}
}
}
}
},
"2": {
"text": "New release of radio2.root",
"created": "Wed, 09 Nov 2011 14:21:04 GMT",
"pgfnum": "3131",
"type": "blogpost",
"subs": {
"0": {
"text": "Updates should go out later today. We'll have to look for breakage in Blork installations. The goal is to get Radio2 to work standalone, not as part of an integrated system with River2. Going for looser-coupling. (And perhaps some new protocols.)",
"created": "Wed, 09 Nov 2011 14:21:20 GMT",
"pgfnum": "3132"
},
"1": {
"text": "To do",
"created": "Wed, 09 Nov 2011 15:25:37 GMT",
"pgfnum": "3144",
"subs": {
"0": {
"text": "Review the user docs.",
"created": "Wed, 09 Nov 2011 17:34:02 GMT",
"pgfnum": "3162"
},
"1": {
"text": "There's no message in the log for backups",
"created": "Wed, 09 Nov 2011 17:33:30 GMT",
"pgfnum": "3161"
},
"2": {
"text": "Test the bookmarklet",
"created": "Wed, 09 Nov 2011 17:33:00 GMT",
"pgfnum": "3160"
},
"3": {
"text": "Links page looks retarded",
"created": "Wed, 09 Nov 2011 17:32:34 GMT",
"pgfnum": "3159"
},
"4": {
"text": "The Home command is redundant",
"created": "Wed, 09 Nov 2011 17:31:59 GMT",
"pgfnum": "3158"
},
"5": {
"text": "The style sheet needs attention",
"created": "Wed, 09 Nov 2011 17:30:04 GMT",
"pgfnum": "3156"
},
"6": {
"text": "No need to collapse things",
"created": "Wed, 09 Nov 2011 17:30:11 GMT",
"pgfnum": "3157"
},
"7": {
"text": "review publishing process",
"created": "Wed, 09 Nov 2011 15:25:42 GMT",
"pgfnum": "3146"
},
"8": {
"text": "review various ancillary pages in menu",
"created": "Wed, 09 Nov 2011 15:25:46 GMT",
"pgfnum": "3147"
},
"9": {
"text": "font size in text areas should match the font size in one-line boxes",
"created": "Wed, 09 Nov 2011 15:27:40 GMT",
"pgfnum": "3149"
},
"10": {
"text": "test with bit.ly",
"created": "Wed, 09 Nov 2011 15:31:04 GMT",
"pgfnum": "3152"
}
}
},
"2": {
"text": "Done",
"created": "Wed, 09 Nov 2011 17:23:40 GMT",
"pgfnum": "3155",
"subs": {
"0": {
"text": "review prefs",
"created": "Wed, 09 Nov 2011 15:25:38 GMT",
"pgfnum": "3145",
"subs": {
"0": {
"text": "rebuild the html linkblog when you change the template",
"created": "Wed, 09 Nov 2011 15:29:09 GMT",
"pgfnum": "3150"
},
"1": {
"text": "top 40 prefs page has an error",
"created": "Wed, 09 Nov 2011 15:30:23 GMT",
"pgfnum": "3151"
}
}
}
}
},
"3": {
"text": "Parts",
"created": "Wed, 09 Nov 2011 15:22:32 GMT",
"pgfnum": "3143",
"subs": {
"0": {
"text": "webApp.viewMenu"
},
"1": {
"text": "radio2Suite.init"
},
"2": {
"text": "radio2Suite.initUser"
},
"3": {
"text": "radio2Suite.data.prefsForSetup"
},
"4": {
"text": "radio2Suite.data.prefsOutline"
},
"5": {
"text": "radio2Suite.utilities.buildTop40IfPost"
},
"6": {
"text": "radio2Suite.menuCommands.setDomain"
},
"7": {
"text": "radio2Suite.utilities.buildFeedIfPost"
},
"8": {
"text": "radio2Suite.utilities.buildHtmlArchiveIfPost"
},
"9": {
"text": "radio2Suite.utilities.setDomainForPrefs"
},
"10": {
"text": "radio2Suite.utilities.validateS3path"
},
"11": {
"text": "radio2Suite.viewMenu"
},
"12": {
"text": "radio2Website.[\"#template\"]"
},
"13": {
"text": "radio2Website.prefs"
},
"14": {
"text": "radio2Suite.background.everyMinute"
},
"15": {
"text": "[\"#installer\"]"
}
}
}
}
}
}
},
"19": {
"text": "11/8/11 by DW",
"created": "Tue, 08 Nov 2011 14:53:14 GMT",
"pgfnum": "3121",
"subs": {
"0": {
"text": "server requests should be logged",
"created": "Tue, 08 Nov 2011 15:14:20 GMT",
"pgfnum": "3126",
"subs": {
"0": {
"text": "It's weird that it's not being done.",
"created": "Tue, 08 Nov 2011 15:14:28 GMT",
"pgfnum": "3127"
}
}
},
"1": {
"text": "hosting.opml.org",
"created": "Tue, 08 Nov 2011 14:53:15 GMT",
"pgfnum": "3122",
"subs": {
"0": {
"text": "It will now become an S3 site. Further simplifying things on my servers. This is a milestone. A big bit of content I want to keep around. Until now it's been hosted by server software I've been running. Now I'm giving it to Amazon to worry about.",
"created": "Tue, 08 Nov 2011 14:53:31 GMT",
"pgfnum": "3123"
},
"1": {
"text": "I have a script uploading all the bits right now.",
"created": "Tue, 08 Nov 2011 15:13:30 GMT",
"pgfnum": "3124"
},
"2": {
"text": "Configuring it so it will be properly hosted by S3 (index files will be served).",
"created": "Tue, 08 Nov 2011 15:13:38 GMT",
"pgfnum": "3125"
},
"3": {
"text": "CNAME for web access is hosting.opml.org.s3-website-us-east-1.amazonaws.com.",
"created": "Tue, 08 Nov 2011 15:15:57 GMT",
"pgfnum": "3128"
},
"4": {
"text": "It works. Here's a file from amyloo's blog.",
"created": "Tue, 08 Nov 2011 15:23:35 GMT",
"pgfnum": "3129"
}
}
}
}
},
"20": {
"text": "11/7/11 by DW",
"created": "Mon, 07 Nov 2011 13:33:13 GMT",
"pgfnum": "3104",
"subs": {
"0": {
"text": "Cookie domain",
"created": "Mon, 07 Nov 2011 23:16:42 GMT",
"pgfnum": "3118",
"type": "blogpost",
"subs": {
"0": {
"text": "This is for the server setup howto...",
"created": "Mon, 07 Nov 2011 23:18:03 GMT",
"pgfnum": "3120"
},
"1": {
"text": "When you're setting up a server, make sure you look at default.cookieDomain. All the users are going to logon through that domain.",
"created": "Mon, 07 Nov 2011 23:16:48 GMT",
"pgfnum": "3119"
}
}
},
"1": {
"text": "Radio2 work",
"created": "Mon, 07 Nov 2011 13:37:45 GMT",
"pgfnum": "3109",
"subs": {
"0": {
"text": "This is what the home page looks like. By the end of this session it will look radically different.",
"created": "Mon, 07 Nov 2011 13:37:47 GMT",
"pgfnum": "3110"
},
"1": {
"text": "Cribbing user interface elements from servermonitor.root. It's the simplest example of a Bootstrap interface implementation that I have.",
"created": "Mon, 07 Nov 2011 13:40:50 GMT",
"pgfnum": "3111"
},
"2": {
"text": "Got the menu and user-level prefs working properly. They're most of the prefs from beaut.root. Maybe the river and blogging tool shouldn't be that tightly integrated.",
"created": "Mon, 07 Nov 2011 22:26:10 GMT",
"pgfnum": "3112"
},
"3": {
"text": "Radio2 appears in the dropdown menu if it's installed.",
"created": "Mon, 07 Nov 2011 22:30:03 GMT",
"pgfnum": "3115"
},
"4": {
"text": "admin prefs, to set the location of the S3 archive perhaps other things.",
"created": "Mon, 07 Nov 2011 22:29:17 GMT",
"pgfnum": "3114"
},
"5": {
"text": "Todo",
"created": "Mon, 07 Nov 2011 22:29:14 GMT",
"pgfnum": "3113"
},
"6": {
"text": "Parts",
"created": "Mon, 07 Nov 2011 22:39:47 GMT",
"pgfnum": "3116",
"subs": {
"0": {
"text": "radio2Suite.data.prefsOutline"
},
"1": {
"text": "radio2Suite.viewMenu"
},
"2": {
"text": "radio2Website.[\"#template\"]"
},
"3": {
"text": "radio2Website.prefs"
},
"4": {
"text": "webApp.viewMenu"
},
"5": {
"text": "[\"#installer\"]"
},
"6": {
"text": "radio2Suite.data.prefsForSetup"
},
"7": {
"text": "radio2Suite.utilities.validateS3path"
},
"8": {
"text": "radio2Suite.init"
},
"9": {
"text": "radio2Suite.menuCommands.setDomain"
}
}
}
}
},
"2": {
"text": "Updated poets startup doc",
"created": "Mon, 07 Nov 2011 13:33:14 GMT",
"pgfnum": "3105",
"type": "blogpost",
"subs": {
"0": {
"text": "Include specific setup information for people wanting to run Radio2 and River2.",
"created": "Mon, 07 Nov 2011 13:33:29 GMT",
"pgfnum": "3106"
},
"1": {
"text": "http://poetstartup.blorkmark.com/",
"created": "Mon, 07 Nov 2011 13:35:01 GMT",
"pgfnum": "3108"
},
"2": {
"text": "Now I'd better get Radio2 in shape for a standalone install.",
"created": "Mon, 07 Nov 2011 13:33:43 GMT",
"pgfnum": "3107"
}
}
}
}
},
"21": {
"text": "11/6/11 by DW",
"created": "Sun, 06 Nov 2011 14:31:44 GMT",
"pgfnum": "3050",
"subs": {
"0": {
"text": "Important setup howto",
"created": "Mon, 07 Nov 2011 02:06:27 GMT",
"pgfnum": "3091",
"type": "blogpost",
"subs": {
"0": {
"text": "We should be telling people about the Prefs at the opmlEditor level. In particular three prefs, are very important:",
"created": "Mon, 07 Nov 2011 02:06:32 GMT",
"pgfnum": "3092"
},
"1": {
"text": "1. External name.",
"created": "Mon, 07 Nov 2011 02:07:02 GMT",
"pgfnum": "3093"
},
"2": {
"text": "2. Static files.",
"created": "Mon, 07 Nov 2011 02:07:12 GMT",
"pgfnum": "3094"
},
"3": {
"text": "3. Amazon S3.",
"created": "Mon, 07 Nov 2011 02:09:34 GMT",
"pgfnum": "3095"
},
"4": {
"text": "If you're using Radio2 or generating static rivers in River2, S3 is pretty much a requirement. We will store files locally, and they will be served by the server built into the OPML Editor, but this really isn't well-debugged. You will almost certainly hit problems. Maybe not forever, but for now.",
"created": "Mon, 07 Nov 2011 02:09:52 GMT",
"pgfnum": "3096"
},
"5": {
"text": "This advice is something we must link to from the OPML install page, and the pages for the tool installs that depend on it.",
"created": "Mon, 07 Nov 2011 02:11:59 GMT",
"pgfnum": "3097"
},
"6": {
"text": "Also, make sure the system clock is set correctly on your server, if it's not some S3 operations will fail.",
"created": "Mon, 07 Nov 2011 02:20:54 GMT",
"pgfnum": "3099"
},
"7": {
"text": "This worknote is not the howto.",
"created": "Mon, 07 Nov 2011 02:12:20 GMT",
"pgfnum": "3098"
}
}
},
"1": {
"text": "World outline rivers render in a new way",
"created": "Mon, 07 Nov 2011 01:12:59 GMT",
"pgfnum": "3080",
"type": "blogpost",
"subs": {
"0": {
"text": "I didn't like the way rivers look in worldoutlines, so I made them look the way they look when generated by river2.root. Instead of rendering in the template for the world outline, they render in the beautiful river template, exactly.",
"created": "Mon, 07 Nov 2011 01:13:07 GMT",
"pgfnum": "3081"
},
"1": {
"text": "How to test",
"created": "Mon, 07 Nov 2011 01:13:22 GMT",
"pgfnum": "3082",
"subs": {
"0": {
"text": "On your server, update both beaut.root and worldOutline.root.",
"created": "Mon, 07 Nov 2011 01:14:28 GMT",
"pgfnum": "3083"
},
"1": {
"text": "View a river node.",
"created": "Mon, 07 Nov 2011 01:14:39 GMT",
"pgfnum": "3084"
},
"2": {
"text": "Does it work? Does it look like the rivers that are produced by river2.root?",
"created": "Mon, 07 Nov 2011 01:14:44 GMT",
"pgfnum": "3085"
}
}
},
"2": {
"text": "Caveats",
"created": "Mon, 07 Nov 2011 01:15:01 GMT",
"pgfnum": "3086",
"subs": {
"0": {
"text": "If you add attributes to the river nodes called description and opmlUrl, they will appear correctly.",
"created": "Mon, 07 Nov 2011 01:15:03 GMT",
"pgfnum": "3087"
},
"1": {
"text": "Otherwise they will be blank.",
"created": "Mon, 07 Nov 2011 01:17:21 GMT",
"pgfnum": "3090"
}
}
},
"3": {
"text": "Parts",
"created": "Mon, 07 Nov 2011 01:15:33 GMT",
"pgfnum": "3088",
"subs": {
"0": {
"text": "worldOutlineSuite.data.urls.staticRiverTemplate"
},
"1": {
"text": "worldOutlineSuite.viewRiverCallback"
},
"2": {
"text": "worldOutlineSuite.background.everyMinute"
},
"3": {
"text": "worldOutlineSuite.init"
},
"4": {
"text": "beautSuite.init"
}
}
}
}
},
"2": {
"text": "Rivers in the world outline look like crap",
"created": "Sun, 06 Nov 2011 19:29:04 GMT",
"pgfnum": "3071",
"subs": {
"0": {
"text": "I want my rivers to look nice.",
"created": "Sun, 06 Nov 2011 19:29:11 GMT",
"pgfnum": "3072"
},
"1": {
"text": "So I've taken the static river template, and turned it into an OPML file.",
"created": "Sun, 06 Nov 2011 19:29:18 GMT",
"pgfnum": "3073"
},
"2": {
"text": "http://dropbox.scripting.com/dave/worldOutline/staticRiverTemplate.opml",
"created": "Sun, 06 Nov 2011 19:34:49 GMT",
"pgfnum": "3074"
},
"3": {
"text": "There are a few parameters:",
"created": "Sun, 06 Nov 2011 19:34:59 GMT",
"pgfnum": "3075",
"subs": {
"0": {
"text": "<%title%>",
"created": "Sun, 06 Nov 2011 19:35:06 GMT",
"pgfnum": "3076"
},
"1": {
"text": "<%description%>",
"created": "Sun, 06 Nov 2011 19:35:13 GMT",
"pgfnum": "3077"
},
"2": {
"text": "<%opmlUrl%>",
"created": "Sun, 06 Nov 2011 19:35:19 GMT",
"pgfnum": "3078"
},
"3": {
"text": "<%jsonUrl%>",
"created": "Sun, 06 Nov 2011 19:35:25 GMT",
"pgfnum": "3079"
}
}
}
}
},
"3": {
"text": "Radio2 fixes",
"created": "Sun, 06 Nov 2011 15:28:21 GMT",
"pgfnum": "3062",
"type": "blogpost",
"subs": {
"0": {
"text": "A bunch of small fixes needed to get Radio2 to boot up in a clean install, depending on no other tools.",
"created": "Sun, 06 Nov 2011 15:28:49 GMT",
"pgfnum": "3065"
},
"1": {
"text": "Where I stopped, for now, I am able to create posts, but the feed is not being generated. Presumably because I haven't set things up for S3. The question is should I store the stuff locally? I don't think so. I think you should create some space on S3. Then we should develop something open source that stands alongside S3 and plugs in in its place. Choice is a big deal.",
"created": "Sun, 06 Nov 2011 16:19:25 GMT",
"pgfnum": "3068"
},
"2": {
"text": "Parts",
"created": "Sun, 06 Nov 2011 15:28:29 GMT",
"pgfnum": "3063",
"subs": {
"0": {
"text": "radio2Suite.initUser"
},
"1": {
"text": "radio2Suite.background.everyMinute",
"created": "Sun, 06 Nov 2011 16:10:16 GMT",
"pgfnum": "3067"
},
"2": {
"text": "radio2Suite.buildCommunityOpml"
},
"3": {
"text": "radio2Suite.publish"
},
"4": {
"text": "radio2Suite.securityChallenge"
},
"5": {
"text": "radio2Suite.utilities.fastBackup"
},
"6": {
"text": "radio2Suite.utilities.initRiver2User"
}
}
}
}
},
"4": {
"text": "Setting up a fresh Radio2",
"created": "Sun, 06 Nov 2011 00:23:20 GMT",
"pgfnum": "3035",
"type": "blogpost",
"subs": {
"0": {
"text": "Les Orchard hit problems installing a fresh Radio2. I'm going to do it myself and see what problems I hit and see if I can fix them.",
"created": "Sun, 06 Nov 2011 00:23:29 GMT",
"pgfnum": "3036"
},
"1": {
"text": "The original howto, which I'm going to rewrite.",
"created": "Sun, 06 Nov 2011 14:32:28 GMT",
"pgfnum": "3053"
},
"2": {
"text": "I want to run a new instance because I need a howto for setting the Admin password. This should be linked into the basic howto for the OPML Editor.",
"created": "Sun, 06 Nov 2011 14:38:41 GMT",
"pgfnum": "3054"
},
"3": {
"text": "What I did",
"created": "Sun, 06 Nov 2011 00:24:59 GMT",
"pgfnum": "3037",
"subs": {
"0": {
"text": "Created a fresh AWS instance for testing.",
"created": "Sun, 06 Nov 2011 14:32:01 GMT",
"pgfnum": "3052",
"subs": {
"0": {
"text": "The server is argentina.scripting.com. The test radio domain is tmp22.scripting.com.",
"created": "Sun, 06 Nov 2011 14:59:18 GMT",
"pgfnum": "3056"
}
}
},
"1": {
"text": "Choose Tool Catalog from the Misc menu.",
"created": "Sun, 06 Nov 2011 00:30:23 GMT",
"pgfnum": "3038"
},
"2": {
"text": "Clicked Install next to radio2.root.",
"created": "Sun, 06 Nov 2011 00:30:32 GMT",
"pgfnum": "3039",
"subs": {
"0": {
"text": "It installed, but no web page came to front. It would be nice if one did, explaining where I should go from there.",
"created": "Sun, 06 Nov 2011 00:30:42 GMT",
"pgfnum": "3040"
}
}
},
"3": {
"text": "Realized I should be following the Howto on the Frontier News site.",
"created": "Sun, 06 Nov 2011 00:33:12 GMT",
"pgfnum": "3042",
"subs": {
"0": {
"text": "The domain for this server is tmp22.scripting.com.",
"created": "Sun, 06 Nov 2011 00:33:51 GMT",
"pgfnum": "3043"
}
}
},
"4": {
"text": "When I set the domain per the howto, nothing happened. I should get taken to a web page.",
"created": "Sun, 06 Nov 2011 15:13:49 GMT",
"pgfnum": "3057"
},
"5": {
"text": "When I go to the domain assigned to radio, this is what I see. Obviously this needs to be incorporated into the new user interface regime.",
"created": "Sun, 06 Nov 2011 15:14:07 GMT",
"pgfnum": "3058"
},
"6": {
"text": "When I sign in as \"admin\" I get an error indicating that it doesn't know about admin. Easy fix.",
"created": "Sun, 06 Nov 2011 15:17:26 GMT",
"pgfnum": "3059"
}
}
}
}
}
}
},
"22": {
"text": "11/5/11 by DW",
"created": "Sat, 05 Nov 2011 17:42:55 GMT",
"pgfnum": "3023",
"subs": {
"0": {
"text": "A site for mapping a blorkmark",
"created": "Sun, 06 Nov 2011 00:34:27 GMT",
"pgfnum": "3044",
"subs": {
"0": {
"text": "Why not let the world point at things with blorkmarks.",
"created": "Sun, 06 Nov 2011 00:34:33 GMT",
"pgfnum": "3045"
}
}
},
"1": {
"text": "Static rivers prefs",
"created": "Sat, 05 Nov 2011 17:42:57 GMT",
"pgfnum": "3024",
"type": "blogpost"
}
}
},
"23": {
"text": "11/3/11 by DW",
"created": "Thu, 03 Nov 2011 13:20:50 GMT",
"pgfnum": "3011",
"subs": {
"0": {
"text": "Track which user created which outline",
"created": "Thu, 03 Nov 2011 14:07:36 GMT",
"pgfnum": "3023",
"type": "blogpost",
"subs": {
"0": {
"text": "In the user table on the worldoutline server, we keep a new table called \"archive\" which has a sub-table for each outline the user has added to his archive. At some point we're going to need to know which user created which outline, and also provide a list of all outlines we're maintaining for that user. Better start tracking this now.",
"created": "Thu, 03 Nov 2011 14:07:49 GMT",
"pgfnum": "3024"
},
"1": {
"text": "How to test",
"created": "Thu, 03 Nov 2011 14:15:48 GMT",
"pgfnum": "3027",
"subs": {
"0": {
"text": "Update worldOutline.root on the server.",
"created": "Thu, 03 Nov 2011 14:15:52 GMT",
"pgfnum": "3028"
},
"1": {
"text": "Archive an outline. Verify that it works.",
"created": "Thu, 03 Nov 2011 14:15:59 GMT",
"pgfnum": "3029"
},
"2": {
"text": "Save an archived outline. Verify.",
"created": "Thu, 03 Nov 2011 14:16:06 GMT",
"pgfnum": "3030"
}
}
},
"2": {
"text": "Parts",
"created": "Thu, 03 Nov 2011 14:08:51 GMT",
"pgfnum": "3025",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser",
"created": "Thu, 03 Nov 2011 14:08:52 GMT",
"pgfnum": "3026"
},
"1": {
"text": "worldOutlineRpcHandlers.archiveOutline"
}
}
}
}
},
"1": {
"text": "Save local copies of archived outlines",
"created": "Thu, 03 Nov 2011 13:20:51 GMT",
"pgfnum": "3012",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/03/archive012.opml",
"subs": {
"0": {
"text": "I don't trust the server, and want to keep a copy of all the outlines I archive.",
"created": "Thu, 03 Nov 2011 13:21:06 GMT",
"pgfnum": "3013"
},
"1": {
"text": "There are new prefs in user.opmleditor.worldoutline. You can disable the feature, and change the folder it saves to. An obvious choice would be a Dropbox folder.",
"created": "Thu, 03 Nov 2011 13:52:28 GMT",
"pgfnum": "3020"
},
"2": {
"text": "Each file updates when you save an edit.",
"created": "Thu, 03 Nov 2011 13:53:21 GMT",
"pgfnum": "3022"
},
"3": {
"text": "Parts",
"created": "Thu, 03 Nov 2011 13:21:20 GMT",
"pgfnum": "3014",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.init",
"created": "Thu, 03 Nov 2011 13:21:21 GMT",
"pgfnum": "3015"
},
"1": {
"text": "opmlEditor.worldOutline.saveOutlineInLocalArchive"
},
"2": {
"text": "opmlEditor.worldOutline.saveArchivedOutline"
},
"3": {
"text": "opmlEditor.worldOutline.archiveSubOutline"
}
}
}
}
}
}
},
"24": {
"text": "11/2/11 by DW",
"created": "Wed, 02 Nov 2011 13:50:08 GMT",
"pgfnum": "2969",
"subs": {
"0": {
"text": "River2 bug importing OPML",
"created": "Wed, 02 Nov 2011 16:56:46 GMT",
"pgfnum": "2990",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive004.opml",
"subs": {
"0": {
"text": "When garbage-collection was introduced, we created a problem for people who import OPML subscription lists into River2.",
"created": "Wed, 02 Nov 2011 16:56:58 GMT",
"pgfnum": "2991"
},
"1": {
"text": "A subscription must be associated with a user or else the subscription will be collected. This happened to Les. He would subscribe to an OPML list, and it would work, but on the next scan it would be collected.",
"created": "Wed, 02 Nov 2011 16:57:18 GMT",
"pgfnum": "2992"
},
"2": {
"text": "This happens when you import the OPML instead of subscribing to it, which is how I use the app, which is why I didn't catch this error.",
"created": "Wed, 02 Nov 2011 16:58:14 GMT",
"pgfnum": "2993"
},
"3": {
"text": "This is why we need a number of serious users who use the product in different ways to monitor problems after big changes.",
"created": "Wed, 02 Nov 2011 16:58:37 GMT",
"pgfnum": "2994"
},
"4": {
"text": "But this is definitely a good bug to fix! :-)",
"created": "Wed, 02 Nov 2011 16:59:02 GMT",
"pgfnum": "2995"
},
"5": {
"text": "How to test",
"created": "Wed, 02 Nov 2011 17:00:24 GMT",
"pgfnum": "2998",
"subs": {
"0": {
"text": "Bring river2.root to the front and choose Update front Tool from the Tools menu.",
"created": "Wed, 02 Nov 2011 17:01:20 GMT",
"pgfnum": "3000"
},
"1": {
"text": "Choose Import OPML from the River2 sub-menu of the Tools menu in the OPML Editor. Wait for the next scan, and look at the log. Did it unsubscribe from the feeds in the OPML? Then the fix didn't work. If the feeds were read properly, the fix did work.",
"created": "Wed, 02 Nov 2011 17:00:26 GMT",
"pgfnum": "2999"
}
}
},
"6": {
"text": "Parts",
"created": "Wed, 02 Nov 2011 16:59:17 GMT",
"pgfnum": "2996",
"subs": {
"0": {
"text": "river2Suite.opmlImport",
"created": "Wed, 02 Nov 2011 16:59:18 GMT",
"pgfnum": "2997"
}
}
}
}
},
"1": {
"text": "droidie.com",
"created": "Wed, 02 Nov 2011 14:07:31 GMT",
"pgfnum": "2982",
"type": "include",
"url": "http://s3.amazonaws.com/static.reallysimple.org/worldoutline/dave/2011/11/02/archive002.opml",
"subs": {
"0": {
"text": "I'm letting this domain go. If you want to buy it, let me know.",
"created": "Wed, 02 Nov 2011 14:07:34 GMT",
"pgfnum": "2983"
},
"1": {
"text": "In the meantime I'm going to permanently redirect it to droidie.wordpress.com.",
"created": "Wed, 02 Nov 2011 14:07:44 GMT",
"pgfnum": "2984"
}
}
},
"2": {
"text": "Making world outlining easier",
"created": "Wed, 02 Nov 2011 14:00:50 GMT",
"pgfnum": "2976",
"type": "blogpost",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive009.opml"
},
"3": {
"text": "Fixed encoding problem in River2",
"created": "Wed, 02 Nov 2011 13:50:09 GMT",
"pgfnum": "2970",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive003.opml",
"subs": {
"0": {
"text": "Reported by Les Orchard on the River2 mail list.",
"created": "Wed, 02 Nov 2011 13:50:24 GMT",
"pgfnum": "2971"
},
"1": {
"text": "I love bug reports that not only describe the problem in perfect detail, but also provide the coding fix.",
"created": "Wed, 02 Nov 2011 13:50:37 GMT",
"pgfnum": "2972"
},
"2": {
"text": "It's great to have Les back in the loop. Let's build momentum.",
"created": "Wed, 02 Nov 2011 13:51:02 GMT",
"pgfnum": "2973"
},
"3": {
"text": "Parts",
"created": "Wed, 02 Nov 2011 13:51:17 GMT",
"pgfnum": "2974",
"subs": {
"0": {
"text": "river2Suite.viewJsonNews3",
"created": "Wed, 02 Nov 2011 13:51:18 GMT",
"pgfnum": "2975"
}
}
}
}
}
}
},
"25": {
"text": "11/1/11 by DW",
"created": "Tue, 01 Nov 2011 14:06:03 GMT",
"pgfnum": "2953",
"subs": {
"0": {
"text": "Add OPML link to linkblog feed",
"created": "Tue, 01 Nov 2011 15:32:36 GMT",
"pgfnum": "2964",
"type": "blogpost",
"subs": {
"0": {
"text": "Very powerful connection between scripting2 and radio2.",
"created": "Tue, 01 Nov 2011 15:32:44 GMT",
"pgfnum": "2965"
},
"1": {
"text": "Parts",
"created": "Tue, 01 Nov 2011 15:57:12 GMT",
"pgfnum": "2967",
"subs": {
"0": {
"text": "radio2Suite.setPostOpmlSourceLink"
},
"1": {
"text": "radio2Suite.buildRss"
},
"2": {
"text": "radio2Suite.newPost"
}
}
}
}
},
"1": {
"text": "davewiner.com",
"created": "Tue, 01 Nov 2011 15:12:24 GMT",
"pgfnum": "2962",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive007.opml",
"subs": {
"0": {
"text": "Make it point to my bio in the blogroll.",
"created": "Tue, 01 Nov 2011 15:12:27 GMT",
"pgfnum": "2963"
}
}
},
"2": {
"text": "Fix up chime.in account, announce it",
"created": "Tue, 01 Nov 2011 15:09:33 GMT",
"pgfnum": "2960",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive006.opml",
"subs": {
"0": {
"text": "http://scripting.com/stories/2011/11/01/imUsingChimein.html",
"created": "Tue, 01 Nov 2011 15:09:40 GMT",
"pgfnum": "2961",
"type": "link",
"url": "http://scripting.com/stories/2011/11/01/imUsingChimein.html"
}
}
},
"3": {
"text": "hypercamp.org",
"created": "Tue, 01 Nov 2011 14:06:09 GMT",
"pgfnum": "2954",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive005.opml",
"subs": {
"0": {
"text": "Due to expire later this week.",
"created": "Tue, 01 Nov 2011 14:06:15 GMT",
"pgfnum": "2955"
},
"1": {
"text": "Permanent redirect to safe.scripting.com/hypercampOrg",
"created": "Tue, 01 Nov 2011 14:06:21 GMT",
"pgfnum": "2956"
}
}
},
"4": {
"text": "hosting.opml.org",
"created": "Tue, 01 Nov 2011 15:08:03 GMT",
"pgfnum": "2958",
"subs": {
"0": {
"text": "Move it to S3 bucket. Set it and forget it.",
"created": "Tue, 01 Nov 2011 15:08:07 GMT",
"pgfnum": "2959"
}
}
}
}
},
"26": {
"text": "11/13/11; 10:37:50 AM by DW",
"created": "Sun, 13 Nov 2011 15:52:47 GMT",
"pgfnum": "3307",
"subs": {
"0": {
"text": "Screen shot of today's radio2.",
"created": "Sun, 13 Nov 2011 15:52:51 GMT",
"pgfnum": "3308",
"type": "redirect",
"url": "http://worknotes.scripting.com/november2011/111311ByDw/screenShotOfTodaysRadio2"
}
}
}
}
},
"19": {
"created": "Sat, 01 Oct 2011 11:33:27 GMT",
"pgfnum": "2505",
"text": "October 2011",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/11/02/archive008.opml",
"subs": {
"0": {
"text": "10/30/11 by DW",
"created": "Mon, 31 Oct 2011 02:11:04 GMT",
"pgfnum": "2923",
"subs": {
"0": {
"text": "east-village.org",
"created": "Mon, 31 Oct 2011 02:11:05 GMT",
"pgfnum": "2924",
"subs": {
"0": {
"text": "1. copy content to safe.scripting.com/eastVillageOrg",
"created": "Mon, 31 Oct 2011 02:14:44 GMT",
"pgfnum": "2931",
"subs": {
"0": {
"text": "It was hosted on joemontana.",
"created": "Mon, 31 Oct 2011 02:25:38 GMT",
"pgfnum": "2932"
}
}
},
"1": {
"text": "2. map it to pensacola.",
"created": "Mon, 31 Oct 2011 02:12:53 GMT",
"pgfnum": "2928",
"subs": {
"0": {
"text": "tcp.dns.getdottedid (\"pensacola.scripting.com\") //joemontana",
"created": "Mon, 31 Oct 2011 02:11:16 GMT",
"pgfnum": "2925",
"subs": {}
}
}
},
"2": {
"text": "3. turn off auto-renew. (expires 2/4/12)",
"created": "Mon, 31 Oct 2011 02:13:53 GMT",
"pgfnum": "2930"
},
"3": {
"text": "4. redirect it to safe.scripting.com/eastVillageOrg",
"created": "Mon, 31 Oct 2011 02:13:04 GMT",
"pgfnum": "2929"
}
}
},
"1": {
"text": "domains for sale",
"created": "Mon, 31 Oct 2011 02:11:23 GMT",
"pgfnum": "2926",
"type": "blogpost",
"subs": {
"0": {
"text": "As part of my house-cleaning on GoDaddy, I'm putting some domains up for sale.",
"created": "Mon, 31 Oct 2011 01:49:49 GMT",
"pgfnum": "10629"
},
"1": {
"text": "Here's the list so far:",
"created": "Mon, 31 Oct 2011 01:50:18 GMT",
"pgfnum": "10630"
},
"2": {
"text": "http://nyblogs.org/",
"created": "Mon, 31 Oct 2011 01:50:22 GMT",
"pgfnum": "10631"
},
"3": {
"text": "http://reallysimplephoto.com/",
"created": "Mon, 31 Oct 2011 01:50:27 GMT",
"pgfnum": "10632"
},
"4": {
"text": "http://realtimerss.net/",
"created": "Mon, 31 Oct 2011 01:55:11 GMT",
"pgfnum": "10633"
},
"5": {
"text": "http://qwitter.us/",
"created": "Mon, 31 Oct 2011 01:55:11 GMT",
"pgfnum": "10633"
},
"6": {
"text": "http://checkboxnews.com/",
"created": "Mon, 31 Oct 2011 01:55:11 GMT",
"pgfnum": "10633"
}
}
}
}
},
"1": {
"text": "10/28/11 by DW",
"created": "Fri, 28 Oct 2011 05:49:25 GMT",
"pgfnum": "2802",
"subs": {
"0": {
"text": "Cleaning up DNS, cont'd",
"created": "Fri, 28 Oct 2011 21:02:29 GMT",
"pgfnum": "2904",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a very good thing to do.",
"created": "Fri, 28 Oct 2011 21:02:34 GMT",
"pgfnum": "2905"
},
"1": {
"text": "Finally, devoting some time to getting the old sites working, and lowering domain fees as I go. And also making the archives more stable and preservable, by concentrating the content in a few places, and relying less on software and more on static content.",
"created": "Fri, 28 Oct 2011 21:02:39 GMT",
"pgfnum": "2906"
},
"2": {
"text": "I'm trying without luck so far to find the source material for conventionbloggers.com. This was a river for the two conventions in 2004. It's an interesting archive. Pretty sure I was the only one doing this in 2004.",
"created": "Fri, 28 Oct 2011 21:03:35 GMT",
"pgfnum": "2907"
},
"3": {
"text": "Along the way I found the one-page archive of craigclinefriends.com. I'm going to use this as a prototype for the mothballing of a site that I'd like to see exist for a long time to come.",
"created": "Fri, 28 Oct 2011 21:04:27 GMT",
"pgfnum": "2908",
"subs": {
"0": {
"text": "First thing is that the domain no longer points at the source content. So presumably it isn't in Google's index.",
"created": "Fri, 28 Oct 2011 21:04:58 GMT",
"pgfnum": "2909"
},
"1": {
"text": "It's all fucked up in Google, showing info about \"trackpro index\" that is the content that's hosted on the site that it's pointing to now.",
"created": "Fri, 28 Oct 2011 21:06:13 GMT",
"pgfnum": "2910"
},
"2": {
"text": "What a shitty way to care for the memorial to someone you love! Oy. (But I'm sure he'd understand, and think it's funny.)",
"created": "Fri, 28 Oct 2011 21:07:59 GMT",
"pgfnum": "2911"
},
"3": {
"text": "On Godaddy, I set it so that craigclinefriends.com is not on auto-renew. It will expire in Sept 2013, and we're going to let it. Do not renew.",
"created": "Fri, 28 Oct 2011 21:08:35 GMT",
"pgfnum": "2912"
},
"4": {
"text": "On Godaddy, I pointed it at 184.106.99.108, which is \"pensacola\" which is my redirect server.",
"created": "Fri, 28 Oct 2011 21:12:09 GMT",
"pgfnum": "2913"
},
"5": {
"text": "tcp.dns.getdottedid (\"hosting.opml.org\")",
"created": "Fri, 28 Oct 2011 21:19:24 GMT",
"pgfnum": "2915",
"subs": {}
},
"6": {
"text": "All done. Check back later and make sure it's redirecting from my desktop, and check periodically to see how quickly Google picks it up.",
"created": "Fri, 28 Oct 2011 21:30:14 GMT",
"pgfnum": "2916"
}
}
}
}
},
"1": {
"text": "Hover has an API",
"created": "Fri, 28 Oct 2011 13:28:27 GMT",
"pgfnum": "2899",
"subs": {
"0": {
"text": "They say, via email: \"The web interface you're using on Hover is mostly just a Javascript interface to a REST API that does all this.\"",
"created": "Fri, 28 Oct 2011 13:28:31 GMT",
"pgfnum": "2900"
},
"1": {
"text": "That, of course, is a good answer.",
"created": "Fri, 28 Oct 2011 13:29:53 GMT",
"pgfnum": "2901"
},
"2": {
"text": "There need to be rudimentary docs to get started.",
"created": "Fri, 28 Oct 2011 21:02:01 GMT",
"pgfnum": "2903"
}
}
},
"2": {
"text": "Use-case for buttons on table windows",
"created": "Fri, 28 Oct 2011 05:47:31 GMT",
"pgfnum": "2796",
"type": "blogpost",
"subs": {
"0": {
"text": "1. Choose View Attributes from the Outliner menu.",
"created": "Fri, 28 Oct 2011 05:47:39 GMT",
"pgfnum": "2797"
},
"1": {
"text": "2. Edit any of the attribute values or names, delete or add atts.",
"created": "Fri, 28 Oct 2011 05:47:52 GMT",
"pgfnum": "2798"
},
"2": {
"text": "3. Click the Save button at the top of the window.",
"created": "Fri, 28 Oct 2011 05:48:17 GMT",
"pgfnum": "2799"
},
"3": {
"text": "That's how the attribute editor will work.",
"created": "Fri, 28 Oct 2011 05:48:36 GMT",
"pgfnum": "2800"
},
"4": {
"text": "It'll take a few minutes to write the code.",
"created": "Fri, 28 Oct 2011 05:49:02 GMT",
"pgfnum": "2801"
}
}
},
"3": {
"text": "Cleanup after domain transfer",
"created": "Fri, 28 Oct 2011 05:49:36 GMT",
"pgfnum": "2804",
"type": "blogpost",
"subs": {
"0": {
"text": "Yesterday I transferred five domains from Godaddy to Hover.com.",
"created": "Fri, 28 Oct 2011 05:49:41 GMT",
"pgfnum": "2805",
"subs": {
"0": {
"text": "davecast.org"
},
"1": {
"text": "davelinks.com"
},
"2": {
"text": "daveriver.com",
"subs": {
"0": {
"text": "Redirect to http://daveriver.scripting.com/.",
"created": "Fri, 28 Oct 2011 07:33:18 GMT",
"pgfnum": "2896"
}
}
},
"3": {
"text": "lifeliner.org",
"created": "Fri, 28 Oct 2011 05:51:11 GMT",
"pgfnum": "2809"
},
"4": {
"text": "davewiner.com",
"subs": {
"0": {
"text": "Mapping this to the About the Author section of my blogroll, through a redirect.",
"created": "Fri, 28 Oct 2011 06:02:22 GMT",
"pgfnum": "2813"
}
}
}
}
},
"1": {
"text": "It was much easier than the transfer into Godaddy from EasyDNS.",
"created": "Fri, 28 Oct 2011 05:49:54 GMT",
"pgfnum": "2806"
},
"2": {
"text": "Each transfer cost $10. That gets you another year of registration on top of what was remaining at Godaddy.",
"created": "Fri, 28 Oct 2011 05:51:18 GMT",
"pgfnum": "2810"
},
"3": {
"text": "However, I forgot to check before transferring the domains if they actually pointed anywhere. I'm going to point them all to the world outline, so I can distribute from there. I also have to find out how to set the nameservers for the domains that haven't already had them set.",
"created": "Fri, 28 Oct 2011 05:50:13 GMT",
"pgfnum": "2807",
"subs": {
"0": {
"text": "tcp.dns.getdottedid (\"worldoutline.scripting.com\")",
"created": "Fri, 28 Oct 2011 05:53:03 GMT",
"pgfnum": "2811",
"subs": {}
}
}
},
"4": {
"text": "All the domains except lifeliner.org were already being managed by Amazon's Interstate 53.",
"created": "Fri, 28 Oct 2011 05:56:22 GMT",
"pgfnum": "2812"
}
}
}
}
},
"2": {
"text": "10/27/11 by DW",
"created": "Thu, 27 Oct 2011 21:14:26 GMT",
"pgfnum": "2788",
"subs": {
"0": {
"text": "Chrome supported",
"created": "Thu, 27 Oct 2011 21:14:26 GMT",
"pgfnum": "2789",
"type": "blogpost",
"subs": {
"0": {
"text": "AC wrote on a mail list the other day that Chrome isn't supported \"out of the box\" by OPML. That's ridiculous.",
"created": "Thu, 27 Oct 2011 21:19:19 GMT",
"pgfnum": "2792"
},
"1": {
"text": "In webBrowser.supportedBrowsers, added Chrome's creator ID, 'rimZ', to the list of supported browsers. This means that if Chrome is running when you're starting up for the first time, that OPML will use it as your default browser.",
"created": "Thu, 27 Oct 2011 21:14:58 GMT",
"pgfnum": "2791"
},
"2": {
"text": "On Windows, added \"firefox.exe\" and \"chrome.exe\" to the list. Seems we ought to have a few others as well.",
"created": "Thu, 27 Oct 2011 21:32:05 GMT",
"pgfnum": "2794"
}
}
}
}
},
"3": {
"text": "10/26/11 by DW",
"created": "Wed, 26 Oct 2011 13:18:44 GMT",
"pgfnum": "2769",
"subs": {
"0": {
"text": "How big can blorkmarks grow?",
"created": "Wed, 26 Oct 2011 13:18:45 GMT",
"pgfnum": "2770",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a comment in s3.route53.readme that says: \"Also limits of 100 domains and 100 records, though both limits can easily be removed.\" I couldn't figure out why the last part was there. So I wrote a test script to create 150 new records in davecast.org.",
"created": "Wed, 26 Oct 2011 13:18:50 GMT",
"pgfnum": "2771"
},
"1": {
"text": "The records appear to have been created correctly. Now let's make sure they resolve correctly. (They do.)",
"created": "Wed, 26 Oct 2011 13:20:29 GMT",
"pgfnum": "2772"
},
"2": {
"text": "So I'd say that at least for creating, there is no limit of 100 records",
"created": "Wed, 26 Oct 2011 13:53:38 GMT",
"pgfnum": "2773"
}
}
}
}
},
"4": {
"text": "10/24/11 by DW",
"created": "Mon, 24 Oct 2011 22:22:44 GMT",
"pgfnum": "2744",
"subs": {
"0": {
"text": "Inclusion for Howtos",
"created": "Mon, 24 Oct 2011 22:54:40 GMT",
"pgfnum": "2760",
"type": "blogpost",
"subs": {
"0": {
"text": "The problem I stated yesterday in such a vexing manner actually had quite a simple solution. I just had to think about it and then look for prior art, and when I did, I found it, and boom, it took five minutes to implement.",
"created": "Mon, 24 Oct 2011 22:54:46 GMT",
"pgfnum": "2761"
},
"1": {
"text": "The prior art. A blogpost nodetype can have an optional url attribute. If present, it behaves like the url attribute in an include node. I did the same thing for howto nodes.",
"created": "Mon, 24 Oct 2011 22:55:27 GMT",
"pgfnum": "2762"
},
"2": {
"text": "So if there's no url, the howto works as it always did. If there is a url, when rendering, first we fetch the outline being pointed to, and move the rendering cursor into it.",
"created": "Mon, 24 Oct 2011 22:57:20 GMT",
"pgfnum": "2763"
},
"3": {
"text": "Note there were two possible approaches here. We could have had the title be in the main outline, and the items in the included file would be the top level heads. Or the item in the main outline could just be a pointer, and the top headline in the pointed-to outline contains all the attributes and the title, and its top level heads are the sections of the howto. I went with the latter approach.",
"created": "Mon, 24 Oct 2011 22:57:57 GMT",
"pgfnum": "2764"
},
"4": {
"text": "The one exception is the domain attribute. If you want to point a domain at the node, point it to the node in the main outline. I just tried it and it resolves correctly.",
"created": "Mon, 24 Oct 2011 22:59:17 GMT",
"pgfnum": "2765"
},
"5": {
"text": "http://indirecthowto.blorkmark.com/",
"created": "Mon, 24 Oct 2011 23:01:47 GMT",
"pgfnum": "2766"
},
"6": {
"text": "Parts",
"created": "Mon, 24 Oct 2011 23:01:56 GMT",
"pgfnum": "2767",
"subs": {
"0": {
"text": "howto2Suite.renderSubOutline"
}
}
}
}
},
"1": {
"text": "MenuLand",
"created": "Mon, 24 Oct 2011 22:22:45 GMT",
"pgfnum": "2745",
"type": "blogpost",
"subs": {
"0": {
"text": "Did you ever notice that a menu bar and an outline are very similar things?",
"created": "Mon, 24 Oct 2011 22:23:01 GMT",
"pgfnum": "2746"
},
"1": {
"text": "Well, of course you did, if you use the OPML Editor, you know that we use the outliner to edit menus.",
"created": "Mon, 24 Oct 2011 22:23:19 GMT",
"pgfnum": "2747"
},
"2": {
"text": "So, wouldn't it be nice to say that in this section of the World Outline, I want the items at this level to be commands in the menu?",
"created": "Mon, 24 Oct 2011 22:23:34 GMT",
"pgfnum": "2748"
},
"3": {
"text": "Sounds weird, yes?",
"created": "Mon, 24 Oct 2011 22:24:07 GMT",
"pgfnum": "2749"
},
"4": {
"text": "Here's a demo. If you go to my scratchpad section and click on the MenuLand item, you'll see that the menu changes to contain the top level items, East, West, North, South. Where ever you go in that section they remain constant.",
"created": "Mon, 24 Oct 2011 22:24:12 GMT",
"pgfnum": "2750"
},
"5": {
"text": "I've been thinking about doing this for a while, but what got me off my butt is wanting to use this feature for a section of the occupyweb site.",
"created": "Mon, 24 Oct 2011 22:25:40 GMT",
"pgfnum": "2752"
},
"6": {
"text": "Parts",
"created": "Mon, 24 Oct 2011 22:34:11 GMT",
"pgfnum": "2753",
"subs": {
"0": {
"text": "html.directory.walk"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "worldOutlineSuite.main"
},
"3": {
"text": "worldOutlineSuite.viewMenuFromOutline"
}
}
}
}
}
}
},
"5": {
"text": "10/23/11 by DW",
"created": "Sun, 23 Oct 2011 14:11:08 GMT",
"pgfnum": "2711",
"subs": {
"0": {
"text": "Editing in the world outline is too slow",
"created": "Sun, 23 Oct 2011 14:14:09 GMT",
"pgfnum": "2714",
"type": "blogpost",
"subs": {
"0": {
"text": "My plan was to let the outline grow until it became to unwieldy. And hopefully by that time I would have figured out how to open a new sub-outline and have it be easily edited without having to remember where it was located.",
"created": "Sun, 23 Oct 2011 14:14:17 GMT",
"pgfnum": "2715"
},
"1": {
"text": "That's not the only problem. Suppose I want to have a howto node that's an inclusion. Seems quite reasonable. I am willing to bookmark this outline. Put it in the public folder of my dropbox. Link to it. The assumption is that I'm not going to edit it very often. There are a boatload of problems with this.",
"created": "Sun, 23 Oct 2011 14:15:38 GMT",
"pgfnum": "2716"
},
"2": {
"text": "1. A node can have a single type. It's either a howto or it's an inclusion. At this time there is no way for it to be both an inclusion and a howto.",
"created": "Sun, 23 Oct 2011 14:17:57 GMT",
"pgfnum": "2718"
},
"3": {
"text": "2. I can't blorkmark it. Remember, there's a rule that says that only items in the main outline can be blorkmarked.",
"created": "Sun, 23 Oct 2011 14:18:35 GMT",
"pgfnum": "2719"
},
"4": {
"text": "So some kind of workaround has to be thought up that isn't too egregious to use.",
"created": "Sun, 23 Oct 2011 14:19:05 GMT",
"pgfnum": "2720"
}
}
},
"1": {
"text": "Move more or less completed",
"created": "Sun, 23 Oct 2011 14:11:09 GMT",
"pgfnum": "2712",
"type": "blogpost",
"subs": {
"0": {
"text": "Moving is a major disruption. But my desk is set up. My Internet connection is working. I've got food and a groove is beginning to develop. I'm thinking about next projects to do with the world outline and blork and all my other darling software projects.",
"created": "Sun, 23 Oct 2011 14:11:18 GMT",
"pgfnum": "2713"
}
}
}
}
},
"6": {
"text": "10/12/11 by DW",
"created": "Wed, 12 Oct 2011 12:35:39 GMT",
"pgfnum": "2648",
"subs": {
"0": {
"text": "Build OPML/River2",
"created": "Wed, 12 Oct 2011 12:35:40 GMT",
"fldisquscomments": "true",
"pgfnum": "2649",
"type": "blogpost",
"subs": {
"0": {
"text": "Do a fresh build of the OPML Editor for Mac and Windows.",
"created": "Wed, 12 Oct 2011 12:35:51 GMT",
"pgfnum": "2650",
"subs": {
"0": {
"text": "Test the River2 install on both platforms. Make sure you get a good installation. Let it run for a number of hours, maybe a couple of days.",
"created": "Wed, 12 Oct 2011 12:36:08 GMT",
"pgfnum": "2651"
},
"1": {
"text": "The goal is to be able to start promoting the use of River2 on users' systems.",
"created": "Wed, 12 Oct 2011 12:36:34 GMT",
"pgfnum": "2652"
}
}
},
"1": {
"text": "No more Universal App folder. May include the old app in a folder in the Misc folder, but it isn't expanded.",
"created": "Wed, 12 Oct 2011 12:38:32 GMT",
"pgfnum": "2653"
},
"2": {
"text": "Bump the version number on River2 to 1.0.",
"created": "Wed, 12 Oct 2011 12:48:02 GMT",
"pgfnum": "2655",
"subs": {
"0": {
"text": "We're currently at 0.999. If we were to keep going this way it would have to be 0.9991.",
"created": "Wed, 12 Oct 2011 15:14:51 GMT",
"pgfnum": "2669"
},
"1": {
"text": "Enough!",
"created": "Wed, 12 Oct 2011 15:14:57 GMT",
"pgfnum": "2670"
}
}
},
"3": {
"text": "Done",
"created": "Wed, 12 Oct 2011 14:13:12 GMT",
"pgfnum": "2658",
"subs": {
"0": {
"text": "In River2, the garbage collector is enabled. So when you unsub from one of the default feeds, it will no longer be read in each scan.",
"created": "Wed, 12 Oct 2011 12:45:48 GMT",
"pgfnum": "2654",
"subs": {
"0": {
"text": "It's a preference, that defaults true. So we'll be garbage-collecting on existing servers. Watch out for problems everyone. (What does a problem look like? An app like feedHose or radioReallySimple stops working. But both thos apps should be okay. The former didn't need any changes, because it depends on you subscribing to the feeds manually. And RRS has been updated to work with the garbage-collector.)",
"created": "Wed, 12 Oct 2011 14:20:01 GMT",
"pgfnum": "2660"
},
"1": {
"text": "Run the collector just before doing a scan, if it's enabled.",
"created": "Wed, 12 Oct 2011 14:18:57 GMT",
"pgfnum": "2659"
}
}
},
"1": {
"text": "Initially, the URL for static rivers doesn't work if the IP address is a virtual one. We somehow have to detect this, and either not hot-up the name, or provide a URL that works. As it currently is it looks like a bug. Click the link and you get a connection error.",
"created": "Wed, 12 Oct 2011 12:53:03 GMT",
"pgfnum": "2657",
"subs": {
"0": {
"text": "I may have the proper fix.",
"created": "Wed, 12 Oct 2011 14:55:06 GMT",
"pgfnum": "2663"
},
"1": {
"text": "The root of the problem is the initialization of user.opmlEditor.prefs.server.externalDomainName.",
"created": "Wed, 12 Oct 2011 15:03:12 GMT",
"pgfnum": "2664"
},
"2": {
"text": "We try to initialize it to this value: xxx.",
"created": "Wed, 12 Oct 2011 15:03:31 GMT",
"pgfnum": "2666"
},
"3": {
"text": "But that usually generates a bad name. And then we go ahead and use that name in the URLs we generate, and that's appropriate because that's the whole point of that pref. But it's usually wrong.",
"created": "Wed, 12 Oct 2011 15:03:40 GMT",
"pgfnum": "2667"
},
"4": {
"text": "Why is it usually wrong? Because on desktop machines, routers play funny games with that value. And on cloud servers like Amazon or Rackspace, they have two IP addresses for each machine. Only one of the actually works. I have no clue why they do this, but they do.",
"created": "Wed, 12 Oct 2011 15:04:16 GMT",
"pgfnum": "2668"
},
"5": {
"text": "It seems to me the correct initialization for this is 127.0.0.1 -- we know that works. And until you set the pref in the opmlEditor website, that's the best we can do. We still need you, the sysAdmin, to tell us how to refer to your server.",
"created": "Wed, 12 Oct 2011 15:03:19 GMT",
"pgfnum": "2665"
}
}
},
"2": {
"text": "Remove Fast Company from the initial feeds list. They include small images as enclosures, and River2 downloads them, the downloads show up in the log, and this is confusing.",
"created": "Wed, 12 Oct 2011 12:52:38 GMT",
"pgfnum": "2656"
}
}
},
"4": {
"text": "Parts",
"created": "Wed, 12 Oct 2011 14:52:39 GMT",
"pgfnum": "2661",
"subs": {
"0": {
"text": "river2Suite.init"
},
"1": {
"text": "river2Suite.utilities.feedGarbageCollector"
},
"2": {
"text": "river2Suite.doScanThread"
},
"3": {
"text": "river2Info"
},
"4": {
"text": "opmlEditor.init"
}
}
}
}
}
}
},
"7": {
"text": "10/11/11 by DW",
"created": "Tue, 11 Oct 2011 15:30:39 GMT",
"pgfnum": "2636",
"subs": {
"0": {
"text": "How feeds look in worldoutline",
"created": "Tue, 11 Oct 2011 15:30:40 GMT",
"pgfnum": "2637",
"type": "blogpost",
"subs": {
"0": {
"text": "Pretty close to working, just need to play with the parameters a bit.",
"created": "Tue, 11 Oct 2011 15:30:50 GMT",
"pgfnum": "2638"
},
"1": {
"text": "Example. Part of the archive of my linkblog feed. Items have no descriptions.",
"created": "Tue, 11 Oct 2011 15:31:31 GMT",
"pgfnum": "2639"
},
"2": {
"text": "Example. Scripting News RSS. Full story text.",
"created": "Tue, 11 Oct 2011 15:54:28 GMT",
"pgfnum": "2640"
},
"3": {
"text": "To get the styles for the rss nodetype into your stylesheet, click on this link. A window should open in your local OPML Editor, containing a set of styles. Paste them into your world outline stylesheet alongside the other nodetype styles and save.",
"created": "Tue, 11 Oct 2011 19:31:58 GMT",
"pgfnum": "2645"
},
"4": {
"text": "Also be sure to update worldOutline.root.",
"created": "Tue, 11 Oct 2011 19:36:04 GMT",
"pgfnum": "2646"
},
"5": {
"text": "Parts",
"created": "Tue, 11 Oct 2011 19:31:40 GMT",
"pgfnum": "2642",
"subs": {
"0": {
"text": "worldOutlineSuite.viewFeedCallback",
"created": "Tue, 11 Oct 2011 19:31:41 GMT",
"pgfnum": "2643"
}
}
},
"6": {
"text": "Styles",
"created": "Tue, 11 Oct 2011 19:31:55 GMT",
"pgfnum": "2644",
"subs": {
"0": {
"text": "/* rss nodetype */",
"subs": {
"0": {
"text": ".feedTitle {",
"subs": {
"0": {
"text": "font-size: 32px;"
},
"1": {
"text": "line-height: 180%;"
},
"2": {
"text": "margin-bottom: 10px;"
},
"3": {
"text": "}"
}
}
},
"1": {
"text": ".feedList {",
"subs": {
"0": {
"text": "list-style-type: none;"
},
"1": {
"text": "margin-left: 3em;"
},
"2": {
"text": "}"
}
}
},
"2": {
"text": ".feedItemTitle {",
"subs": {
"0": {
"text": "font-size: 24px;"
},
"1": {
"text": "line-height: 140%;"
},
"2": {
"text": "margin-bottom: 10px;"
},
"3": {
"text": "}"
}
}
},
"3": {
"text": ".feedItemDescription p {",
"subs": {
"0": {
"text": "font-size: 18px;"
},
"1": {
"text": "line-height: 180%;"
},
"2": {
"text": "color: black;"
},
"3": {
"text": "}"
}
}
},
"4": {
"text": ".feedItemDescription {",
"subs": {
"0": {
"text": "margin-bottom: 30px;"
},
"1": {
"text": "margin-right: 15%;"
},
"2": {
"text": "margin-left: 0;"
},
"3": {
"text": "}"
}
}
}
}
}
}
}
}
}
}
},
"8": {
"text": "10/10/11 by DW",
"created": "Mon, 10 Oct 2011 17:13:07 GMT",
"pgfnum": "2622",
"subs": {
"0": {
"text": "Opening outlines in the outliner",
"created": "Mon, 10 Oct 2011 17:32:44 GMT",
"pgfnum": "2628",
"type": "blogpost",
"subs": {
"0": {
"text": "Add a bit of HTML to your world outline template:",
"created": "Mon, 10 Oct 2011 17:32:52 GMT",
"pgfnum": "2629"
},
"1": {
"text": "<p><a href=\"http://127.0.0.1:5337/opmlEditor/openOpml?url=<%url%>\">View Outline</a></p>"
},
"2": {
"text": "I put it at the end of mine, just before the home icon.",
"created": "Mon, 10 Oct 2011 17:35:01 GMT",
"pgfnum": "2633"
},
"3": {
"text": "Make sure opml.root on your desktop is updated.",
"created": "Mon, 10 Oct 2011 17:34:36 GMT",
"pgfnum": "2631"
},
"4": {
"text": "Now go someplace in your world outline, and click the link.",
"created": "Mon, 10 Oct 2011 17:34:52 GMT",
"pgfnum": "2632"
},
"5": {
"text": "It takes a few moments for it to download the OPML from the server, then the outline opens in the OPML Editor and it comes to the front.",
"created": "Mon, 10 Oct 2011 17:37:03 GMT",
"pgfnum": "2634"
},
"6": {
"text": "Hopefully it just works. :-)",
"created": "Mon, 10 Oct 2011 17:37:27 GMT",
"pgfnum": "2635"
}
}
},
"1": {
"text": "More tweaks to scripting.com",
"created": "Mon, 10 Oct 2011 17:13:08 GMT",
"pgfnum": "2623",
"type": "blogpost",
"subs": {
"0": {
"text": "This time I did the worknotes on scripting.com itself.",
"created": "Mon, 10 Oct 2011 17:13:14 GMT",
"pgfnum": "2624"
},
"1": {
"text": "Part of the process to bring scripting.com closer to the world outline, and vice versa.",
"created": "Mon, 10 Oct 2011 17:13:22 GMT",
"pgfnum": "2625"
},
"2": {
"text": "Parts",
"created": "Mon, 10 Oct 2011 17:13:54 GMT",
"pgfnum": "2626",
"subs": {
"0": {
"text": "scripting2Suite.data.html.clipboardTemplate"
},
"1": {
"text": "scripting2Suite.initUser"
},
"2": {
"text": "scripting2Suite.server.buildHomePage"
},
"3": {
"text": "scripting2Suite.server.getStoryText"
}
}
}
}
}
}
},
"9": {
"text": "10/9/11 by DW",
"created": "Sun, 09 Oct 2011 14:22:57 GMT",
"pgfnum": "2613",
"subs": {
"0": {
"text": "scripting.com home page",
"created": "Sun, 09 Oct 2011 20:33:41 GMT",
"pgfnum": "2616",
"subs": {
"0": {
"text": "bigger font",
"created": "Sun, 09 Oct 2011 20:33:48 GMT",
"pgfnum": "2617"
},
"1": {
"text": "the page gets narrower, fewer characters on a line. there were too many, made it hard to read.",
"created": "Sun, 09 Oct 2011 20:43:28 GMT",
"pgfnum": "2621"
},
"2": {
"text": "change from ubuntu to cabin",
"created": "Sun, 09 Oct 2011 20:33:52 GMT",
"pgfnum": "2618"
},
"3": {
"text": "hot-up the whole title, not just the blue arrow.",
"created": "Sun, 09 Oct 2011 20:33:58 GMT",
"pgfnum": "2619"
},
"4": {
"text": "crumb trail could be bigger",
"created": "Sun, 09 Oct 2011 20:43:16 GMT",
"pgfnum": "2620"
}
}
},
"1": {
"text": "xml.rss.getFeedItems",
"created": "Sun, 09 Oct 2011 14:22:58 GMT",
"pgfnum": "2614",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to show the tags on photos on occupyweb.org, so I had to enhance this core routine to understand the category element in Atom. It has the same info as RSS 2.0's category element, but arranged differently with different names. As usual. :-)",
"created": "Sun, 09 Oct 2011 14:23:12 GMT",
"pgfnum": "2615"
}
}
}
}
},
"10": {
"text": "10/7/11 by DW",
"created": "Fri, 07 Oct 2011 15:08:28 GMT",
"pgfnum": "2609",
"subs": {
"0": {
"text": "Atom enclosures",
"created": "Fri, 07 Oct 2011 15:08:29 GMT",
"pgfnum": "2610",
"subs": {
"0": {
"text": "<link rel=\"enclosure\" type=\"image/jpeg\" href=\"http://xxx\" />"
},
"1": {
"text": "new (tabletype, @scratchpad.test); xml.addtable (@scratchpad.test, \"enclosure\")",
"created": "Fri, 07 Oct 2011 15:18:54 GMT",
"pgfnum": "2612",
"subs": {}
}
}
}
}
},
"11": {
"text": "10/6/11 by DW",
"created": "Thu, 06 Oct 2011 14:49:46 GMT",
"pgfnum": "2579",
"subs": {
"0": {
"text": "View Outline button",
"created": "Thu, 06 Oct 2011 21:54:49 GMT",
"pgfnum": "2602",
"type": "blogpost",
"subs": {
"0": {
"text": "This was supposed to be \"low hanging fruit\" -- but it took a bit longer than it seemed it would.",
"created": "Thu, 06 Oct 2011 21:54:55 GMT",
"pgfnum": "2603"
},
"1": {
"text": "Wouldn't it be nice if you had a button in your world outline that allowed you to click a button to view that section of the outline in your outliner?",
"created": "Thu, 06 Oct 2011 21:55:13 GMT",
"pgfnum": "2604"
},
"2": {
"text": "I have it working! It's pretty coool.",
"created": "Thu, 06 Oct 2011 21:55:48 GMT",
"pgfnum": "2605"
},
"3": {
"text": "Parts",
"created": "Thu, 06 Oct 2011 21:56:10 GMT",
"pgfnum": "2607",
"subs": {
"0": {
"text": "html.directory.viewDirectory"
},
"1": {
"text": "worldOutlineSuite.main"
},
"2": {
"text": "opmlEditor.website.worldOutline"
},
"3": {
"text": "opmlEditor.data.outlines.openOpmlForm"
},
"4": {
"text": "opmlEditor.website.openOpml"
}
}
}
}
},
"1": {
"text": "Jay gets a second feed",
"created": "Thu, 06 Oct 2011 14:52:08 GMT",
"pgfnum": "2586",
"type": "blogpost",
"subs": {
"0": {
"text": "We want Jay Rosen to be able to post to the occupyweb.org river, so he needs a second feed. (Of course I checked with Jay first.)",
"created": "Thu, 06 Oct 2011 14:52:12 GMT",
"pgfnum": "2587"
},
"1": {
"text": "I manually added a new item in his feeds table called \"Jay's occupy links\" -- and it posts items to a new feed in his folder called occupy.xml.",
"created": "Thu, 06 Oct 2011 14:52:49 GMT",
"pgfnum": "2588"
},
"2": {
"text": "Jay, here's how you set it up on your end:",
"created": "Thu, 06 Oct 2011 14:53:48 GMT",
"pgfnum": "2589",
"subs": {
"0": {
"text": "1. Click the Blork bookmarklet to open the popup window.",
"created": "Thu, 06 Oct 2011 14:53:58 GMT",
"pgfnum": "2590"
},
"1": {
"text": "2. Click the New icon to clear all the fields.",
"created": "Thu, 06 Oct 2011 14:54:11 GMT",
"pgfnum": "2591"
},
"2": {
"text": "3. Click the popup menu to choose Jay's occupy links.",
"created": "Thu, 06 Oct 2011 14:54:23 GMT",
"pgfnum": "2592"
},
"3": {
"text": "4. Click the Twitter icon. The Twitter confirmation should fill the window. Authorize it.",
"created": "Thu, 06 Oct 2011 14:54:36 GMT",
"pgfnum": "2593"
},
"4": {
"text": "That's it. You're all set up. When you want to post something to the occupy.xml feed, be sure the popup selects that feed.",
"created": "Thu, 06 Oct 2011 14:54:57 GMT",
"pgfnum": "2594"
},
"5": {
"text": "Important: I find it's always necessary for me to check the popup before clicking the Post button. If I don't do it every time I will sometimes post to the wrong feed. Mistakes will happen, but the readers won't understand why (they'll see it as more of a choice, something that could only happen deliberately). So I add some extra care there.",
"created": "Thu, 06 Oct 2011 14:56:05 GMT",
"pgfnum": "2595"
}
}
},
"3": {
"text": "Jay, to make sure everything is working, I added a post to your \"occupy\" feed.",
"created": "Thu, 06 Oct 2011 15:08:35 GMT",
"pgfnum": "2596",
"subs": {
"0": {
"text": "http://static.reallysimple.org/users/jay/occupy.xml",
"created": "Thu, 06 Oct 2011 15:08:50 GMT",
"pgfnum": "2597"
},
"1": {
"text": "It won't go anywhere other than the feed because it hasn't yet been set up.",
"created": "Thu, 06 Oct 2011 15:08:56 GMT",
"pgfnum": "2598"
},
"2": {
"text": "I will go ahead and subscribe to that feed on occupyweb.org, so your first occupy-related post should show up there. I'll be looking for it so try (if possible) to post one soon.",
"created": "Thu, 06 Oct 2011 15:09:08 GMT",
"pgfnum": "2599"
}
}
}
}
},
"2": {
"text": "Second-feed cleanup",
"created": "Thu, 06 Oct 2011 14:49:47 GMT",
"pgfnum": "2580",
"type": "blogpost",
"subs": {
"0": {
"text": "Now that I have a second feed I can see there was a problem in the popup menu. You have to be very careful about how you click on it to change to another feed. And it doesn't work at all on the iPad.",
"created": "Thu, 06 Oct 2011 14:49:57 GMT",
"pgfnum": "2581"
},
"1": {
"text": "Investigated, and recalled that there was a Javascript on the popup menu that switched in the history of the other feed when you swtich. Nice feature, but we're not even displaying history in the popup window.",
"created": "Thu, 06 Oct 2011 14:50:37 GMT",
"pgfnum": "2582"
},
"2": {
"text": "So I added an optional param to control the adding of the JS. Now it works much more smoothly.",
"created": "Thu, 06 Oct 2011 14:51:17 GMT",
"pgfnum": "2583"
},
"3": {
"text": "Parts",
"created": "Thu, 06 Oct 2011 14:51:44 GMT",
"pgfnum": "2584",
"subs": {
"0": {
"text": "radio2Suite.main"
},
"1": {
"text": "beautWebsite.popupPost.index"
}
}
}
}
}
}
},
"12": {
"text": "10/5/11 by DW",
"created": "Wed, 05 Oct 2011 13:00:49 GMT",
"pgfnum": "2573",
"subs": {
"0": {
"text": "Rivers look a little nicer",
"created": "Wed, 05 Oct 2011 13:00:50 GMT",
"pgfnum": "2574",
"type": "blogpost",
"subs": {
"0": {
"text": "I was integrating Bootstrap with occupyweb.org, and came across the usual styling glitches in the river and fixed them with my new CSS superpowers.",
"created": "Wed, 05 Oct 2011 13:01:03 GMT",
"pgfnum": "2575"
},
"1": {
"text": "I then migrated the changes back into builtins.webapp and the template for river2.root.",
"created": "Wed, 05 Oct 2011 13:01:28 GMT",
"pgfnum": "2576"
},
"2": {
"text": "Parts",
"created": "Wed, 05 Oct 2011 13:01:43 GMT",
"pgfnum": "2577",
"subs": {
"0": {
"text": "river2Website.[\"#template\"]"
},
"1": {
"text": "webApp.data.headIncludes"
}
}
}
}
}
}
},
"13": {
"text": "10/4/11 by DW",
"created": "Tue, 04 Oct 2011 22:39:54 GMT",
"pgfnum": "2556",
"subs": {
"0": {
"text": "Editing occupyweb.org home page",
"created": "Tue, 04 Oct 2011 22:57:17 GMT",
"pgfnum": "2567",
"subs": {
"0": {
"text": "Since the data is in JSON, the home page itself is completely static.",
"created": "Tue, 04 Oct 2011 22:58:21 GMT",
"pgfnum": "2568"
},
"1": {
"text": "I'm going to fork it off now, so I can add links to it, so in addition to being a river, it can also direct you to places where you can tell us about new occupy blogs so they can be added to the subscriptions list.",
"created": "Tue, 04 Oct 2011 22:58:37 GMT",
"pgfnum": "2569"
},
"2": {
"text": "Try to keep this as simple as possible.",
"created": "Tue, 04 Oct 2011 22:59:44 GMT",
"pgfnum": "2570"
}
}
},
"1": {
"text": "Started a new linkblog",
"created": "Tue, 04 Oct 2011 22:41:29 GMT",
"pgfnum": "2561",
"type": "blogpost",
"subs": {
"0": {
"text": "This is the first time I've had a second feed since I stopped pushing links about Wikileaks.",
"created": "Tue, 04 Oct 2011 22:41:51 GMT",
"pgfnum": "2562"
},
"1": {
"text": "The reason I started up Radio2 in the first place was to be able to have lots of people pushing links about Wikileaks. The people didn't materialize. I went ahead and made the tool anyway. :-)",
"created": "Tue, 04 Oct 2011 22:42:11 GMT",
"pgfnum": "2563"
},
"2": {
"text": "I set up a new feed called occupy.xml and connected it up to my Twitter account and added it to the subscription list for occupyweb.org.",
"created": "Tue, 04 Oct 2011 22:44:04 GMT",
"pgfnum": "2565"
},
"3": {
"text": "It was all entirely straightforward. I was surprised, I expected to do it all by hand, copying and pasting from various places to connect it up. Must write a howto.",
"created": "Tue, 04 Oct 2011 22:44:31 GMT",
"pgfnum": "2566"
}
}
},
"2": {
"text": "occupyweb.org",
"created": "Tue, 04 Oct 2011 22:39:55 GMT",
"pgfnum": "2557",
"type": "blogpost",
"subs": {
"0": {
"text": "Spent the day getting the river together.",
"created": "Tue, 04 Oct 2011 22:40:07 GMT",
"pgfnum": "2558"
},
"1": {
"text": "http://occupyweb.org/",
"created": "Tue, 04 Oct 2011 22:40:16 GMT",
"pgfnum": "2559"
},
"2": {
"text": "Lots of activity everywhere. This is going to be interesting.",
"created": "Tue, 04 Oct 2011 22:40:24 GMT",
"pgfnum": "2560"
}
}
}
}
},
"14": {
"text": "10/3/11 by DW",
"created": "Mon, 03 Oct 2011 16:02:10 GMT",
"pgfnum": "2519",
"subs": {
"0": {
"text": "Using the OPML Editor as a WO browser",
"created": "Mon, 03 Oct 2011 22:02:05 GMT",
"pgfnum": "2542",
"subs": {
"0": {
"text": "Some low-hanging fruit here.",
"created": "Mon, 03 Oct 2011 22:02:11 GMT",
"pgfnum": "2543"
},
"1": {
"text": "Parts",
"created": "Mon, 03 Oct 2011 23:38:14 GMT",
"pgfnum": "2554",
"subs": {
"0": {
"text": "opmlEditor.website.worldOutline"
},
"1": {
"text": "opmlEditor.data.outlines.openOpmlForm"
}
}
}
}
},
"1": {
"text": "Ties between World Outline and Scripting2",
"created": "Mon, 03 Oct 2011 21:58:31 GMT",
"pgfnum": "2536",
"subs": {
"0": {
"text": "The main reason I wanted to work on Scripting2 is that it has become a smaller version of the World Outline universe. At least in the way it deals with outlines.",
"created": "Mon, 03 Oct 2011 21:58:40 GMT",
"pgfnum": "2537"
},
"1": {
"text": "The ones that interested me most were: templates, the stylesheet and blogroll.",
"created": "Mon, 03 Oct 2011 21:59:24 GMT",
"pgfnum": "2538"
},
"2": {
"text": "I completely cleaned up the stylesheet. This is a milestone because it's the first of my apps to have a clean stylesheet. I'm getting there on all fronts. The key thing is now that I know how to make things work better in stylesheets. It means some things have to break, that's why I'm keeping the user base small.",
"created": "Mon, 03 Oct 2011 21:59:54 GMT",
"pgfnum": "2539"
},
"3": {
"text": "But some things are ready to show. And since Scripting News is already publicly visible, anything that shows up there has been shown. :-)",
"created": "Mon, 03 Oct 2011 22:00:49 GMT",
"pgfnum": "2540"
},
"4": {
"text": "And flow is going up. A recent piece got well over 100K page reads.",
"created": "Mon, 03 Oct 2011 22:01:17 GMT",
"pgfnum": "2541"
}
}
},
"2": {
"text": "feedHose.root is okay",
"created": "Mon, 03 Oct 2011 23:20:17 GMT",
"pgfnum": "2551",
"type": "blogpost",
"subs": {
"0": {
"text": "I thought feedHose.root might be doing some automatic subscribing, but it's not.",
"created": "Mon, 03 Oct 2011 23:20:21 GMT",
"pgfnum": "2552"
},
"1": {
"text": "The howto instructs you to subscribe to a nytimes.com feed. If you do that it will be in a user table and will not get garbage-collected.",
"created": "Mon, 03 Oct 2011 23:20:35 GMT",
"pgfnum": "2553"
}
}
},
"3": {
"text": "Apps and feeds",
"created": "Mon, 03 Oct 2011 21:54:11 GMT",
"pgfnum": "2532",
"type": "blogpost",
"subs": {
"0": {
"text": "As I write new apps that consume RSS, I've tried to have them build on River2. Instead of reading the feeds themselves, they subscribe to them in River2, and add a callback that gets a look at every new item.",
"created": "Mon, 03 Oct 2011 21:54:22 GMT",
"pgfnum": "2533"
},
"1": {
"text": "All this was done without thought of which user was subscribing to the feed. That's because the whole idea of users was a relatively late addition to River2. Everything was cool until I added a garbage collection algorithm, that unsubbed from feeds that no one was subscribed to. This meant that the feeds that were subscribed to by apps would get reclaimed.",
"created": "Mon, 03 Oct 2011 21:55:33 GMT",
"pgfnum": "2534"
},
"2": {
"text": "So, there's a new top-level table in River2 called apps. Instead of calling river2suite.subscribeFeed, an app will call river2suite.subscribeForApp, which takes an appname as a parameter. The garbage collector will look in the apps table as well as the users table to determine if a feed is in use.",
"created": "Mon, 03 Oct 2011 22:40:10 GMT",
"pgfnum": "2548"
},
"3": {
"text": "Parts",
"created": "Mon, 03 Oct 2011 22:41:31 GMT",
"pgfnum": "2549",
"subs": {
"0": {
"text": "river2Suite.init"
},
"1": {
"text": "river2Suite.initApp"
},
"2": {
"text": "river2Suite.subscribeForApp"
},
"3": {
"text": "radioReallySimpleSuite.subscribeFeed"
},
"4": {
"text": "radioReallySimpleSuite.utilities.setupRiver2AppsTable"
}
}
}
}
},
"4": {
"text": "radio2: miniLinkBlogJS",
"created": "Mon, 03 Oct 2011 16:02:48 GMT",
"pgfnum": "2522",
"type": "blogpost",
"subs": {
"0": {
"text": "Making a change to the HTML text generated for the minilinkblog.",
"created": "Mon, 03 Oct 2011 16:03:04 GMT",
"pgfnum": "2523"
},
"1": {
"text": "Instead of including the link visibly, Twitter-style, I use the formerly deprecated style of linking called \"anchor tags.\" The old way was better than the new. :-)",
"created": "Mon, 03 Oct 2011 16:03:19 GMT",
"pgfnum": "2524"
},
"2": {
"text": "Added prefs to control this new styling. It defaults to the old way (i.e. no change).",
"created": "Mon, 03 Oct 2011 16:04:04 GMT",
"pgfnum": "2525"
},
"3": {
"text": "Parts",
"created": "Mon, 03 Oct 2011 20:29:00 GMT",
"pgfnum": "2527",
"subs": {
"0": {
"text": "radio2Suite.buildMiniLinkBlogJS"
},
"1": {
"text": "radio2Suite.initUser"
}
}
}
}
},
"5": {
"text": "Redesign of scripting.com",
"created": "Mon, 03 Oct 2011 16:02:10 GMT",
"pgfnum": "2520",
"type": "blogpost",
"subs": {
"0": {
"text": "I've been working on and off all weekend on the redesign of scripting.com blog around Bootstrap toolkit. Also using Readability as inspiration on the story pages.",
"created": "Mon, 03 Oct 2011 16:02:15 GMT",
"pgfnum": "2521"
},
"1": {
"text": "Eliminated the <br> elements that were added to the home page. Same can be accomplished with CSS.",
"created": "Mon, 03 Oct 2011 20:29:20 GMT",
"pgfnum": "2529"
},
"2": {
"text": "TOC page gets a div encapsulating the list, so it can be moved around on the page.",
"created": "Mon, 03 Oct 2011 16:36:24 GMT",
"pgfnum": "2526"
},
"3": {
"text": "Parts",
"created": "Mon, 03 Oct 2011 20:30:16 GMT",
"pgfnum": "2530",
"subs": {
"0": {
"text": "scripting2Suite.server.buildHomePage"
},
"1": {
"text": "scripting2Suite.server.buildTableOfContents"
}
}
}
}
}
}
},
"15": {
"text": "10/1/11 by DW",
"created": "Sat, 01 Oct 2011 11:33:29 GMT",
"pgfnum": "2506",
"subs": {
"0": {
"text": "Popovers from Bootstrap",
"created": "Sat, 01 Oct 2011 11:33:37 GMT",
"pgfnum": "2507",
"type": "blogpost",
"subs": {
"0": {
"text": "Just released an update to webapp.data.headIncludes that gets you popovers.",
"created": "Sat, 01 Oct 2011 12:01:15 GMT",
"pgfnum": "2508"
},
"1": {
"text": "This is what a popover looks like.",
"created": "Sat, 01 Oct 2011 12:01:31 GMT",
"pgfnum": "2509"
},
"2": {
"text": "Dave, what do you love?"
},
"3": {
"text": "And here's the HTML code for it...",
"created": "Sat, 01 Oct 2011 12:10:16 GMT",
"pgfnum": "2513"
},
"4": {
"text": "<a href=\"#\" rel=\"popover\" title=\"I love a parade!\" data-content=\"I love a parade, the tramping of feet, I love every beat I hear of a drum. I love a parade, when I hear a band I just want to stand and cheer as they come. That rat-a tat-tat, the blare of a horn. That rat-a tat-tat, a bright uniform. The sight of a drill will give me a thrill, I thrill at the skill of everything military. I love a parade, a handful of vets, a line of cadets or any brigade, for I love a parade.\">what do you love</a>",
"created": "Sat, 01 Oct 2011 12:06:35 GMT",
"pgfnum": "2512"
}
}
}
}
}
}
},
"20": {
"created": "Thu, 01 Sep 2011 15:25:34 GMT",
"pgfnum": "1357",
"text": "September 2011",
"type": "include",
"url": "http://s3.amazonaws.com/static.reallysimple.org/worldoutline/dave/2011/10/01/archive001.opml",
"subs": {
"0": {
"text": "9/30/11 by DW",
"created": "Fri, 30 Sep 2011 12:18:15 GMT",
"pgfnum": "2420",
"subs": {
"0": {
"text": "Att to turn off menu",
"created": "Sat, 01 Oct 2011 02:53:10 GMT",
"pgfnum": "2497",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's a page that has no menu.",
"created": "Sat, 01 Oct 2011 02:53:48 GMT",
"pgfnum": "2499"
},
"1": {
"text": "Some nodes in outlines want to take over the display, and offer no commands to users. That's the theory of this feature. It's worth a try.",
"created": "Sat, 01 Oct 2011 02:53:21 GMT",
"pgfnum": "2498"
},
"2": {
"text": "Here's a quick script that turns off the menu for a node:",
"created": "Sat, 01 Oct 2011 03:01:44 GMT",
"pgfnum": "2503"
},
"3": {
"text": "op.attributes.setone (\"menuEnabled\", false)",
"created": "Sat, 01 Oct 2011 03:01:50 GMT",
"pgfnum": "2504"
}
}
},
"1": {
"text": "No menu",
"created": "Sat, 01 Oct 2011 02:59:03 GMT",
"menuenabled": "false",
"pgfnum": "2500",
"subs": {
"0": {
"text": "This page is funny because it has no menu.",
"created": "Sat, 01 Oct 2011 02:59:15 GMT",
"pgfnum": "2501"
}
}
},
"2": {
"text": "Popover demo",
"created": "Sat, 01 Oct 2011 01:42:00 GMT",
"fldisquscomments": "true",
"pgfnum": "2491",
"type": "blogpost",
"subs": {
"0": {
"text": "This is just some text I scarfed from a recent Scripting News piece. Roll the mouse over the links. Three of them have little popovers attached. Pretty cool.",
"created": "Sat, 01 Oct 2011 02:00:24 GMT",
"pgfnum": "2496"
},
"1": {
"text": "When I read a piece by Paul Krugman wondering if economists of the 1970s knew more than those working today, I said the same question must be asked about software developers. It seems to me we had it all working better before we switched to the web. We probalby never should have tried to make the web a GUI. But there you have it. (And if Microsoft, Apple and Sun hadn't been such BigCo's it might have happened.)",
"created": "Thu, 29 Sep 2011 13:49:03 GMT",
"pgfnum": "9723"
},
"2": {
"text": "
That's why Bootstrap makes a difference. It encapsulates in one place all the design assumptions. I don't want to have control over how the menus look. I learned that when I started making Mac software. It's a good thing if all menus work the same way. So if Bootstrap is a good thing, how much more can we simplify things by factoring out the look and feel and burying it even deeper and further away from the program logic? There's the answer. It belongs in the browser itself. There ought to be the idea of menus in the language that goes over the wire and is rendered in machine language by the browser. And all menus should work exactly the same way, whether you're in Twitter, WordPress, YouTube, Tumblr or on JetBlue's website or whitehouse.gov.",
"created": "Thu, 29 Sep 2011 14:00:27 GMT",
"pgfnum": "9726"
},
"3": {
"text": "This is not a new idea. This is the idea of the Macintosh in 1984. ",
"created": "Sat, 01 Oct 2011 01:59:57 GMT",
"pgfnum": "2495"
}
}
},
"3": {
"text": "More Bootstrap tricks",
"created": "Sat, 01 Oct 2011 00:35:57 GMT",
"pgfnum": "2479",
"type": "blogpost",
"subs": {
"0": {
"text": "These are easy and require no new features in the environment.",
"created": "Sat, 01 Oct 2011 00:36:05 GMT",
"pgfnum": "2480"
},
"1": {
"text": "Extra Large -- <span class=\"label\">Extra Large</span>",
"created": "Sat, 01 Oct 2011 00:36:26 GMT",
"pgfnum": "2481"
},
"2": {
"text": "That worked!! -- <span class=\"label success\">That worked!!</span>"
},
"3": {
"text": "Boots on the ground -- <span class=\"label warning\">Boots on the ground</span>",
"created": "Sat, 01 Oct 2011 00:40:58 GMT",
"pgfnum": "2482"
},
"4": {
"text": "That didn't work -- <span class=\"label important\">That didn't work</span>",
"created": "Sat, 01 Oct 2011 00:41:21 GMT",
"pgfnum": "2483"
},
"5": {
"text": "Happy New Year -- <span class=\"label notice\">Happy New Year</span>",
"created": "Sat, 01 Oct 2011 00:41:52 GMT",
"pgfnum": "2484"
}
}
},
"4": {
"text": "WO: template changes",
"created": "Fri, 30 Sep 2011 20:28:17 GMT",
"pgfnum": "2464",
"type": "blogpost",
"subs": {
"0": {
"text": "Changed the way breadcrumbs work, they can now be empty. Which is a good thing of course. But we should recover the space they would take up if they were there.",
"created": "Fri, 30 Sep 2011 20:28:22 GMT",
"pgfnum": "2465"
},
"1": {
"text": "In your template, where it says:",
"created": "Fri, 30 Sep 2011 20:29:50 GMT",
"pgfnum": "2466",
"subs": {
"0": {
"text": "<div class=\"divBreadCrumbs\"><%breadcrumbs%></div>",
"created": "Fri, 30 Sep 2011 20:29:55 GMT",
"pgfnum": "2467"
}
}
},
"2": {
"text": "It should say:",
"created": "Fri, 30 Sep 2011 20:30:16 GMT",
"pgfnum": "2468",
"subs": {
"0": {
"text": "<%breadcrumbs%>",
"created": "Fri, 30 Sep 2011 20:30:24 GMT",
"pgfnum": "2469"
}
}
},
"3": {
"text": "A screen shot might help.",
"created": "Fri, 30 Sep 2011 20:33:46 GMT",
"pgfnum": "2471"
},
"4": {
"text": "We will generate the div if there are breadcrumbs, and the empty string if there are none.",
"created": "Fri, 30 Sep 2011 20:31:03 GMT",
"pgfnum": "2470"
},
"5": {
"text": "One more thing...",
"created": "Fri, 30 Sep 2011 20:50:27 GMT",
"pgfnum": "2473"
},
"6": {
"text": "While you're editing the template, make the same change with <%headerGraphic%>.",
"created": "Fri, 30 Sep 2011 20:41:27 GMT",
"pgfnum": "2472"
},
"7": {
"text": "Replace",
"created": "Fri, 30 Sep 2011 20:50:42 GMT",
"pgfnum": "2474",
"subs": {
"0": {
"text": "<div class=\"divGraphic\"><a href=\"/\"><%headerGraphic%></a></div> ",
"created": "Fri, 30 Sep 2011 20:50:53 GMT",
"pgfnum": "2475"
}
}
},
"8": {
"text": "With",
"created": "Fri, 30 Sep 2011 20:51:12 GMT",
"pgfnum": "2477",
"subs": {
"0": {
"text": "<%headerGraphic%>",
"created": "Fri, 30 Sep 2011 20:50:59 GMT",
"pgfnum": "2476"
}
}
}
}
},
"5": {
"text": "WO: Header is optional",
"created": "Fri, 30 Sep 2011 20:26:56 GMT",
"pgfnum": "2458",
"subs": {
"0": {
"text": "New user-level world outline pref, headerEnabled, if false, no graphic or text is displayed.",
"created": "Fri, 30 Sep 2011 20:27:03 GMT",
"pgfnum": "2459"
},
"1": {
"text": "As usual the value can be changed in the attributes of a headline.",
"created": "Fri, 30 Sep 2011 20:27:26 GMT",
"pgfnum": "2460"
},
"2": {
"text": "Default true.",
"created": "Fri, 30 Sep 2011 20:27:47 GMT",
"pgfnum": "2461"
},
"3": {
"text": "Parts",
"created": "Fri, 30 Sep 2011 20:28:01 GMT",
"pgfnum": "2462",
"subs": {
"0": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "worldOutlineSuite.main"
}
}
}
}
},
"6": {
"text": "Trying twipsy's in WO's",
"created": "Fri, 30 Sep 2011 17:46:55 GMT",
"domain": "twipsy.blorkmark.com",
"headerfont": "Fontdiner Swanky",
"headerfontsize": "72px",
"headertext": "TWIPSY!",
"pgfnum": "2447",
"type": "blogpost",
"subs": {
"0": {
"text": "This is an experiment.",
"created": "Fri, 30 Sep 2011 17:47:03 GMT",
"pgfnum": "2448"
},
"1": {
"text": "Theoretically I should be able to put a twipsy in the text. Here goes!",
"created": "Fri, 30 Sep 2011 17:53:57 GMT",
"pgfnum": "2452"
},
"2": {
"text": "I have some advice for you and you don't even have to click a link (if it works).",
"created": "Fri, 30 Sep 2011 17:51:48 GMT",
"pgfnum": "2451"
},
"3": {
"text": "This is what the code looks like:",
"created": "Fri, 30 Sep 2011 17:54:37 GMT",
"pgfnum": "2453"
},
"4": {
"text": "<a href=\"#\" rel=\"twipsy\" title=\"You should never argue with a crazy man\">advice</a>",
"created": "Fri, 30 Sep 2011 17:54:44 GMT",
"pgfnum": "2454"
},
"5": {
"text": "Parts released. :-)",
"created": "Fri, 30 Sep 2011 18:02:24 GMT",
"pgfnum": "2455"
},
"6": {
"text": "BTW, I'm just passing through a feature of the wonderful Bootstrap toolkit. They should get the kudos. And you can see there's a lot more that we can do here.",
"created": "Fri, 30 Sep 2011 20:07:12 GMT",
"pgfnum": "2456"
}
}
},
"7": {
"text": "twitter.github.com slowness",
"created": "Fri, 30 Sep 2011 17:35:45 GMT",
"pgfnum": "2440",
"type": "blogpost",
"subs": {
"0": {
"text": "We have to load a lot of stuff from github for bootstrap, and usually it works pretty well, but sometimes github is really slow.",
"created": "Fri, 30 Sep 2011 17:35:56 GMT",
"pgfnum": "2441"
},
"1": {
"text": "So I wrote a utility script that downloads all the included files, copies them to a folder on S3, and patches the URLs to point there instead.",
"created": "Fri, 30 Sep 2011 17:37:16 GMT",
"pgfnum": "2443"
},
"2": {
"text": "Really smooths out the performance.",
"created": "Fri, 30 Sep 2011 17:36:56 GMT",
"pgfnum": "2442"
},
"3": {
"text": "Parts",
"created": "Fri, 30 Sep 2011 17:37:19 GMT",
"pgfnum": "2444",
"subs": {
"0": {
"text": "webApp.data.headIncludes",
"created": "Fri, 30 Sep 2011 17:37:20 GMT",
"pgfnum": "2445"
},
"1": {
"text": "webApp.utilities",
"created": "Fri, 30 Sep 2011 17:37:30 GMT",
"pgfnum": "2446"
}
}
}
}
},
"8": {
"text": "Signin dialog, again",
"created": "Fri, 30 Sep 2011 15:53:23 GMT",
"pgfnum": "2436",
"subs": {
"0": {
"text": "Lost some updates. Oy.",
"created": "Fri, 30 Sep 2011 15:53:37 GMT",
"pgfnum": "2437"
},
"1": {
"text": "Parts",
"created": "Fri, 30 Sep 2011 15:53:42 GMT",
"pgfnum": "2438",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.signInTemplate",
"created": "Fri, 30 Sep 2011 15:53:43 GMT",
"pgfnum": "2439"
},
"1": {
"text": "webApp.data.styles"
}
}
}
}
},
"9": {
"text": "Addressing content",
"created": "Fri, 30 Sep 2011 14:38:11 GMT",
"domain": "addressingcontent.blorkmark.com",
"pgfnum": "2429",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's a demo of a blorkmark for a comment I'm leaving on Google.",
"created": "Fri, 30 Sep 2011 14:38:13 GMT",
"pgfnum": "2430"
},
"1": {
"text": "All I did was click the Blorkmark button above, wait a few seconds, then copy the URL.",
"created": "Fri, 30 Sep 2011 14:38:24 GMT",
"pgfnum": "2431"
},
"2": {
"text": "It has a longer address too, but having a shorter, invariant address (even after moving it) is really powerful.",
"created": "Fri, 30 Sep 2011 14:38:40 GMT",
"pgfnum": "2432"
}
}
},
"10": {
"text": "text input sizes",
"created": "Fri, 30 Sep 2011 13:11:23 GMT",
"pgfnum": "2426",
"type": "blogpost",
"subs": {
"0": {
"text": "Working on the sign-in form, I want the text input sizes to be smaller than the standard 450px wide input. We had achieved this by patching the bootstrap setup everywere. So I was trying to have that patch just apply to prefs pages, but no matter what I tried, it was global. So I'm going to try another approach.",
"created": "Fri, 30 Sep 2011 13:11:30 GMT",
"pgfnum": "2427"
},
"1": {
"text": "In prefs2.stringpref, there was already a style attribute on the input item that set padding, height and font-size. So I had it set the width to 500px and it worked. This really gets right down to what I want. Remember this approach Davey. Remember it.",
"created": "Fri, 30 Sep 2011 13:12:35 GMT",
"pgfnum": "2428"
}
}
},
"11": {
"text": "webapp.viewMenu",
"created": "Fri, 30 Sep 2011 12:18:24 GMT",
"pgfnum": "2422",
"type": "blogpost",
"subs": {
"0": {
"text": "Add optional param to allow the dropdown to not be generated. needed for static renderings in servermonitor.",
"created": "Fri, 30 Sep 2011 12:48:35 GMT",
"pgfnum": "2424"
}
}
},
"12": {
"text": "Work on the signin dialogs",
"created": "Thu, 29 Sep 2011 13:41:18 GMT",
"pgfnum": "2392",
"type": "blogpost",
"subs": {
"0": {
"text": "This is across the board in all the apps.",
"created": "Thu, 29 Sep 2011 13:41:27 GMT",
"pgfnum": "2393"
},
"1": {
"text": "Looks pretty good, not necessarily great.",
"created": "Fri, 30 Sep 2011 15:10:08 GMT",
"pgfnum": "2434"
},
"2": {
"text": "Better than it did. :-)",
"created": "Fri, 30 Sep 2011 15:10:16 GMT",
"pgfnum": "2435"
}
}
},
"13": {
"text": "Todo",
"created": "Fri, 30 Sep 2011 12:18:15 GMT",
"pgfnum": "2421",
"subs": {
"0": {
"text": "Publish button in WorldOutline window",
"created": "Thu, 29 Sep 2011 13:40:22 GMT",
"pgfnum": "2389",
"subs": {
"0": {
"text": "With confirmation. It adds the headline to the feed for the site. So people who are subscribed get notified.",
"created": "Thu, 29 Sep 2011 13:40:33 GMT",
"pgfnum": "2390"
},
"1": {
"text": "Otherwise you can make things blogposts or howtos without them showing up in the feed until you're ready for them to.",
"created": "Thu, 29 Sep 2011 13:40:55 GMT",
"pgfnum": "2391"
}
}
},
"1": {
"text": "Loading from twitter.github.com can be really slow",
"created": "Fri, 30 Sep 2011 12:58:01 GMT",
"pgfnum": "2425"
}
}
}
}
},
"1": {
"text": "9/29/11 by DW",
"created": "Thu, 29 Sep 2011 13:39:12 GMT",
"pgfnum": "2385",
"subs": {
"0": {
"text": "Feeds page needs tweaking",
"created": "Thu, 29 Sep 2011 13:41:35 GMT",
"pgfnum": "2394",
"type": "blogpost",
"subs": {
"0": {
"text": "Looks fine in a big enough window, but when I look at it on my iPad it's mushed.",
"created": "Thu, 29 Sep 2011 20:46:01 GMT",
"pgfnum": "2412"
},
"1": {
"text": "I've eliminated the date-subscribed column. Might get rid of the number of times checked. But you certainly don't need both these values.",
"created": "Thu, 29 Sep 2011 20:46:19 GMT",
"pgfnum": "2413"
},
"2": {
"text": "Shortened the day names to three-character abbreviations.",
"created": "Thu, 29 Sep 2011 20:47:53 GMT",
"pgfnum": "2417"
},
"3": {
"text": "Drop the \"Subscribe\" label from the URL-entry box.",
"created": "Thu, 29 Sep 2011 20:52:06 GMT",
"pgfnum": "2418"
},
"4": {
"text": "Tarted up the URL entry box. Looks really nice now.",
"created": "Thu, 29 Sep 2011 21:18:34 GMT",
"pgfnum": "2419"
},
"5": {
"text": "Parts",
"created": "Thu, 29 Sep 2011 20:47:35 GMT",
"pgfnum": "2415",
"subs": {
"0": {
"text": "river2Suite.data.urlEntryBox"
},
"1": {
"text": "river2Website.[\"#template\"]"
},
"2": {
"text": "webApp.data.styles"
},
"3": {
"text": "river2suite.viewsubs",
"created": "Thu, 29 Sep 2011 20:47:37 GMT",
"pgfnum": "2416"
}
}
}
}
},
"1": {
"text": "Installed new ServerMonitor on Illium",
"created": "Wed, 28 Sep 2011 05:15:53 GMT",
"pgfnum": "2309",
"type": "blogpost",
"subs": {
"0": {
"text": "I like the idea of having it run on a dedicated machine, doing nothing but monitor the others.",
"created": "Thu, 29 Sep 2011 13:39:47 GMT",
"pgfnum": "2387"
},
"1": {
"text": "Will eventually deactivate it on Memphis.",
"created": "Thu, 29 Sep 2011 13:40:03 GMT",
"pgfnum": "2388"
}
}
},
"2": {
"text": "admin-like",
"created": "Thu, 29 Sep 2011 15:32:33 GMT",
"pgfnum": "2404",
"type": "blogpost",
"subs": {
"0": {
"text": "New rule, you have to be admin-like to access the opmlEditor website.",
"created": "Thu, 29 Sep 2011 15:32:36 GMT",
"pgfnum": "2405"
}
}
},
"3": {
"text": "ServerMonitor, day 3",
"created": "Thu, 29 Sep 2011 14:54:04 GMT",
"pgfnum": "2398",
"type": "blogpost",
"subs": {
"0": {
"text": "Lots of new stuff, cleanups, etc.",
"created": "Thu, 29 Sep 2011 17:20:40 GMT",
"pgfnum": "2407"
},
"1": {
"text": "You must re-install from the Tool Catalog page to get v0.22. Too many parts were changed to go through the normal update process. ",
"created": "Thu, 29 Sep 2011 17:20:51 GMT",
"pgfnum": "2408"
},
"2": {
"text": "Menu command to open the status page on the server machine.",
"created": "Thu, 29 Sep 2011 14:54:13 GMT",
"pgfnum": "2399"
},
"3": {
"text": "System prefs page.",
"created": "Thu, 29 Sep 2011 14:58:02 GMT",
"pgfnum": "2402"
},
"4": {
"text": "Now has a signin/signout page.",
"created": "Thu, 29 Sep 2011 15:37:06 GMT",
"pgfnum": "2406"
},
"5": {
"text": "Generating static reports.",
"created": "Thu, 29 Sep 2011 14:54:27 GMT",
"pgfnum": "2400"
}
}
}
}
},
"2": {
"text": "9/28/11 by DW",
"created": "Wed, 28 Sep 2011 05:16:09 GMT",
"pgfnum": "2310",
"subs": {
"0": {
"text": "Better blorkmarks",
"created": "Wed, 28 Sep 2011 22:30:37 GMT",
"domain": "better.blorkmark.com",
"pgfnum": "2376",
"type": "blogpost",
"subs": {
"0": {
"text": "A little improvement in blorkmarking.",
"created": "Wed, 28 Sep 2011 22:30:46 GMT",
"pgfnum": "2377"
},
"1": {
"text": "When I come into a page through a blorkmark, the crumb trail is kind of pointless.",
"created": "Wed, 28 Sep 2011 22:30:54 GMT",
"pgfnum": "2378"
},
"2": {
"text": "Here's a screen shot to illustrate.",
"created": "Wed, 28 Sep 2011 22:31:14 GMT",
"pgfnum": "2379"
},
"3": {
"text": "The plan is simple. If there's a single element in the crumb trail, don't display anything there.",
"created": "Wed, 28 Sep 2011 22:35:18 GMT",
"pgfnum": "2381"
},
"4": {
"text": "Let's see how it goes. It works pretty nicely.",
"created": "Wed, 28 Sep 2011 22:35:36 GMT",
"pgfnum": "2382"
},
"5": {
"text": "If you come here through the hierarchy, however, you should get the crumb trail.",
"created": "Wed, 28 Sep 2011 22:56:02 GMT",
"pgfnum": "2383"
},
"6": {
"text": "And if you come through the blorkmark, no trail",
"created": "Wed, 28 Sep 2011 22:57:11 GMT",
"pgfnum": "2384"
}
}
},
"1": {
"text": "Garbage collector released",
"created": "Wed, 28 Sep 2011 21:47:09 GMT",
"pgfnum": "2367",
"type": "blogpost",
"subs": {
"0": {
"text": "However, I can't set it up so that it runs automatically because we have apps that subscribe to feeds that would be collected. Examples include feedHose.root and radioReallySimple.root.",
"created": "Wed, 28 Sep 2011 21:47:15 GMT",
"pgfnum": "2368"
},
"1": {
"text": "So, you can run it manually if you're sure you're not running any of these apps on your machine. A new user would be very safe in doing this, for example.",
"created": "Wed, 28 Sep 2011 21:47:52 GMT",
"pgfnum": "2369"
},
"2": {
"text": "To try it out:",
"created": "Wed, 28 Sep 2011 21:48:18 GMT",
"pgfnum": "2370"
},
"3": {
"text": "1. Bring the OPML app to the front.",
"created": "Wed, 28 Sep 2011 21:48:26 GMT",
"pgfnum": "2371"
},
"4": {
"text": "2. Choose Quick Script from the Misc menu.",
"created": "Wed, 28 Sep 2011 21:48:32 GMT",
"pgfnum": "2372"
},
"5": {
"text": "3. Enter this script and press Enter.",
"created": "Wed, 28 Sep 2011 21:48:54 GMT",
"pgfnum": "2373"
},
"6": {
"text": "river2Suite.utilities.feedGarbageCollector ()",
"created": "Wed, 28 Sep 2011 21:48:59 GMT",
"pgfnum": "2374"
},
"7": {
"text": "4. If you look in your River2 log you should see the result. Something like this.",
"created": "Wed, 28 Sep 2011 21:49:15 GMT",
"pgfnum": "2375"
}
}
},
"2": {
"text": "Garbage collector for feeds",
"created": "Wed, 28 Sep 2011 17:22:32 GMT",
"pgfnum": "2338",
"type": "blogpost",
"subs": {
"0": {
"text": "Algorithm",
"created": "Wed, 28 Sep 2011 18:55:48 GMT",
"pgfnum": "2364",
"subs": {
"0": {
"text": "Create an empty table called t.",
"created": "Wed, 28 Sep 2011 17:22:52 GMT",
"pgfnum": "2340"
},
"1": {
"text": "Loop over all users.",
"created": "Wed, 28 Sep 2011 17:23:00 GMT",
"pgfnum": "2341",
"subs": {
"0": {
"text": "loop over all feeds the user is subscribed to",
"created": "Wed, 28 Sep 2011 17:23:06 GMT",
"pgfnum": "2342",
"subs": {
"0": {
"text": "if the feed is not in t, add it",
"created": "Wed, 28 Sep 2011 17:27:04 GMT",
"pgfnum": "2346"
}
}
}
}
},
"2": {
"text": "t now contains all the feeds and lists that are subscribed to",
"created": "Wed, 28 Sep 2011 17:28:14 GMT",
"pgfnum": "2349"
},
"3": {
"text": "loop over t",
"created": "Wed, 28 Sep 2011 17:28:26 GMT",
"pgfnum": "2350",
"subs": {
"0": {
"text": "is the url a list?",
"created": "Wed, 28 Sep 2011 17:28:34 GMT",
"pgfnum": "2351",
"subs": {
"0": {
"text": "yes",
"created": "Wed, 28 Sep 2011 17:28:46 GMT",
"pgfnum": "2352",
"subs": {
"0": {
"text": "loop over all the feeds in the list",
"created": "Wed, 28 Sep 2011 17:28:48 GMT",
"pgfnum": "2353",
"subs": {
"0": {
"text": "if the feed is not in t, add it",
"created": "Wed, 28 Sep 2011 17:29:27 GMT",
"pgfnum": "2354"
}
}
}
}
}
}
}
}
},
"4": {
"text": "t now contains the feeds from lists that are subscribed to",
"created": "Wed, 28 Sep 2011 17:29:55 GMT",
"pgfnum": "2355"
},
"5": {
"text": "loop over the feeds table",
"created": "Wed, 28 Sep 2011 17:30:33 GMT",
"pgfnum": "2356",
"subs": {
"0": {
"text": "is the feed in t?",
"created": "Wed, 28 Sep 2011 17:30:48 GMT",
"pgfnum": "2357",
"subs": {
"0": {
"text": "no",
"created": "Wed, 28 Sep 2011 17:30:53 GMT",
"pgfnum": "2358",
"subs": {
"0": {
"text": "goodbye!",
"created": "Wed, 28 Sep 2011 17:30:54 GMT",
"pgfnum": "2359"
}
}
}
}
}
}
},
"6": {
"text": "loop over the lists table",
"created": "Wed, 28 Sep 2011 17:30:58 GMT",
"pgfnum": "2360",
"subs": {
"0": {
"text": "is the list in t?",
"created": "Wed, 28 Sep 2011 17:31:04 GMT",
"pgfnum": "2361",
"subs": {
"0": {
"text": "no",
"created": "Wed, 28 Sep 2011 17:31:07 GMT",
"pgfnum": "2362",
"subs": {
"0": {
"text": "goodbye!",
"created": "Wed, 28 Sep 2011 17:31:08 GMT",
"pgfnum": "2363"
}
}
}
}
}
}
}
}
},
"1": {
"text": "Parts",
"created": "Wed, 28 Sep 2011 18:55:52 GMT",
"pgfnum": "2365",
"subs": {
"0": {
"text": "river2Suite.utilities.feedGarbageCollector",
"created": "Wed, 28 Sep 2011 18:55:55 GMT",
"pgfnum": "2366"
}
}
}
}
},
"3": {
"text": "River2 feeds page",
"created": "Wed, 28 Sep 2011 07:54:19 GMT",
"pgfnum": "2327",
"type": "blogpost",
"subs": {
"0": {
"text": "Reworked the River2 feeds page. Many hours of work.",
"created": "Wed, 28 Sep 2011 14:29:11 GMT",
"pgfnum": "2331"
},
"1": {
"text": "Now completely up to date with the newest way of doing things.",
"created": "Wed, 28 Sep 2011 14:37:52 GMT",
"pgfnum": "2333"
},
"2": {
"text": "I also tested the Bookmarklet. It works! Very nice.",
"created": "Wed, 28 Sep 2011 14:37:55 GMT",
"pgfnum": "2334"
},
"3": {
"text": "I think it looks pretty good: Screen shot.",
"created": "Wed, 28 Sep 2011 14:29:33 GMT",
"pgfnum": "2332"
},
"4": {
"text": "Parts",
"created": "Wed, 28 Sep 2011 14:38:34 GMT",
"pgfnum": "2335",
"subs": {
"0": {
"text": "river2Suite.data.html.subsPageIntro"
},
"1": {
"text": "river2Suite.data.urlEntryBox"
},
"2": {
"text": "river2Suite.viewSubs"
},
"3": {
"text": "river2Website.[\"#template\"]"
}
}
}
}
},
"4": {
"text": "River2 timeout new installations",
"created": "Wed, 28 Sep 2011 06:33:27 GMT",
"pgfnum": "2320",
"type": "blogpost",
"subs": {
"0": {
"text": "Daniel Iantosca reports that a new installation times out on its news page.",
"created": "Wed, 28 Sep 2011 06:33:33 GMT",
"pgfnum": "2321"
},
"1": {
"text": "The error is immediately reproducible. The problem is that the URL its referring to for the JSON is wrong.",
"created": "Wed, 28 Sep 2011 05:37:17 GMT",
"pgfnum": "2317"
},
"2": {
"text": "http://192.168.1.4/rivers/admin/River3.js",
"created": "Wed, 28 Sep 2011 05:37:55 GMT",
"pgfnum": "2318"
},
"3": {
"text": "I see the problem. There's no port in the URL. This breakage was caused by an optimization I introduced recently. There are URLs in the stats table, and the one we're looking for is there, the problem is that it's not correct. So when we use it, the request fails and the page is broken. We should only use the URL if it works.",
"created": "Wed, 28 Sep 2011 05:39:11 GMT",
"pgfnum": "2319"
},
"4": {
"text": "Automatically generating the URL is guesswork, and it's problematic. The optimization works great on seasoned installations, but better left alone on new ones. I undid the optimization and released river2suite.viewNews.",
"created": "Wed, 28 Sep 2011 06:34:32 GMT",
"pgfnum": "2323"
}
}
},
"5": {
"text": "Fresh install prob",
"created": "Wed, 28 Sep 2011 05:16:41 GMT",
"pgfnum": "2312",
"subs": {
"0": {
"text": "Daniel Iantosca reports that a new installation of River2 is still reading feeds he unsubbed from.",
"created": "Wed, 28 Sep 2011 05:16:49 GMT",
"pgfnum": "2313"
}
}
},
"6": {
"text": "Writing adminpassword.txt is a mistake",
"created": "Wed, 28 Sep 2011 05:29:37 GMT",
"pgfnum": "2316",
"subs": {
"0": {
"text": "Fixed.",
"created": "Wed, 28 Sep 2011 17:22:16 GMT",
"pgfnum": "2337"
}
}
},
"7": {
"text": "Review opmlEditor databases table",
"created": "Tue, 27 Sep 2011 16:22:33 GMT",
"pgfnum": "2293",
"subs": {
"0": {
"text": "Looks like it needs some fixing up.",
"created": "Tue, 27 Sep 2011 16:22:42 GMT",
"pgfnum": "2294"
}
}
},
"8": {
"text": "twitter.github.com",
"created": "Tue, 27 Sep 2011 16:13:21 GMT",
"pgfnum": "2290",
"subs": {
"0": {
"text": "This server can be slow. Cache whatever it is we're accessing from there in S3 space.",
"created": "Tue, 27 Sep 2011 16:13:25 GMT",
"pgfnum": "2291"
}
}
}
}
},
"3": {
"text": "9/27/11 by DW",
"created": "Tue, 27 Sep 2011 13:09:19 GMT",
"pgfnum": "2282",
"subs": {
"0": {
"text": "Server Monitor",
"created": "Tue, 27 Sep 2011 16:07:21 GMT",
"pgfnum": "2285",
"type": "blogpost",
"subs": {
"0": {
"text": "Let's bring its user interface up to date, and require a login.",
"created": "Tue, 27 Sep 2011 16:07:32 GMT",
"pgfnum": "2286"
},
"1": {
"text": "Add classes to the table in the display, and everything else to bring it inline with builtins.webapp.",
"created": "Tue, 27 Sep 2011 16:15:01 GMT",
"pgfnum": "2292"
},
"2": {
"text": "The time at the top of the display is the time of the last scan.",
"created": "Tue, 27 Sep 2011 16:08:00 GMT",
"pgfnum": "2287"
},
"3": {
"text": "Log errors.",
"created": "Tue, 27 Sep 2011 16:11:04 GMT",
"pgfnum": "2288"
},
"4": {
"text": "Log command in menu.",
"created": "Tue, 27 Sep 2011 16:11:08 GMT",
"pgfnum": "2289"
},
"5": {
"text": "Errors display in tooltips.",
"created": "Tue, 27 Sep 2011 18:58:29 GMT",
"pgfnum": "2297"
},
"6": {
"text": "Automatic updating. Every hour as long as we're in active development, then it can fall back to nightly updates.",
"created": "Tue, 27 Sep 2011 18:59:56 GMT",
"pgfnum": "2298"
},
"7": {
"text": "Parts",
"created": "Tue, 27 Sep 2011 19:24:17 GMT",
"pgfnum": "2305",
"subs": {
"0": {
"text": "webApp.viewMenu"
},
"1": {
"text": "serverMonitorSuite.background.everyHour"
},
"2": {
"text": "serverMonitorSuite.background.everyMinute"
},
"3": {
"text": "serverMonitorSuite.data.statusTableIntroText"
},
"4": {
"text": "serverMonitorSuite.init"
},
"5": {
"text": "serverMonitorSuite.pingOneServer"
},
"6": {
"text": "serverMonitorSuite.viewMenu"
},
"7": {
"text": "serverMonitorSuite.viewStatusTable"
},
"8": {
"text": "serverMonitorWebsite"
},
"9": {
"text": "serverMonitorInfo"
}
}
}
}
},
"1": {
"text": "Messages while updating",
"created": "Tue, 27 Sep 2011 13:09:20 GMT",
"pgfnum": "2283",
"type": "blogpost",
"subs": {
"0": {
"text": "In a recent release I completely quieted down the rootupdates process. It used to display a flurry of incomprehensible messages in the About window. Now it's too quiet.",
"created": "Tue, 27 Sep 2011 13:09:32 GMT",
"pgfnum": "2284"
}
}
},
"2": {
"text": "Eliminate glitchy period-adding",
"created": "Tue, 27 Sep 2011 19:20:35 GMT",
"fldisquscomments": "true",
"pgfnum": "2299",
"type": "blogpost",
"subs": {
"0": {
"text": "Don't add a period to a string like this: \"It is not possible to run for president as a Repub these days without having to become a parody of yourself.\"",
"created": "Tue, 27 Sep 2011 19:20:46 GMT",
"pgfnum": "2300"
},
"1": {
"text": "An example of a tweet that benefits from the new way of doing things.",
"created": "Tue, 27 Sep 2011 20:31:32 GMT",
"pgfnum": "2307"
},
"2": {
"text": "We also handle single-quotes this way.",
"created": "Tue, 27 Sep 2011 19:21:40 GMT",
"pgfnum": "2302"
},
"3": {
"text": "This comes up in radioReallySimple.root, which is used by Blork to push messages to Twitter.",
"created": "Tue, 27 Sep 2011 19:20:56 GMT",
"pgfnum": "2301"
},
"4": {
"text": "The change was in string.addPeriodToSentence.",
"created": "Tue, 27 Sep 2011 19:23:19 GMT",
"pgfnum": "2304"
}
}
}
}
},
"4": {
"text": "9/25/11 by DW",
"created": "Sun, 25 Sep 2011 15:13:07 GMT",
"pgfnum": "2231",
"subs": {
"0": {
"text": "ServerMonitor tool",
"created": "Sun, 25 Sep 2011 16:47:56 GMT",
"pgfnum": "2249",
"type": "blogpost",
"subs": {
"0": {
"text": "I've been using this tool for years to keep track of my servers. Now I want to start integrating it with the system we're using for all this Blorking and WorldOutlining.",
"created": "Sun, 25 Sep 2011 16:48:02 GMT",
"pgfnum": "2250"
},
"1": {
"text": "How to hook a server into a ServerMonitor.",
"created": "Sun, 25 Sep 2011 22:17:57 GMT",
"pgfnum": "2251",
"subs": {
"0": {
"text": "New prefs panel in the opmlEditor menu, under Server Prefs. You say whether or not you want to respond to servermonitor RPC requests, and you can specify an IP address that you're willing to respond to.",
"created": "Sun, 25 Sep 2011 22:18:12 GMT",
"pgfnum": "2252"
}
}
},
"2": {
"text": "New howto that explains setting up a ServerMonitor.",
"created": "Sun, 25 Sep 2011 23:49:48 GMT",
"pgfnum": "2276",
"subs": {
"0": {
"text": "http://servermonitor.blorkmark.com/",
"created": "Sun, 25 Sep 2011 23:50:02 GMT",
"pgfnum": "2277"
}
}
},
"3": {
"text": "Parts",
"created": "Sun, 25 Sep 2011 22:40:23 GMT",
"pgfnum": "2257",
"subs": {
"0": {
"text": "opmlEditor.init"
},
"1": {
"text": "opmlEditor.rpcHandlers"
},
"2": {
"text": "opmlEditor.data.outlines.prefs"
},
"3": {
"text": "user.betty.rpcHandlers.pingServerMonitor"
}
}
}
}
},
"1": {
"text": "Eliminating funky border on log pages",
"created": "Sun, 25 Sep 2011 22:21:12 GMT",
"pgfnum": "2253",
"type": "blogpost",
"subs": {
"0": {
"text": "Put the log page in a divLogPage div (new class).",
"created": "Sun, 25 Sep 2011 22:21:33 GMT",
"pgfnum": "2256"
},
"1": {
"text": "Parts",
"created": "Sun, 25 Sep 2011 22:21:20 GMT",
"pgfnum": "2254",
"subs": {
"0": {
"text": "log2.view",
"created": "Sun, 25 Sep 2011 22:21:28 GMT",
"pgfnum": "2255"
},
"1": {
"text": "webApp.data.styles"
}
}
}
}
},
"2": {
"text": "Tool Catalog page",
"created": "Sun, 25 Sep 2011 15:20:56 GMT",
"pgfnum": "2241",
"type": "blogpost",
"subs": {
"0": {
"text": "Similar cleanup work here.",
"created": "Sun, 25 Sep 2011 15:21:00 GMT",
"pgfnum": "2242"
},
"1": {
"text": "Added a column that shows the version number of the tool.",
"created": "Sun, 25 Sep 2011 16:02:12 GMT",
"pgfnum": "2244"
},
"2": {
"text": "The Install link is only active when you're accessing the site on the local machine. You can't install tools over the web.",
"created": "Sun, 25 Sep 2011 16:01:45 GMT",
"pgfnum": "2243"
},
"3": {
"text": "The introductory comment at the top of the page mentions this.",
"created": "Sun, 25 Sep 2011 16:02:34 GMT",
"pgfnum": "2246"
},
"4": {
"text": "If there's an asterisk next to the Install link, that indicates that the tool is already installed on this server. If you click the Install link, it will be re-installed, but all your data will remain intact. Just the code is updated.",
"created": "Sun, 25 Sep 2011 16:02:24 GMT",
"pgfnum": "2245"
},
"5": {
"text": "Parts",
"created": "Sun, 25 Sep 2011 16:26:10 GMT",
"pgfnum": "2247",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.catalogIntro"
},
"1": {
"text": "opmlEditor.viewCatalog"
},
"2": {
"text": "opmlEditor.website.[\"#template\"]"
}
}
}
}
},
"3": {
"text": "Users page",
"created": "Sun, 25 Sep 2011 15:13:08 GMT",
"pgfnum": "2232",
"type": "blogpost",
"subs": {
"0": {
"text": "Cleanup work on the opmlEditor website Users page.",
"created": "Sun, 25 Sep 2011 15:15:44 GMT",
"pgfnum": "2240"
},
"1": {
"text": "Corrected justification of table cells.",
"created": "Sun, 25 Sep 2011 15:13:14 GMT",
"pgfnum": "2233"
},
"2": {
"text": "Instead of reporting the count of inits for each user, a very large number, we report the number of validations. The number of times the username and password were verified.",
"created": "Sun, 25 Sep 2011 15:13:27 GMT",
"pgfnum": "2234"
},
"3": {
"text": "The table no longer fills 100 percent of the horizontal space. There just isn't that much information.",
"created": "Sun, 25 Sep 2011 15:14:05 GMT",
"pgfnum": "2235"
},
"4": {
"text": "Got rid of extra cell borders.",
"created": "Sun, 25 Sep 2011 15:14:24 GMT",
"pgfnum": "2236"
},
"5": {
"text": "Considering adding the New User command to this page, but haven't done anything about it yet.",
"created": "Sun, 25 Sep 2011 15:14:42 GMT",
"pgfnum": "2237"
},
"6": {
"text": "Parts",
"created": "Sun, 25 Sep 2011 15:15:05 GMT",
"pgfnum": "2238",
"subs": {
"0": {
"text": "opmlEditor.viewUsers"
},
"1": {
"text": "opmlEditor.website.[\"#template\"]"
}
}
}
}
}
}
},
"5": {
"text": "9/24/11 by DW",
"created": "Sat, 24 Sep 2011 13:56:44 GMT",
"pgfnum": "2204",
"subs": {
"0": {
"text": "River2: Optimize news page",
"created": "Sun, 25 Sep 2011 02:06:21 GMT",
"pgfnum": "2228",
"type": "blogpost",
"subs": {
"0": {
"text": "Now that we're tracking the URLs of the static objects we build, we can use the static JSON file instead of the dynamically generated page. Conserves dynamic resources, good thing.",
"created": "Sun, 25 Sep 2011 02:06:27 GMT",
"pgfnum": "2229"
},
"1": {
"text": "Part",
"created": "Sun, 25 Sep 2011 02:07:05 GMT",
"pgfnum": "2230",
"subs": {
"0": {
"text": "river2Suite.viewNews"
}
}
}
}
},
"1": {
"text": "River2: New users default feeds",
"created": "Sat, 24 Sep 2011 00:12:48 GMT",
"pgfnum": "2199",
"type": "blogpost",
"subs": {
"0": {
"text": "When you create a new user, they should not have an empty feed list or news page.",
"created": "Sat, 24 Sep 2011 23:05:20 GMT",
"pgfnum": "2215"
},
"1": {
"text": "So, when we create a new River2 user table, we also subscribe them to a set of default feeds.",
"created": "Sat, 24 Sep 2011 23:05:37 GMT",
"pgfnum": "2216"
},
"2": {
"text": "This is done in river2Suite.firewall when the new user shows up on the River2 site for the first time.",
"created": "Sun, 25 Sep 2011 01:42:30 GMT",
"pgfnum": "2227"
},
"3": {
"text": "There's a new prefs page that lets the sysop enter the URL of their own reading list. It defaults to a reading list I maintain.",
"created": "Sat, 24 Sep 2011 23:06:01 GMT",
"pgfnum": "2217"
},
"4": {
"text": "Screen shot."
},
"5": {
"text": "To test it.",
"created": "Sat, 24 Sep 2011 13:57:16 GMT",
"pgfnum": "2206",
"subs": {
"0": {
"text": "1. Create a new user in the opmlEditor menu. Username is testuser. (If you're using SLIde, as I am, you have to create the new user on the SLIde server. )",
"created": "Sat, 24 Sep 2011 13:57:22 GMT",
"pgfnum": "2207"
},
"1": {
"text": "2. Log in as test user in the opmlEditor site.",
"created": "Sat, 24 Sep 2011 13:57:45 GMT",
"pgfnum": "2208"
},
"2": {
"text": "3. Visit the River2 site.",
"created": "Sat, 24 Sep 2011 13:57:55 GMT",
"pgfnum": "2209"
},
"3": {
"text": "4. Visit the Feeds page.",
"created": "Sat, 24 Sep 2011 13:58:01 GMT",
"pgfnum": "2210"
},
"4": {
"text": "You should see some feeds.",
"created": "Sat, 24 Sep 2011 13:58:12 GMT",
"pgfnum": "2211"
}
}
},
"6": {
"text": "Parts",
"created": "Sat, 24 Sep 2011 23:08:40 GMT",
"pgfnum": "2221",
"subs": {
"0": {
"text": "river2Suite.data.defaultFeeds"
},
"1": {
"text": "river2Suite.data.prefsOutline"
},
"2": {
"text": "river2Suite.init"
},
"3": {
"text": "river2Suite.subscribeToFeedsInList"
},
"4": {
"text": "river2Suite.subscribeUserToFeed"
},
"5": {
"text": "river2Suite.firewall"
}
}
}
}
},
"2": {
"text": "River2: Delete useless stats",
"created": "Sun, 25 Sep 2011 01:34:13 GMT",
"pgfnum": "2223",
"type": "blogpost",
"subs": {
"0": {
"text": "Implement a maintenence flag to get rid of some stats that were helping test performance a little less than a year ago. No reason to keep maintaining them. And we no longer init the deleted stats.",
"created": "Sun, 25 Sep 2011 01:37:58 GMT",
"pgfnum": "2226"
},
"1": {
"text": "Parts",
"created": "Sun, 25 Sep 2011 01:34:20 GMT",
"pgfnum": "2224",
"subs": {
"0": {
"text": "river2Suite.utilities.deleteUselessStats",
"created": "Sun, 25 Sep 2011 01:34:22 GMT",
"pgfnum": "2225"
},
"1": {
"text": "river2Suite.initUser"
},
"2": {
"text": "river2Suite.background.everyMinute"
}
}
}
}
},
"3": {
"text": "River2: static stats",
"created": "Fri, 23 Sep 2011 23:50:52 GMT",
"pgfnum": "2195",
"type": "blogpost",
"subs": {
"0": {
"text": "When we build something static, store its URL in the user's stats table.",
"created": "Fri, 23 Sep 2011 23:51:02 GMT",
"pgfnum": "2196"
},
"1": {
"text": "Parts",
"created": "Sat, 24 Sep 2011 00:04:34 GMT",
"pgfnum": "2197",
"subs": {
"0": {
"text": "river2Suite.static.buildBeautifulRiver"
},
"1": {
"text": "river2Suite.static.buildJavaScriptInclude"
},
"2": {
"text": "river2Suite.static.buildJsonNews"
},
"3": {
"text": "river2Suite.static.buildOpml"
}
}
}
}
}
}
},
"6": {
"text": "9/23/11 by DW",
"created": "Fri, 23 Sep 2011 13:34:16 GMT",
"pgfnum": "2168",
"subs": {
"0": {
"text": "worldOutline v0.41",
"created": "Fri, 23 Sep 2011 17:09:30 GMT",
"fldisquscomments": "true",
"pgfnum": "2185",
"type": "blogpost",
"subs": {
"0": {
"text": "worldOutline.root is now updated with the latest changes.",
"created": "Fri, 23 Sep 2011 17:09:57 GMT",
"pgfnum": "2186"
},
"1": {
"text": "It has a menu like opmlEditor, Blork and River2.",
"created": "Fri, 23 Sep 2011 17:10:21 GMT",
"pgfnum": "2187"
},
"2": {
"text": "It appears in the dropdown menu.",
"created": "Fri, 23 Sep 2011 17:10:37 GMT",
"pgfnum": "2188"
},
"3": {
"text": "It has a panel in the system prefs.",
"created": "Fri, 23 Sep 2011 17:10:49 GMT",
"pgfnum": "2189"
},
"4": {
"text": "The stylesheet has been reworked. Simpler, and compatible with Bootstrap.",
"created": "Fri, 23 Sep 2011 17:10:58 GMT",
"pgfnum": "2190"
},
"5": {
"text": "Parts",
"created": "Fri, 23 Sep 2011 17:11:19 GMT",
"pgfnum": "2191",
"subs": {
"0": {
"text": "html.directory.getBreadcrumbString"
},
"1": {
"text": "html.directory.viewDirectory"
},
"2": {
"text": "opmlEditor.viewMenu"
},
"3": {
"text": "webApp.viewMenu"
},
"4": {
"text": "worldOutlineInfo.name"
},
"5": {
"text": "worldOutlineInfo.version"
},
"6": {
"text": "worldOutlineSuite.data.html.domainsIntro"
},
"7": {
"text": "worldOutlineSuite.data.prefsForSetup"
},
"8": {
"text": "worldOutlineSuite.data.prefsInactive"
},
"9": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"10": {
"text": "worldOutlineSuite.data.virgin.template"
},
"11": {
"text": "worldOutlineSuite.init"
},
"12": {
"text": "worldOutlineSuite.main"
},
"13": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"14": {
"text": "worldOutlineSuite.viewDomains"
},
"15": {
"text": "worldOutlineSuite.viewMenu"
},
"16": {
"text": "worldOutlineWebsite.prefs"
}
}
}
}
},
"1": {
"text": "Split worldoutline prefs",
"created": "Fri, 23 Sep 2011 13:42:10 GMT",
"pgfnum": "2176",
"subs": {
"0": {
"text": "system",
"created": "Fri, 23 Sep 2011 13:42:18 GMT",
"pgfnum": "2177",
"subs": {
"0": {
"text": "caching",
"created": "Fri, 23 Sep 2011 13:42:20 GMT",
"pgfnum": "2178"
}
}
}
}
},
"2": {
"text": "Reviewing styles in WorldOutline template",
"created": "Fri, 23 Sep 2011 13:34:16 GMT",
"pgfnum": "2169",
"type": "blogpost",
"subs": {
"0": {
"text": "I set up a style section at the end of the head section in my template. These styles are the last to be applied, so the override all the others. My goal is to hack at the styles until it makes sense. Right now it's a total hodgepodge of stuff that was added here and there by different people. The whole doesn't make sense.",
"created": "Fri, 23 Sep 2011 13:34:32 GMT",
"pgfnum": "2170"
},
"1": {
"text": "Also, hacking at the the macros for font size, style, color. May add them back later. Can eliminate the prefs panel. I want the styles to be self-documenting and simple.",
"created": "Fri, 23 Sep 2011 13:37:16 GMT",
"pgfnum": "2175"
},
"2": {
"text": "blogpost",
"created": "Fri, 23 Sep 2011 13:35:42 GMT",
"pgfnum": "2171",
"subs": {
"0": {
"text": "Reviewed last night. Looks decent.",
"created": "Fri, 23 Sep 2011 13:35:47 GMT",
"pgfnum": "2172"
}
}
},
"3": {
"text": "crumb trails",
"created": "Fri, 23 Sep 2011 13:36:01 GMT",
"pgfnum": "2173",
"subs": {
"0": {
"text": "Reviewed, looks decent.",
"created": "Fri, 23 Sep 2011 13:36:07 GMT",
"pgfnum": "2174"
}
}
},
"4": {
"text": "directories",
"created": "Fri, 23 Sep 2011 13:56:11 GMT",
"pgfnum": "2179",
"subs": {
"0": {
"text": "No id's. I think they make sense in brochure websites. But the idea of coding style to the actual text of a headline, when that is so easy to change, is nonsensical. You're trying to create a design that any text can flow through. So until I understand how ID's would used and can explain them to people, they won't be there. One less thing to get in the way of grokking.",
"created": "Fri, 23 Sep 2011 13:56:14 GMT",
"pgfnum": "2180"
},
"1": {
"text": "directoryItems and directoryComments had different styles. That meant that folders and links had different styles (since a link is considered a comment). Changed it so they have the same style. Looks infinitely better.",
"created": "Fri, 23 Sep 2011 13:57:27 GMT",
"pgfnum": "2181"
}
}
},
"5": {
"text": "navmenu styles",
"created": "Fri, 23 Sep 2011 13:59:09 GMT",
"pgfnum": "2182",
"subs": {
"0": {
"text": "Go away. We no longer have a navmenu. (We never actually did, we had a menu. But it wasn't for nav'ing.)",
"created": "Fri, 23 Sep 2011 13:59:14 GMT",
"pgfnum": "2183"
}
}
}
}
}
}
},
"7": {
"text": "9/22/11 by DW",
"created": "Thu, 22 Sep 2011 14:49:51 GMT",
"pgfnum": "2124",
"subs": {
"0": {
"text": "WorldOutline conversion",
"created": "Thu, 22 Sep 2011 16:35:13 GMT",
"pgfnum": "2154",
"type": "blogpost",
"subs": {
"0": {
"text": "Okay let's see what it would take to convert worldOutline.root to the new UI regime.",
"created": "Thu, 22 Sep 2011 16:35:21 GMT",
"pgfnum": "2155"
},
"1": {
"text": "1. Convert worldoutlinesuite.viewmenu. Done, here's a screen shot.",
"created": "Thu, 22 Sep 2011 16:48:44 GMT",
"pgfnum": "2157"
},
"2": {
"text": "2. Revise the template. What's interesting is that I, as a user, completely control this.",
"created": "Thu, 22 Sep 2011 16:49:00 GMT",
"pgfnum": "2158",
"subs": {
"0": {
"text": "Moved the menu out of the <div id=\"header\"> and deleted the header div.",
"created": "Thu, 22 Sep 2011 16:55:48 GMT",
"pgfnum": "2159"
},
"1": {
"text": "That made the menu look reasonable, except for the status message.",
"created": "Thu, 22 Sep 2011 16:56:46 GMT",
"pgfnum": "2160"
},
"2": {
"text": "Problem with the status message is that divOpmlMenubarStatus is not defined. Solved the problem in a non-optimal way in worldOutlineSuite.setDefaultAtts by adding webApp.data.styles to the end of the systemstyles macro text.",
"created": "Thu, 22 Sep 2011 17:01:08 GMT",
"pgfnum": "2161"
}
}
},
"3": {
"text": "3. Add worldOutline to the dropdown menu. FTW.",
"created": "Thu, 22 Sep 2011 17:09:39 GMT",
"pgfnum": "2164",
"subs": {
"0": {
"text": "We need to be sure the domain in config.mainresponder.domains is the one the sysop wants to use.",
"created": "Thu, 22 Sep 2011 17:19:51 GMT",
"pgfnum": "2165"
},
"1": {
"text": "Need a system-level pref for this?",
"created": "Thu, 22 Sep 2011 17:20:18 GMT",
"pgfnum": "2166"
}
}
},
"4": {
"text": "4. Convert the Prefs.",
"created": "Thu, 22 Sep 2011 17:09:23 GMT",
"pgfnum": "2162",
"subs": {
"0": {
"text": "Done. But they still need to be split into system-level and user-level.",
"created": "Thu, 22 Sep 2011 17:09:28 GMT",
"pgfnum": "2163"
}
}
},
"5": {
"text": "5. Change the name in worldOutline.root from worldOutline to World Outline.",
"created": "Thu, 22 Sep 2011 17:21:05 GMT",
"pgfnum": "2167"
},
"6": {
"text": "Time for a break!!",
"created": "Thu, 22 Sep 2011 16:35:38 GMT",
"pgfnum": "2156"
}
}
},
"1": {
"text": "Playing with the template",
"created": "Thu, 22 Sep 2011 15:42:09 GMT",
"pgfnum": "2147",
"type": "blogpost",
"subs": {
"0": {
"text": "I added a new macro called <%systemStyles%> that links in the Bootstrap toolkit styles, just to see what kind of hell would break loose. But it's not actually too bad. So far all I see is that the head text is cut into by the menu bar, and it overwrites part of the crumb trail. That's easily fixed with some padding, I think.",
"created": "Thu, 22 Sep 2011 15:42:12 GMT",
"pgfnum": "2148"
},
"1": {
"text": "The text of blog post nodes became too small and hard to read.",
"created": "Thu, 22 Sep 2011 15:43:44 GMT",
"pgfnum": "2149"
},
"2": {
"text": "However, <code> elements look downright beautiful.",
"created": "Thu, 22 Sep 2011 15:43:57 GMT",
"pgfnum": "2150"
},
"3": {
"text": "The text of non-blogpost nodes is gray, but the size is okay.",
"created": "Thu, 22 Sep 2011 15:46:47 GMT",
"pgfnum": "2153"
},
"4": {
"text": "Here's a blockquote:",
"created": "Thu, 22 Sep 2011 15:44:41 GMT",
"pgfnum": "2151"
},
"5": {
"text": "Second attempt at caching the attributes of a section of the outline. The goal is to handle an onslaught of hits to a single page that comes when a link gets tweeted. New strategies: 1. If there are more than 25 elements in the cache, delete the cache. Keep it from growing too big, keep from caching things that aren't accessed much (no point). 2. If we reference an item that was cached more than 3 minutes ago, delete it. Makes sure things get recalc'd periodically.
",
"created": "Thu, 22 Sep 2011 15:45:47 GMT",
"pgfnum": "2152"
}
}
},
"2": {
"text": "Test of caching, flDisqusComments",
"created": "Thu, 22 Sep 2011 15:29:10 GMT",
"fldisquscomments": "true",
"pgfnum": "2138",
"type": "blogpost",
"subs": {
"0": {
"text": "I wrote a \"longer tweet\" below in my scratchpad and posted a link to it to Twitter. The caching worked like a champ!",
"created": "Thu, 22 Sep 2011 15:29:15 GMT",
"pgfnum": "2139"
},
"1": {
"text": "The performance monitor barley broke a sweat. And I was able to easily make changes to the outline while it was being banged on. Hey this worked. :-)",
"created": "Thu, 22 Sep 2011 15:34:05 GMT",
"pgfnum": "2145"
},
"2": {
"text": "I also tested something I always wanted to try, setting the attribute flDisqusComments true on a single headline. Sure enough, you get a place to add comments. Yehi! :-)",
"created": "Thu, 22 Sep 2011 15:30:08 GMT",
"pgfnum": "2140"
},
"3": {
"text": "You can do this manually by placing the cursor on the headline of a post and opening the Quick Script window from the Misc menu and pasting this iin, and click on the Run button:",
"created": "Thu, 22 Sep 2011 15:30:48 GMT",
"pgfnum": "2141"
},
"4": {
"text": "op.attributes.setone (\"flDisqusComments\", true)",
"created": "Thu, 22 Sep 2011 15:31:26 GMT",
"pgfnum": "2142"
},
"5": {
"text": "Then save the outline. Go view it in the world outline and you should see a comment box.",
"created": "Thu, 22 Sep 2011 15:31:29 GMT",
"pgfnum": "2143"
},
"6": {
"text": "I set the attribute true on this worknote.",
"created": "Thu, 22 Sep 2011 15:32:22 GMT",
"pgfnum": "2144"
}
}
},
"3": {
"text": "Caching in WorldOutline",
"created": "Thu, 22 Sep 2011 14:49:52 GMT",
"pgfnum": "2125",
"type": "blogpost",
"subs": {
"0": {
"text": "Taking another look at caching in worldOutlineSuite.main. Last time I tried it, I ran into problems.",
"created": "Thu, 22 Sep 2011 14:50:17 GMT",
"pgfnum": "2126"
},
"1": {
"text": "The goal is to handle an onslaught of hits to a single page that comes when a link gets tweeted.",
"created": "Thu, 22 Sep 2011 14:50:28 GMT",
"pgfnum": "2127"
},
"2": {
"text": "New strategies:",
"created": "Thu, 22 Sep 2011 14:50:43 GMT",
"pgfnum": "2128",
"subs": {
"0": {
"text": "1. If there are more than 25 elements in the cache, delete the cache. Keep it from growing too big, keep from caching things that aren't accessed much (no point).",
"created": "Thu, 22 Sep 2011 14:50:52 GMT",
"pgfnum": "2129"
},
"1": {
"text": "2. If we reference an item that was cached more than 3 minutes ago, delete it. Makes sure things get recalc'd periodically.",
"created": "Thu, 22 Sep 2011 14:50:57 GMT",
"pgfnum": "2130"
}
}
},
"3": {
"text": "I have this implemented on my server, worldoutline.scripting.com. I want to see how it performs and if there are glitches.",
"created": "Thu, 22 Sep 2011 14:51:00 GMT",
"pgfnum": "2131"
}
}
}
}
},
"8": {
"text": "9/21/11 by DW",
"created": "Wed, 21 Sep 2011 13:28:27 GMT",
"pgfnum": "2090",
"subs": {
"0": {
"text": "opmlEditor has a version",
"created": "Wed, 21 Sep 2011 20:44:49 GMT",
"pgfnum": "2121",
"subs": {
"0": {
"text": "I stopped bumping it, but now am resuming it.",
"created": "Wed, 21 Sep 2011 20:44:55 GMT",
"pgfnum": "2122"
},
"1": {
"text": "It displays in the status area in the menu for the opmlEditor website.",
"created": "Wed, 21 Sep 2011 20:45:15 GMT",
"pgfnum": "2123"
}
}
},
"1": {
"text": "Bootstrap 1.3.0 cleanup",
"created": "Wed, 21 Sep 2011 13:28:29 GMT",
"pgfnum": "2091",
"type": "blogpost",
"subs": {
"0": {
"text": "Upgraded to Bootstrap 1.3.0. I got the one feature I was dying for, the Dropdown menu in the menubar. Now it's time to fix the obvious stuff that broke, and also finish the initial implementation of the dropdown.",
"created": "Wed, 21 Sep 2011 13:28:51 GMT",
"pgfnum": "2092"
},
"1": {
"text": "1. The dropdown should only be visible to admin-like users.",
"created": "Wed, 21 Sep 2011 13:30:03 GMT",
"pgfnum": "2093",
"subs": {
"0": {
"text": "This is a feature we had in Manila, and it worked -- so I feel pretty good about.",
"created": "Wed, 21 Sep 2011 15:39:33 GMT",
"pgfnum": "2113"
},
"1": {
"text": "New pref and pref page.",
"created": "Wed, 21 Sep 2011 15:39:45 GMT",
"pgfnum": "2114"
}
}
},
"2": {
"text": "2. The cell alignment on the zebra-striped tables is broken again.",
"created": "Wed, 21 Sep 2011 13:30:36 GMT",
"pgfnum": "2094",
"subs": {
"0": {
"text": "Actually this didn't turn out to be true. Easy to fix! :)",
"created": "Wed, 21 Sep 2011 16:11:06 GMT",
"pgfnum": "2118"
}
}
},
"3": {
"text": "3. The zebra-striped tables now have a thin gray border.",
"created": "Wed, 21 Sep 2011 13:31:12 GMT",
"pgfnum": "2096"
},
"4": {
"text": "4. Text in River2's menu is too big.",
"created": "Wed, 21 Sep 2011 13:30:52 GMT",
"pgfnum": "2095",
"subs": {
"0": {
"text": "In the template for the River2 site, I moved the default.css inclusion before the inclusion of the Bootstrap stuff. As expected, the menus now look exactly right, but the text in the river is bloated. Let's see if I can patch that up.",
"created": "Wed, 21 Sep 2011 15:16:10 GMT",
"pgfnum": "2110"
},
"1": {
"text": "I got the river to look marginally okay, but I really need some help here, thoughtful help. I'm trying to undo messes, and want to keep the patches to a minimum. That's been the problem with the CSS overall, it all needs more thought.",
"created": "Wed, 21 Sep 2011 15:17:07 GMT",
"pgfnum": "2111"
}
}
},
"5": {
"text": "5. Need to find a place for the status message if there's a dropdown menu.",
"created": "Wed, 21 Sep 2011 13:47:14 GMT",
"pgfnum": "2101",
"subs": {
"0": {
"text": "Heh. I used the menu title. Really egregious. :-)",
"created": "Wed, 21 Sep 2011 13:50:23 GMT",
"pgfnum": "2102"
}
}
},
"6": {
"text": "6. Home page of opmlEditor site",
"created": "Wed, 21 Sep 2011 15:07:02 GMT",
"pgfnum": "2107",
"type": "blogpost",
"subs": {
"0": {
"text": "It now shows more info.",
"created": "Wed, 21 Sep 2011 15:07:09 GMT",
"pgfnum": "2108"
}
}
},
"7": {
"text": "7. opmlEditor menu gets status",
"created": "Wed, 21 Sep 2011 14:33:26 GMT",
"pgfnum": "2105",
"subs": {
"0": {
"text": "I want to know version and username.",
"created": "Wed, 21 Sep 2011 14:33:31 GMT",
"pgfnum": "2106"
}
}
},
"8": {
"text": "Parts",
"created": "Wed, 21 Sep 2011 16:13:05 GMT",
"pgfnum": "2119",
"subs": {
"0": {
"text": "opmlEditor.init"
},
"1": {
"text": "opmlEditor.isUserAdminLike"
},
"2": {
"text": "opmlEditor.data.outlines.prefs"
},
"3": {
"text": "opmlEditor.viewMenu"
},
"4": {
"text": "opmlEditor.website.[\"#template\"]"
},
"5": {
"text": "opmlEditor.website.index"
},
"6": {
"text": "beautWebsite.[\"#template\"]"
},
"7": {
"text": "river2Website.[\"#template\"]"
},
"8": {
"text": "webApp.data.headIncludes"
},
"9": {
"text": "webApp.data.styles"
},
"10": {
"text": "webApp.viewMenu"
}
}
}
}
},
"2": {
"text": "Pinging rssCloud",
"created": "Wed, 21 Sep 2011 13:33:29 GMT",
"pgfnum": "2097",
"type": "blogpost",
"subs": {
"0": {
"text": "My pings weren't going through for some reason, but I just needed to re-authorize, everything was working all the way to the last step.",
"created": "Wed, 21 Sep 2011 13:33:38 GMT",
"pgfnum": "2098"
}
}
},
"3": {
"text": "Connecting with Facebook",
"created": "Wed, 21 Sep 2011 13:33:46 GMT",
"pgfnum": "2099",
"subs": {
"0": {
"text": "Yet another OAuth implementation.",
"created": "Wed, 21 Sep 2011 13:33:51 GMT",
"pgfnum": "2100"
}
}
}
}
},
"9": {
"text": "9/20/11 by DW",
"created": "Tue, 20 Sep 2011 13:50:59 GMT",
"pgfnum": "2052",
"subs": {
"0": {
"text": "Popup menu in menu bar",
"created": "Tue, 20 Sep 2011 23:08:55 GMT",
"pgfnum": "2083",
"type": "blogpost",
"subs": {
"0": {
"text": "I finally got Bootstrap to do the popup menu in the menu bar.",
"created": "Tue, 20 Sep 2011 23:08:56 GMT",
"pgfnum": "2084"
},
"1": {
"text": "The menu is used to navigate between apps in the browser, and the System control panel.",
"created": "Tue, 20 Sep 2011 23:09:19 GMT",
"pgfnum": "2085"
},
"2": {
"text": "The question is, how does it know what to put in the menu and who to show the menu to.",
"created": "Tue, 20 Sep 2011 23:09:46 GMT",
"pgfnum": "2086"
},
"3": {
"text": "To begin with, and this will be relaxed later, the menu is just visible to admin.",
"created": "Tue, 20 Sep 2011 23:10:05 GMT",
"pgfnum": "2087"
},
"4": {
"text": "And it shows River2, if it's present, and System.",
"created": "Tue, 20 Sep 2011 23:10:26 GMT",
"pgfnum": "2088"
},
"5": {
"text": "That's where we start.",
"created": "Tue, 20 Sep 2011 23:10:48 GMT",
"pgfnum": "2089"
}
}
},
"1": {
"text": "River2 pref to disable downloads",
"created": "Tue, 20 Sep 2011 16:10:42 GMT",
"pgfnum": "2078",
"type": "blogpost",
"subs": {
"0": {
"text": "New checkbox in the River2 section of the opmlEditor prefs. Screen shot.",
"created": "Tue, 20 Sep 2011 16:17:31 GMT",
"pgfnum": "2082"
},
"1": {
"text": "Why? I have a server that's having troubles with downloading podcasts. I don't actually need it to do it at all, I never access the stuff it downloads. It's a waste of bandwidth.",
"created": "Tue, 20 Sep 2011 16:10:48 GMT",
"pgfnum": "2079"
},
"2": {
"text": "Parts: river2suite.data.prefsOutline",
"created": "Tue, 20 Sep 2011 14:28:47 GMT",
"pgfnum": "2068"
}
}
},
"2": {
"text": "Improvements to history limiting",
"created": "Tue, 20 Sep 2011 15:43:36 GMT",
"pgfnum": "2072",
"type": "blogpost",
"subs": {
"0": {
"text": "While I was running it on one of my servers, I saw some immediate opportunities for improvement.",
"created": "Tue, 20 Sep 2011 15:43:47 GMT",
"pgfnum": "2073"
},
"1": {
"text": "1. Wait a second after deleting each table to give other threads a chance to run. If you're subscribed to hundreds of feeds as I am, each deletion, a day's worth of news, can take a few seconds.",
"created": "Tue, 20 Sep 2011 15:44:08 GMT",
"pgfnum": "2074"
},
"2": {
"text": "2. Only delete 7 days at a time. This means if you waited a long time before turning it on, it might take a few nights to get all the old stuff cleared out. Otherwise it seems like too much work to do in one shot. Better to break it up.",
"created": "Tue, 20 Sep 2011 15:44:50 GMT",
"pgfnum": "2075"
},
"3": {
"text": "3. Log the result.",
"created": "Tue, 20 Sep 2011 15:45:46 GMT",
"pgfnum": "2076"
},
"4": {
"text": "Part: river2Suite.utilities.limitRiverHistory",
"created": "Tue, 20 Sep 2011 15:46:01 GMT",
"pgfnum": "2077"
}
}
},
"3": {
"text": "flLimitRiverHistory in River2",
"created": "Tue, 20 Sep 2011 14:24:59 GMT",
"pgfnum": "2063",
"type": "blogpost",
"subs": {
"0": {
"text": "New opmlEditor level prefs panel allows you to turn on the Limit River History pref.",
"created": "Tue, 20 Sep 2011 14:39:46 GMT",
"pgfnum": "2071"
},
"1": {
"text": "This pref is initialized false. I'm probably going to change the default to true, but first I want to test it out on a new user setup.",
"created": "Tue, 20 Sep 2011 14:25:03 GMT",
"pgfnum": "2064"
},
"2": {
"text": "It's a good idea to turn this on, and leave the number of days at the default value of 31.",
"created": "Tue, 20 Sep 2011 14:37:19 GMT",
"pgfnum": "2070"
},
"3": {
"text": "Parts: river2suite.data.prefsOutline",
"created": "Tue, 20 Sep 2011 14:28:47 GMT",
"pgfnum": "2068"
}
}
},
"4": {
"text": "Static folders in River2",
"created": "Tue, 20 Sep 2011 13:51:00 GMT",
"pgfnum": "2053",
"type": "blogpost",
"subs": {
"0": {
"text": "David Jacobs reports that initially his \"rivers\" folder was structured incorrectly. I was able to reproduce the problem.",
"created": "Tue, 20 Sep 2011 13:51:17 GMT",
"pgfnum": "2054"
},
"1": {
"text": "At first it was thought to be a problem in Mac OS X Lion, but not so. When we init the user-level data, we set the pref flSubfolder to false. But later in the booting-up process, when we set up the admin user, we set it true. If there was a static save between the two events it would come out incorrect. Luckily that happened when I tried to reproduce the problem. It wouldn't have happened very often.",
"created": "Tue, 20 Sep 2011 13:51:43 GMT",
"pgfnum": "2055"
},
"2": {
"text": "Screen shots: The incorrect structure. As it was later corrected.",
"created": "Tue, 20 Sep 2011 13:54:25 GMT",
"pgfnum": "2058"
},
"3": {
"text": "The fix is to initialize it to true. We want folders for each user from now-on.",
"created": "Tue, 20 Sep 2011 13:53:03 GMT",
"pgfnum": "2056"
},
"4": {
"text": "Part: river2suite.inituser.",
"created": "Tue, 20 Sep 2011 13:53:22 GMT",
"pgfnum": "2057"
}
}
}
}
},
"10": {
"text": "9/19/11 by DW",
"created": "Mon, 19 Sep 2011 14:59:31 GMT",
"pgfnum": "2013",
"subs": {
"0": {
"text": "Mapping domains",
"created": "Tue, 20 Sep 2011 01:26:31 GMT",
"pgfnum": "2046",
"type": "blogpost",
"subs": {
"0": {
"text": "Map worldoutline.scripting.com to point to pensacola.scripting.com.",
"created": "Tue, 20 Sep 2011 01:26:36 GMT",
"pgfnum": "2047"
},
"1": {
"text": "Domains that have to map to pensacola.scripting.com:",
"created": "Tue, 20 Sep 2011 01:28:47 GMT",
"pgfnum": "2049",
"subs": {
"0": {
"text": "blogdylan.com"
},
"1": {
"text": "blorkmark.com"
},
"2": {
"text": "mageddon.org"
},
"3": {
"text": "ou.rs"
},
"4": {
"text": "worldoutline.org"
}
}
},
"2": {
"text": "dave2.worldoutline.org becomes a cname for worldoutline.scripting.com."
},
"3": {
"text": "pensacola.scripting.com: 184.106.99.108"
},
"4": {
"text": "old rackspace server: 173.203.65.251"
}
}
},
"1": {
"text": "Stopping here",
"created": "Tue, 20 Sep 2011 01:23:49 GMT",
"pgfnum": "2040",
"type": "blogpost",
"subs": {
"0": {
"text": "Rather than rip apart the template for this site, which is what is needed to take the next step, I'm just going to move the DNS my worldoutline to point to this server. Now I will have a dedicated server on Rackspace to host my worldoutline. It won't have to share resources with Blork, or any of the other random apps I am hosting there.",
"created": "Tue, 20 Sep 2011 01:23:55 GMT",
"pgfnum": "2041"
},
"1": {
"text": "It held up pretty well all things considered, but now it's time to spread out. Spend a little money on growing this.",
"created": "Tue, 20 Sep 2011 01:25:01 GMT",
"pgfnum": "2042"
},
"2": {
"text": "I want to host Blork sites for more friends, and that's going to be on its own server too.",
"created": "Tue, 20 Sep 2011 01:25:19 GMT",
"pgfnum": "2043"
},
"3": {
"text": "This will give me the basis for smoothing out the sysadmin features for communities.",
"created": "Tue, 20 Sep 2011 01:25:39 GMT",
"pgfnum": "2044"
},
"4": {
"text": "A much better direction to go than diving into the depths here (which I would love to do).",
"created": "Tue, 20 Sep 2011 01:25:57 GMT",
"pgfnum": "2045"
}
}
},
"2": {
"text": "URLs in feed wrong",
"created": "Tue, 20 Sep 2011 00:56:35 GMT",
"pgfnum": "2034",
"type": "blogpost",
"subs": {
"0": {
"text": "We're getting the URLs in the feed from the wrong place.",
"created": "Tue, 20 Sep 2011 00:56:37 GMT",
"pgfnum": "2035"
},
"1": {
"text": "Need to get the userPrefs at the beginning of the save process.",
"created": "Tue, 20 Sep 2011 00:57:02 GMT",
"pgfnum": "2036"
},
"2": {
"text": "Instead of using user.opmlEditor.worldOutline.prefs.domain for the domain, use user.opmlEditor.worldOutline.stats.userPrefs.domain.",
"created": "Tue, 20 Sep 2011 00:59:41 GMT",
"pgfnum": "2039"
},
"3": {
"text": "Parts",
"created": "Tue, 20 Sep 2011 00:59:26 GMT",
"pgfnum": "2037",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.saveWorkspace",
"created": "Tue, 20 Sep 2011 00:59:27 GMT",
"pgfnum": "2038"
},
"1": {
"text": "opmlEditor.worldOutline.buildRss"
}
}
}
}
},
"3": {
"text": "Leap into the unknown",
"created": "Tue, 20 Sep 2011 00:32:16 GMT",
"pgfnum": "2029",
"type": "blogpost",
"subs": {
"0": {
"text": "Just added a new macro called systemStyles.",
"created": "Tue, 20 Sep 2011 00:32:23 GMT",
"pgfnum": "2030"
},
"1": {
"text": "It includes the Bootstrap stylesheet, our overrides, and the fonts we use in re Bootstrap.",
"created": "Tue, 20 Sep 2011 00:32:41 GMT",
"pgfnum": "2031"
},
"2": {
"text": "I can now replace the menu here with the same style menu we're using everywhere else.",
"created": "Tue, 20 Sep 2011 00:33:10 GMT",
"pgfnum": "2032"
},
"3": {
"text": "I'm sure that's just the beginning. I think the default template is going to get a fairly complete makeover.",
"created": "Tue, 20 Sep 2011 00:35:24 GMT",
"pgfnum": "2033"
}
}
},
"4": {
"text": "View button",
"created": "Mon, 19 Sep 2011 23:48:35 GMT",
"pgfnum": "2020",
"type": "blogpost",
"subs": {
"0": {
"text": "Instead of depending on the domain we're sending RPC messages to, we get the domain that the user has set up from the server. It's one of the prefs they can set."
},
"1": {
"text": "It should use the user's domain pref setting as stored on the server.",
"created": "Mon, 19 Sep 2011 23:48:41 GMT",
"pgfnum": "2021"
},
"2": {
"text": "Parts",
"created": "Mon, 19 Sep 2011 23:48:52 GMT",
"pgfnum": "2022",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.getUserPrefs",
"created": "Mon, 19 Sep 2011 23:48:55 GMT",
"pgfnum": "2023"
},
"1": {
"text": "opmlEditor.worldOutline.getUserPrefs"
},
"2": {
"text": "opmlEditor.worldOutline.viewHeadline"
}
}
}
}
},
"5": {
"text": "New home here",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm starting a new worldoutline server. Too many apps running on the old server. Now that we have SLIde, we can have multiple servers where we could formerly just have one.",
"created": "Mon, 19 Sep 2011 14:58:55 GMT",
"pgfnum": "2011"
}
}
},
"6": {
"text": "Test post",
"created": "Mon, 19 Sep 2011 15:05:22 GMT",
"pgfnum": "2014",
"type": "blogpost",
"subs": {
"0": {
"text": "Hello world.",
"created": "Mon, 19 Sep 2011 15:05:25 GMT",
"pgfnum": "2015"
},
"1": {
"text": "I find when I push a link to Twitter, I immediately get 500 pagereads.",
"created": "Mon, 19 Sep 2011 15:05:27 GMT",
"pgfnum": "2016"
},
"2": {
"text": "I think they're mostly robots. That's what the IP addresses look like. :-)",
"created": "Mon, 19 Sep 2011 15:05:40 GMT",
"pgfnum": "2017"
},
"3": {
"text": "In any case, this is a new server, I'm just checking it out.",
"created": "Mon, 19 Sep 2011 15:05:55 GMT",
"pgfnum": "2018"
},
"4": {
"text": "That's all folks!",
"created": "Mon, 19 Sep 2011 15:06:08 GMT",
"pgfnum": "2019"
}
}
}
}
},
"11": {
"text": "9/18/11 by DW",
"created": "Sun, 18 Sep 2011 12:00:16 GMT",
"pgfnum": "1964",
"subs": {
"0": {
"text": "Fixes for new Blork users",
"created": "Sun, 18 Sep 2011 18:57:00 GMT",
"pgfnum": "2001",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to create some new Blork users, but after the corner-turns to the popup window and the SLIde-based identity, some things weren't working or were missing.",
"created": "Sun, 18 Sep 2011 18:57:05 GMT",
"pgfnum": "2002"
},
"1": {
"text": "1. Needed to create new user tables when a new user comes into a Blork website.",
"created": "Sun, 18 Sep 2011 18:57:45 GMT",
"pgfnum": "2003"
},
"2": {
"text": "2. There was no way to connect your feed to Twitter. It's just the icon was missing from the popup window. Just pasted the macro in and it worked. But the icon had a white background. Replaced it with one that fills its space, so the background is irrelevant.",
"created": "Sun, 18 Sep 2011 18:58:41 GMT",
"pgfnum": "2006"
},
"3": {
"text": "3. Added tooltips to the Twitter icon and the NEW icon that's adjacent to it, so when you hover over it, you find out what it does.",
"created": "Sun, 18 Sep 2011 19:19:45 GMT",
"pgfnum": "2007"
},
"4": {
"text": "4. I went back to using Adjix for URL-shortening.",
"created": "Sun, 18 Sep 2011 19:20:59 GMT",
"pgfnum": "2008"
},
"5": {
"text": "Parts",
"created": "Sun, 18 Sep 2011 18:58:06 GMT",
"pgfnum": "2004",
"subs": {
"0": {
"text": "beautWebsite.[\"#filters\"].firstFilter",
"created": "Sun, 18 Sep 2011 18:58:07 GMT",
"pgfnum": "2005"
},
"1": {
"text": "radio2Suite.data.tweetBoxPopup"
},
"2": {
"text": "radio2Suite.data.html.twitterIcon"
},
"3": {
"text": "radio2Suite.data.html.newIcon"
}
}
}
}
},
"1": {
"text": "frontiernews.org linkage",
"created": "Sun, 18 Sep 2011 15:51:10 GMT",
"pgfnum": "1997",
"type": "blogpost",
"subs": {
"0": {
"text": "I was trying to find the Frontier News river so I googled \"frontier news\" and was reminded that I have a not-oft-updated WordPress blog at frontiernews.org. So I added a post pointing to the river and hellofrontier.com. I'm looking for other similar optimizations to make us easier to find when people are looking.",
"created": "Sun, 18 Sep 2011 15:51:13 GMT",
"pgfnum": "1998"
}
}
},
"2": {
"text": "Scrolling through news with spacebar",
"created": "Sun, 18 Sep 2011 13:53:53 GMT",
"pgfnum": "1987",
"type": "blogpost",
"subs": {
"0": {
"text": "Dan MacTough reports:",
"created": "Sun, 18 Sep 2011 13:54:03 GMT",
"pgfnum": "1988"
},
"1": {
"text": "In the CSS file named \"style\", you have a style for .divOpmlWebpageBody adding \"margin-top: 65px;\" that allows room for the menubar. However, using \"margin-top\" only affects the top of the page; every time you page down with the space bar, it scrolls 65px \"too far\". It would be better to use \"padding-top: 65px;\" rather than margin-top. That way, it always allocates those 65px at the top of the viewport. Now, when you page down with the space bar, it paginates perfectly.",
"created": "Sun, 18 Sep 2011 13:54:08 GMT",
"pgfnum": "1989"
},
"2": {
"text": "Made the change in webApp.data.styles.",
"created": "Sun, 18 Sep 2011 14:09:49 GMT",
"pgfnum": "1991"
}
}
},
"3": {
"text": "Text on log page is black",
"created": "Sun, 18 Sep 2011 13:41:25 GMT",
"pgfnum": "1982",
"type": "blogpost",
"subs": {
"0": {
"text": "Realized that now that we have control of the alignment of the cells in log pages, we also have control over the text color.",
"created": "Sun, 18 Sep 2011 13:41:31 GMT",
"pgfnum": "1983"
},
"1": {
"text": "I found the grey on grey to be really hard to read. So I just changed the text color to black, which is normal. Immense improvement, imho. :-)",
"created": "Sun, 18 Sep 2011 13:41:54 GMT",
"pgfnum": "1984"
},
"2": {
"text": "Screen shot.",
"created": "Sun, 18 Sep 2011 13:45:23 GMT",
"pgfnum": "1986"
},
"3": {
"text": "Part: webApp.data.styles",
"created": "Sun, 18 Sep 2011 13:42:29 GMT",
"pgfnum": "1985"
}
}
},
"4": {
"text": "Messages when updating",
"created": "Sun, 18 Sep 2011 13:23:03 GMT",
"pgfnum": "1980",
"type": "blogpost",
"subs": {
"0": {
"text": "Why all those annoying messages in the About window when updating.",
"created": "Sun, 18 Sep 2011 13:23:10 GMT",
"pgfnum": "1981"
},
"1": {
"text": "Part: rootUpdates.update."
}
}
},
"5": {
"text": "A bucket of changes in one parts-push",
"created": "Sun, 18 Sep 2011 14:11:56 GMT",
"pgfnum": "1992",
"type": "blogpost",
"subs": {
"0": {
"text": "A few little changes that make things nicer.",
"created": "Sun, 18 Sep 2011 14:12:04 GMT",
"pgfnum": "1993"
},
"1": {
"text": "Log code updates",
"created": "Sun, 18 Sep 2011 13:01:08 GMT",
"pgfnum": "1976",
"subs": {
"0": {
"text": "Added code to log updates to opml.root and tools.",
"created": "Sun, 18 Sep 2011 13:01:12 GMT",
"pgfnum": "1977"
}
}
},
"2": {
"text": "Added Log command to opmlEditor",
"created": "Sun, 18 Sep 2011 13:01:47 GMT",
"pgfnum": "1978",
"subs": {
"0": {
"text": "It shows all events logged on this server, unlike the log pages for each app, which only show the events logged by the app.",
"created": "Sun, 18 Sep 2011 13:01:54 GMT",
"pgfnum": "1979"
}
}
},
"3": {
"text": "Parts",
"created": "Sun, 18 Sep 2011 14:13:11 GMT",
"pgfnum": "1994",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.logPageIntro"
},
"1": {
"text": "opmlEditor.website.log"
},
"2": {
"text": "opmlEditor.viewMenu"
},
"3": {
"text": "Frontier.tools.commands.updateFrontTool"
},
"4": {
"text": "Frontier.tools.data.updateCommandScript"
}
}
}
}
},
"6": {
"text": "More River2 polish",
"created": "Sun, 18 Sep 2011 12:00:17 GMT",
"pgfnum": "1965",
"subs": {
"0": {
"text": "The howto situation/Docs command.",
"created": "Sun, 18 Sep 2011 12:00:24 GMT",
"pgfnum": "1966"
},
"1": {
"text": "What page opens when installation is finished?",
"created": "Sun, 18 Sep 2011 12:01:09 GMT",
"pgfnum": "1967"
},
"2": {
"text": "Links from log must always work.",
"created": "Sun, 18 Sep 2011 12:01:36 GMT",
"pgfnum": "1969"
}
}
},
"7": {
"text": "worldOutline",
"created": "Sun, 18 Sep 2011 12:02:00 GMT",
"pgfnum": "1970",
"type": "blogpost",
"subs": {
"0": {
"text": "Backup template outlines on save",
"created": "Sun, 18 Sep 2011 12:02:05 GMT",
"pgfnum": "1971"
},
"1": {
"text": "I got news for you -- it's already backing up the templates on save.",
"created": "Sun, 18 Sep 2011 19:38:30 GMT",
"pgfnum": "2009"
},
"2": {
"text": "Love it.",
"created": "Sun, 18 Sep 2011 19:38:41 GMT",
"pgfnum": "2010"
}
}
}
}
},
"12": {
"text": "9/17/11 by DW",
"created": "Sat, 17 Sep 2011 14:11:03 GMT",
"pgfnum": "1941",
"subs": {
"0": {
"text": "Installing a tool",
"created": "Sat, 17 Sep 2011 23:25:13 GMT",
"pgfnum": "1959",
"type": "blogpost",
"subs": {
"0": {
"text": "When we install a tool, also create a sub-table of user.rootUpdates.servers, with the date pulled from the tool's info table, if it's present. This way next time it updates, it won't have to update parts it already has.",
"created": "Sat, 17 Sep 2011 23:25:19 GMT",
"pgfnum": "1960"
},
"1": {
"text": "AC noted that the first time he updated a freshly installed river2.root it downloaded 160 parts. While this doesn't do any harm, it seems fairly inelegant.",
"created": "Sat, 17 Sep 2011 23:29:05 GMT",
"pgfnum": "1962"
},
"2": {
"text": "Part: opmlEditor.addToolToUpdates",
"created": "Sat, 17 Sep 2011 23:26:24 GMT",
"pgfnum": "1961"
}
}
},
"1": {
"text": "Rolling on the river",
"created": "Sat, 17 Sep 2011 20:48:32 GMT",
"pgfnum": "1955",
"subs": {
"0": {
"text": "Keep workin on the log. I want the URLs to work asap after installation.",
"created": "Sat, 17 Sep 2011 20:48:45 GMT",
"pgfnum": "1956"
},
"1": {
"text": "Redirect to the log page after installation?",
"created": "Sat, 17 Sep 2011 20:48:59 GMT",
"pgfnum": "1957"
}
}
},
"2": {
"text": "Blorking to Facebook?",
"created": "Sat, 17 Sep 2011 19:49:51 GMT",
"pgfnum": "1948",
"subs": {
"0": {
"text": "Looking into it.",
"created": "Sat, 17 Sep 2011 19:50:00 GMT",
"pgfnum": "1949"
},
"1": {
"text": "According to the deprecated method, we're supposed to: POST a Post object to the feed connection of the User object.",
"created": "Sat, 17 Sep 2011 19:50:03 GMT",
"pgfnum": "1950"
},
"2": {
"text": "Let's see...",
"created": "Sat, 17 Sep 2011 19:50:26 GMT",
"pgfnum": "1951"
}
}
},
"3": {
"text": "Fixed the Scripting2 prefs",
"created": "Sat, 17 Sep 2011 16:23:29 GMT",
"pgfnum": "1946",
"type": "blogpost",
"subs": {
"0": {
"text": "So they work with the new way of doing prefs.",
"created": "Sat, 17 Sep 2011 16:23:34 GMT",
"pgfnum": "1947"
}
}
},
"4": {
"text": "Fix cell alignment on Log pages",
"created": "Sat, 17 Sep 2011 14:11:04 GMT",
"pgfnum": "1942",
"type": "blogpost",
"subs": {
"0": {
"text": "Took the attributes off the <td> elements, and added attributes in the stylesheet.",
"created": "Sat, 17 Sep 2011 14:11:22 GMT",
"pgfnum": "1943"
},
"1": {
"text": "Parts",
"created": "Sat, 17 Sep 2011 14:11:47 GMT",
"pgfnum": "1944",
"subs": {
"0": {
"text": "webApp.data.styles",
"created": "Sat, 17 Sep 2011 14:11:49 GMT",
"pgfnum": "1945"
},
"1": {
"text": "log2.view"
}
}
}
}
}
}
},
"13": {
"text": "9/16/11 by DW",
"created": "Fri, 16 Sep 2011 12:28:34 GMT",
"pgfnum": "1890",
"subs": {
"0": {
"text": "River2 prefs split",
"created": "Fri, 16 Sep 2011 19:39:02 GMT",
"pgfnum": "1912",
"type": "blogpost",
"subs": {
"0": {
"text": "In this update, the River2 prefs split in two. Half go into the opmlEditor websites prefs system, and the other half stay where the user can edit them in the River2 user interface.",
"created": "Sat, 17 Sep 2011 12:47:56 GMT",
"pgfnum": "1936"
},
"1": {
"text": "Behind the scenes the change was much more interesting. Before the prefs appear in the browser, the opmlEditor level looks in all the open databases for #installer tables that have an element named \"prefs.\" If it points to an outline, we include that outline at the top level of the prefs system.",
"created": "Sat, 17 Sep 2011 12:48:27 GMT",
"pgfnum": "1937"
},
"2": {
"text": "At this time there is no caching, so it's very simple. And hopefully will stay simple if we add caching. :-)",
"created": "Sat, 17 Sep 2011 12:49:50 GMT",
"pgfnum": "1939"
},
"3": {
"text": "Details on the implementation follow.",
"created": "Sat, 17 Sep 2011 12:50:13 GMT",
"pgfnum": "1940"
},
"4": {
"text": "When we're looking for system prefs outlines, this is what we do.",
"created": "Sat, 17 Sep 2011 11:51:48 GMT",
"pgfnum": "1920",
"subs": {
"0": {
"text": "1. Look for a table at the top level of the database called #installer.",
"created": "Sat, 17 Sep 2011 11:57:08 GMT",
"pgfnum": "1921"
},
"1": {
"text": "2. Look in that table for an outline called prefs.",
"created": "Sat, 17 Sep 2011 11:57:30 GMT",
"pgfnum": "1922"
},
"2": {
"text": "3. Convert it to a string, then an address.",
"created": "Sat, 17 Sep 2011 11:57:38 GMT",
"pgfnum": "1923"
},
"3": {
"text": "That's the system prefs outline.",
"created": "Sat, 17 Sep 2011 11:58:09 GMT",
"pgfnum": "1924"
}
}
},
"5": {
"text": "Why we're doing it this way",
"created": "Sat, 17 Sep 2011 11:58:15 GMT",
"pgfnum": "1925",
"subs": {
"0": {
"text": "#installer tables are hard to update because many tools have them, and the name is the same in each case. Can't use the normal update process to update them. However the things they point to are easy to update. (That's why it was designed that way.)",
"created": "Sat, 17 Sep 2011 11:58:43 GMT",
"pgfnum": "1926"
}
}
},
"6": {
"text": "The problem",
"created": "Sat, 17 Sep 2011 11:59:31 GMT",
"pgfnum": "1927",
"subs": {
"0": {
"text": "The prefs outline that it points to usually has both system and user prefs in it. Each one is going to have to be looked at and split up.",
"created": "Sat, 17 Sep 2011 11:59:36 GMT",
"pgfnum": "1928"
},
"1": {
"text": "The tool-specific prefs command will have to change to use the new outline.",
"created": "Sat, 17 Sep 2011 12:00:06 GMT",
"pgfnum": "1929"
}
}
},
"7": {
"text": "worldOutline prefs",
"created": "Sat, 17 Sep 2011 12:19:11 GMT",
"pgfnum": "1930",
"subs": {
"0": {
"text": "Since worldOutline.root was also running on the machine I'm testing on, I had to convert its setup prefs. It was easy. It used to be on one page, now it's on two. It was asking you to set up the Admin password, but since that's already being set up elsewhere in the top level prefs, no need to set it here too.",
"created": "Sat, 17 Sep 2011 12:27:28 GMT",
"pgfnum": "1934"
},
"1": {
"text": "The worldOutline howto is going to need a look.",
"created": "Sat, 17 Sep 2011 12:28:40 GMT",
"pgfnum": "1935"
}
}
},
"8": {
"text": "Parts",
"created": "Sat, 17 Sep 2011 11:51:22 GMT",
"pgfnum": "1918",
"subs": {
"0": {
"text": "prefs2.compileToolPrefs"
},
"1": {
"text": "prefs2.main"
},
"2": {
"text": "prefs2.viewIndex"
},
"3": {
"text": "prefs2.viewPanel"
},
"4": {
"text": "river2Suite.data.prefsOutline"
},
"5": {
"text": "river2Suite.data.prefsOutlineUser"
},
"6": {
"text": "worldOutlineSuite.data.prefsForSetup"
},
"7": {
"text": "opmlEditor.website.prefs"
},
"8": {
"text": "river2Website.prefs"
}
}
}
}
},
"1": {
"text": "New downloads",
"created": "Fri, 16 Sep 2011 13:58:15 GMT",
"pgfnum": "1907",
"type": "blogpost",
"subs": {
"0": {
"text": "The Mac and Windows version have both been brought up to date:",
"created": "Fri, 16 Sep 2011 13:58:19 GMT",
"pgfnum": "1908"
},
"1": {
"text": "http://home.opml.org/",
"created": "Fri, 16 Sep 2011 13:58:32 GMT",
"pgfnum": "1909"
},
"2": {
"text": "It took a lot of work to get this release together, but it all my doing (and undoing).",
"created": "Fri, 16 Sep 2011 13:58:37 GMT",
"pgfnum": "1910"
},
"3": {
"text": "Onward!",
"created": "Fri, 16 Sep 2011 13:59:10 GMT",
"pgfnum": "1911"
}
}
},
"2": {
"text": "Unwinding opml.startup",
"created": "Fri, 16 Sep 2011 12:28:35 GMT",
"pgfnum": "1891",
"type": "blogpost",
"subs": {
"0": {
"text": "I thought I could make things a bit faster by separating out some of the init code so that it only ran at startup. This was a mistake, it doesn't work that way. It means that restarting the app becomes an integral part of its user interface. If you want really hot updates everything has to happen in the init scripts, in this case opmleditor.init.",
"created": "Fri, 16 Sep 2011 12:28:46 GMT",
"pgfnum": "1892"
},
"1": {
"text": "So opmleditor.startup is going to become an empty script, with a comment pointing to this worknote.",
"created": "Fri, 16 Sep 2011 12:29:58 GMT",
"pgfnum": "1893"
},
"2": {
"text": "The work it does will be in a new part called opmleditor.initStaticText, which will be called from opmlEditor.init.",
"created": "Fri, 16 Sep 2011 12:30:16 GMT",
"pgfnum": "1894"
},
"3": {
"text": "I'm going to put some diagnostics in there so I can see the pulse of opmlEditor.init, it'll update some value every time it runs. I think it's only running once a minute, which isn't too much of a burden. (That's correct. Once a minute. Occasionally someone else calls it, but usually it's been 60 seconds since the last call when it happens. That strikes me as too long to wait.)",
"created": "Fri, 16 Sep 2011 12:31:03 GMT",
"pgfnum": "1896"
},
"4": {
"text": "The bad behavior I'm seeing is showing up in the virgin install, a very hard place to debug. It just hangs on accessing the opmlEditor website. And there's a long delay before the dialog appears asking if you want to get the \"latest OPML Editor code.\" Once you quit the app and restart, it all works great. So something isn't initializing right. (The call to get the latest parts is at the top of opmlEditor.init.)",
"created": "Fri, 16 Sep 2011 12:31:48 GMT",
"pgfnum": "1897"
},
"5": {
"text": "I don't know for a fact that this is the problem, but I do know that it is a problem. I just looked at the startup code, and it's calling opmleditor.startup before it calls opmleditor.init. This is not a good thing to do. Initially it was okay because opmleditor.startup called opmleditor.init, but I had to stop that because it was being called from opmleditor.init, and that was a stack overflower. Oy.",
"created": "Fri, 16 Sep 2011 12:33:30 GMT",
"pgfnum": "1898"
},
"6": {
"text": "In other words, I made a mistake. Let's unwind it.",
"created": "Fri, 16 Sep 2011 12:34:45 GMT",
"pgfnum": "1899"
},
"7": {
"text": "Parts",
"created": "Fri, 16 Sep 2011 12:34:58 GMT",
"pgfnum": "1900",
"subs": {
"0": {
"text": "opmlEditor.initStaticText",
"created": "Fri, 16 Sep 2011 12:35:27 GMT",
"pgfnum": "1901"
},
"1": {
"text": "opmlEditor.startup",
"created": "Fri, 16 Sep 2011 12:35:33 GMT",
"pgfnum": "1902"
},
"2": {
"text": "opmlEditor.init",
"created": "Fri, 16 Sep 2011 12:35:36 GMT",
"pgfnum": "1903"
},
"3": {
"text": "system.startup.startupScript",
"created": "Fri, 16 Sep 2011 12:38:47 GMT",
"pgfnum": "1904"
}
}
}
}
}
}
},
"14": {
"text": "9/15/11 by DW",
"created": "Thu, 15 Sep 2011 11:40:42 GMT",
"pgfnum": "1868",
"subs": {
"0": {
"text": "Had to quickly move a server",
"created": "Thu, 15 Sep 2011 21:58:12 GMT",
"pgfnum": "1882",
"type": "blogpost",
"subs": {
"0": {
"text": "I had a demo server that I was using for some serious stuff, and the demo was ending. So I had to do a quick move. Thanks to reasonably careful use of CNAMEs, it went well. So far. Knock wood. Praise Murphy. I am not a lawyer. My mother loves me. It's even worse than it appears. :-)",
"created": "Thu, 15 Sep 2011 21:58:18 GMT",
"pgfnum": "1883"
}
}
},
"1": {
"text": "Pref to turn off static",
"created": "Thu, 15 Sep 2011 13:39:20 GMT",
"pgfnum": "1879",
"subs": {
"0": {
"text": "Add a River2 pref to turn off the static rendering. I want this for Admin on Houston. No one cares about his feed. It's a waste of time to keep building it.",
"created": "Thu, 15 Sep 2011 13:39:26 GMT",
"pgfnum": "1880"
}
}
},
"2": {
"text": "Immediate static builds",
"created": "Thu, 15 Sep 2011 13:30:51 GMT",
"pgfnum": "1875",
"subs": {
"0": {
"text": "We wait till the top of the minute to do static builds, but I don't like to wait that long.",
"created": "Thu, 15 Sep 2011 13:31:05 GMT",
"pgfnum": "1876"
},
"1": {
"text": "Added code. Now waiting for a burn-in to see if anything broke.",
"created": "Thu, 15 Sep 2011 13:40:20 GMT",
"pgfnum": "1881"
}
}
},
"3": {
"text": "Log links to static builds",
"created": "Wed, 14 Sep 2011 23:46:47 GMT",
"pgfnum": "1861",
"type": "blogpost",
"subs": {
"0": {
"text": "In River2, when we do the static builds, the log message used to report on the number of static files that were built. Now it tells you how many rivers were built, and includes a list of the names of the rivers, linked to the static rivers -- according to the settings on the OPML Editor website. The log starts to become an essential part of the user interface of River2.",
"created": "Thu, 15 Sep 2011 12:35:39 GMT",
"pgfnum": "1871"
},
"1": {
"text": "Here's an example of what the new log message looks like.",
"created": "Thu, 15 Sep 2011 13:04:26 GMT",
"pgfnum": "1872"
},
"2": {
"text": "Parts",
"created": "Thu, 15 Sep 2011 13:16:04 GMT",
"pgfnum": "1873",
"subs": {
"0": {
"text": "opmlEditor.website.prefs"
},
"1": {
"text": "river2Suite.static.buildBeautifulRiver"
},
"2": {
"text": "river2Suite.static.writeFile"
},
"3": {
"text": "river2Suite.static.afterScan"
}
}
}
}
},
"4": {
"text": "Do a clean River2 install",
"created": "Thu, 15 Sep 2011 11:50:55 GMT",
"pgfnum": "1869",
"subs": {
"0": {
"text": "Install OPML Editor. It updates itself. Go to the Prefs menu. Can't find a table called statictext.",
"created": "Thu, 15 Sep 2011 22:39:17 GMT",
"pgfnum": "1887"
},
"1": {
"text": "http://newsriver.org/ -- couldn't open it -- this was an A-record to the server we just lost. Fixed the DNS.",
"created": "Thu, 15 Sep 2011 22:42:34 GMT",
"pgfnum": "1888"
}
}
},
"5": {
"text": "River2 prefs need fixing",
"created": "Wed, 14 Sep 2011 23:37:07 GMT",
"pgfnum": "1856",
"subs": {
"0": {
"text": "There are some sysop things in there.",
"created": "Wed, 14 Sep 2011 23:37:11 GMT",
"pgfnum": "1857"
}
}
},
"6": {
"text": "Update command",
"created": "Wed, 14 Sep 2011 23:18:04 GMT",
"pgfnum": "1848",
"subs": {
"0": {
"text": "With confirmation, update all open tools and opml.root, now.",
"created": "Wed, 14 Sep 2011 23:18:15 GMT",
"pgfnum": "1849"
}
}
},
"7": {
"text": "Navigation",
"created": "Wed, 14 Sep 2011 22:53:33 GMT",
"pgfnum": "1823",
"subs": {
"0": {
"text": "I've been looking for a way to, at a user interface level, make it easy to get from River2 (for example) to the OPML Editor website menu. This isn't something a user needs to do, but the owner of the system needs to be able to do it.",
"created": "Wed, 14 Sep 2011 22:53:42 GMT",
"pgfnum": "1824"
},
"1": {
"text": "I'm beginning to think that a simple link is the best way to go. Over on the right side of the menu, with the status information.",
"created": "Wed, 14 Sep 2011 22:54:44 GMT",
"pgfnum": "1825"
},
"2": {
"text": "It would only be present if you're logged on as admin.",
"created": "Wed, 14 Sep 2011 22:55:25 GMT",
"pgfnum": "1826"
}
}
}
}
},
"15": {
"text": "9/14/11 by DW",
"created": "Wed, 14 Sep 2011 11:36:37 GMT",
"pgfnum": "1778",
"subs": {
"0": {
"text": "River for our world",
"created": "Wed, 14 Sep 2011 23:09:41 GMT",
"pgfnum": "1838",
"type": "blogpost",
"subs": {
"0": {
"text": "I need a river that just has feeds from the world we occupy.",
"created": "Wed, 14 Sep 2011 23:09:45 GMT",
"pgfnum": "1839"
},
"1": {
"text": "It would also be instructive to go through the steps to create a new river.",
"created": "Wed, 14 Sep 2011 23:09:55 GMT",
"pgfnum": "1840"
},
"2": {
"text": "I bet the process is klunky, and I bet it could be made super-easy.",
"created": "Wed, 14 Sep 2011 23:10:13 GMT",
"pgfnum": "1841"
},
"3": {
"text": "1. Create a new user with the OPML Editor menu command.",
"created": "Wed, 14 Sep 2011 23:16:16 GMT",
"pgfnum": "1842",
"subs": {
"0": {
"text": "On houston.scripting.com, the user is frontier. ",
"created": "Wed, 14 Sep 2011 23:19:10 GMT",
"pgfnum": "1850"
}
}
},
"4": {
"text": "2. Log on as that user.",
"created": "Wed, 14 Sep 2011 23:16:29 GMT",
"pgfnum": "1843"
},
"5": {
"text": "3. Go to River2.",
"created": "Wed, 14 Sep 2011 23:17:05 GMT",
"pgfnum": "1844",
"subs": {
"0": {
"text": "I got a message: Sorry, response from scripting.com is corrupted, please try again later.",
"created": "Wed, 14 Sep 2011 23:21:11 GMT",
"pgfnum": "1851"
},
"1": {
"text": "That's probably because my static river has yet to be built.",
"created": "Wed, 14 Sep 2011 23:21:20 GMT",
"pgfnum": "1852"
},
"2": {
"text": "Let's see what happens when the next scan runs.",
"created": "Wed, 14 Sep 2011 23:21:31 GMT",
"pgfnum": "1853"
}
}
},
"6": {
"text": "4. Set up the feeds the way you like them.",
"created": "Wed, 14 Sep 2011 23:17:10 GMT",
"pgfnum": "1845",
"subs": {
"0": {
"text": "Problem. There is no table at: config.river2.users.frontier.",
"created": "Wed, 14 Sep 2011 23:21:48 GMT",
"pgfnum": "1854"
},
"1": {
"text": "Solution. In river2suite.firewall, if the user has a good cookie, create the table automatically. Basically once you're a user in members.root, you can become a user of any of the apps on the machine. Feedback?",
"created": "Wed, 14 Sep 2011 23:31:11 GMT",
"pgfnum": "1855"
},
"2": {
"text": "This was accomplished with a single call to river2suite.inituser. Very simple. :-)",
"created": "Thu, 15 Sep 2011 11:38:42 GMT",
"pgfnum": "1867"
}
}
},
"7": {
"text": "5. Get the URL of the static river.",
"created": "Wed, 14 Sep 2011 23:17:17 GMT",
"pgfnum": "1846",
"subs": {
"0": {
"text": "This is hard to do! (But it will get easier.)",
"created": "Wed, 14 Sep 2011 23:47:18 GMT",
"pgfnum": "1863"
},
"1": {
"text": "http://static.scripting.com/houston/rivers/frontier.html",
"created": "Thu, 15 Sep 2011 11:35:55 GMT",
"pgfnum": "1865"
},
"2": {
"text": "I looked in the S3 folder for Houston.",
"created": "Thu, 15 Sep 2011 11:34:54 GMT",
"pgfnum": "1864"
}
}
},
"8": {
"text": "6. Share with friends.",
"created": "Wed, 14 Sep 2011 23:17:39 GMT",
"pgfnum": "1847",
"subs": {
"0": {
"text": "I'm going to wait until some relevant stuff shows up in there.",
"created": "Thu, 15 Sep 2011 11:36:29 GMT",
"pgfnum": "1866"
}
}
}
}
},
"1": {
"text": "Upgrading to Bootstrap 1.2.0",
"created": "Wed, 14 Sep 2011 22:58:57 GMT",
"pgfnum": "1829",
"type": "blogpost",
"subs": {
"0": {
"text": "They've been enhancing Bootstrap but I've been staying with the version that was current in mid-August, because I didn't want to rock the boat in that area while I was rocking it elsewhere.",
"created": "Wed, 14 Sep 2011 22:59:02 GMT",
"pgfnum": "1830"
},
"1": {
"text": "I'm now upgrading to the 1.2.0 stylesheet.",
"created": "Wed, 14 Sep 2011 22:59:44 GMT",
"pgfnum": "1831"
},
"2": {
"text": "Previously we were using version 1.1.1.",
"created": "Wed, 14 Sep 2011 23:03:02 GMT",
"pgfnum": "1836"
},
"3": {
"text": "This is time to look for breakage in the appearance of any part of the system.",
"created": "Wed, 14 Sep 2011 22:59:57 GMT",
"pgfnum": "1832"
},
"4": {
"text": "That's the advantage of having everything go through a bottleneck. It's really easy to upgrade. It also means you have to keep your eyes open for breakage. The sooner we discover it the better.",
"created": "Wed, 14 Sep 2011 23:00:09 GMT",
"pgfnum": "1833"
},
"5": {
"text": "Also I'm looking for a feed from the developers of Bootstrap of changes they're making. Anything we can subscribe to. If anyone spots anything, please send me a link. Thanks.",
"created": "Wed, 14 Sep 2011 23:03:47 GMT",
"pgfnum": "1837"
},
"6": {
"text": "Parts",
"created": "Wed, 14 Sep 2011 23:02:14 GMT",
"pgfnum": "1834",
"subs": {
"0": {
"text": "webApp.data.headIncludes",
"created": "Wed, 14 Sep 2011 23:02:15 GMT",
"pgfnum": "1835"
}
}
}
}
},
"2": {
"text": "River2 template",
"created": "Wed, 14 Sep 2011 22:57:51 GMT",
"pgfnum": "1827",
"type": "blogpost",
"subs": {
"0": {
"text": "We were hard-coding the link to the Bootstrap CSS in the template for the River2 website. This explains why none of the overrides were in effect in that website. Released an update that fixes this.",
"created": "Wed, 14 Sep 2011 22:57:57 GMT",
"pgfnum": "1828"
}
}
},
"3": {
"text": "Reading lists for mail lists",
"created": "Wed, 14 Sep 2011 13:48:26 GMT",
"pgfnum": "1818",
"type": "blogpost",
"subs": {
"0": {
"text": "I wanted a list of all the mail lists we have, so I could subscribe to them.",
"created": "Wed, 14 Sep 2011 13:48:32 GMT",
"pgfnum": "1819"
},
"1": {
"text": "http://dropbox.scripting.com/dave/readingLists/mailLists.opml"
},
"2": {
"text": "I also included it in my world outline.",
"created": "Wed, 14 Sep 2011 13:49:25 GMT",
"pgfnum": "1821"
}
}
},
"4": {
"text": "EC2 for Poets #15",
"created": "Wed, 14 Sep 2011 11:36:38 GMT",
"pgfnum": "1779",
"type": "blogpost",
"subs": {
"0": {
"text": "There's a new release of EC2 for Poets today.",
"created": "Wed, 14 Sep 2011 13:12:59 GMT",
"pgfnum": "1800"
},
"1": {
"text": "This is the 15th version. Not all of the interim releases are publicly visible. For example, 15 replaces 9, which was the last previous public release.",
"created": "Wed, 14 Sep 2011 13:13:20 GMT",
"pgfnum": "1801"
},
"2": {
"text": "In this release we establish a new rule. There are no major apps included in the release. From this point on EC2 for Poets is a platform, not an application.",
"created": "Wed, 14 Sep 2011 13:14:07 GMT",
"pgfnum": "1804"
},
"3": {
"text": "I stepped through the tutorial, re-took a few screen shots, did some minor edits.",
"created": "Wed, 14 Sep 2011 13:18:58 GMT",
"pgfnum": "1810"
},
"4": {
"text": "Also a new revision of the page that pops up on the server when the installation is complete.",
"created": "Wed, 14 Sep 2011 13:20:57 GMT",
"pgfnum": "1811"
}
}
},
"5": {
"text": "Tools in EC2 for Poets",
"created": "Wed, 14 Sep 2011 13:21:46 GMT",
"pgfnum": "1814",
"subs": {
"0": {
"text": "There are two tools in the Tools folder. helloWorld.root, which is a tiny app for the EC2 for Poets tutorial and ec2Support.root which contains extra utility functionality for the cloud version of the OPML server.",
"created": "Wed, 14 Sep 2011 13:14:59 GMT",
"pgfnum": "1805"
},
"1": {
"text": "The previous release contained river2.root, radio2.root and beaut.root. I've made this mistake before, trying to ship an app in place of the platform. I end up having to maintain two very different kinds of functionality in one package. The new stuff isn't fully-baked enough yet to be considered part of a platform release. So I did what I did in 2008 with the OPML package, and stripped it down to its basics, and let everything else ship independently.",
"created": "Wed, 14 Sep 2011 13:16:22 GMT",
"pgfnum": "1806"
}
}
}
}
},
"16": {
"text": "9/13/11 by DW",
"created": "Tue, 13 Sep 2011 11:58:22 GMT",
"pgfnum": "1745",
"subs": {
"0": {
"text": "River2 to S3",
"created": "Tue, 13 Sep 2011 11:58:22 GMT",
"pgfnum": "1746",
"type": "blogpost",
"subs": {
"0": {
"text": "A persistent feature request, and a good one, is to mirror the content in the static folder of River2 to Amazon S3.",
"created": "Tue, 13 Sep 2011 11:58:28 GMT",
"pgfnum": "1747"
},
"1": {
"text": "There already was a one-off implementation of S3 support in River2, but I want to use builtins.staticText, a much more general approach, already used by scripting2.root.",
"created": "Tue, 13 Sep 2011 13:00:09 GMT",
"pgfnum": "1750"
},
"2": {
"text": "Added opmlEditor.startup, a long-needed script to run code at startup. Added a call in system.startup.startupscript. So now when we want to add one-time inits that take place on startup, we have an easy place to add them.",
"created": "Tue, 13 Sep 2011 13:00:38 GMT",
"pgfnum": "1751"
},
"3": {
"text": "The statictext data is stored in opmleditor.statictext. Set up initially with two locations, one in the filesystem and one for S3.",
"created": "Tue, 13 Sep 2011 13:01:21 GMT",
"pgfnum": "1752"
},
"4": {
"text": "The filesystem is enabled, S3 is not enabled.",
"created": "Tue, 13 Sep 2011 13:01:57 GMT",
"pgfnum": "1753"
},
"5": {
"text": "Filesystem points to the www sub-folder of Guest Databases, so it will be served by the built-in web server in the OPML Editor.",
"created": "Tue, 13 Sep 2011 13:02:06 GMT",
"pgfnum": "1754"
},
"6": {
"text": "The URL initially derives from user.opmlEditor.prefs.server.externalDomainName. However, it can be set by the user to anything, in case you're serving from Dropbox or some other web server app on the local system.",
"created": "Tue, 13 Sep 2011 13:02:26 GMT",
"pgfnum": "1755"
},
"7": {
"text": "Parts",
"created": "Tue, 13 Sep 2011 13:43:39 GMT",
"pgfnum": "1756",
"subs": {
"0": {
"text": "builtins.staticText"
},
"1": {
"text": "opmlEditor.startup"
},
"2": {
"text": "system.startup.startupScript"
},
"3": {
"text": "opmlEditor.writeStaticFile"
},
"4": {
"text": "river2Suite.init"
},
"5": {
"text": "river2Suite.static.writeFile"
},
"6": {
"text": "river2Suite.static.afterScan"
},
"7": {
"text": "webApp.data.headIncludes"
},
"8": {
"text": "opmlEditor.data.outlines.prefs"
}
}
}
}
}
}
},
"17": {
"text": "9/12/11 by DW",
"created": "Mon, 12 Sep 2011 21:33:50 GMT",
"pgfnum": "1730",
"subs": {
"0": {
"text": "River2 startup feeds",
"created": "Mon, 12 Sep 2011 21:33:51 GMT",
"pgfnum": "1731",
"type": "blogpost",
"subs": {
"0": {
"text": "Until now the set of startup feeds came from river2Suite.data.defaultFeeds.",
"created": "Mon, 12 Sep 2011 21:33:59 GMT",
"pgfnum": "1732"
},
"1": {
"text": "I need to be able to work on this through my dropbox flow, so it can be like editing any other of my reading lists.",
"created": "Mon, 12 Sep 2011 21:34:40 GMT",
"pgfnum": "1733"
},
"2": {
"text": "http://dropbox.scripting.com/dave/readingLists/river2startup.opml",
"created": "Mon, 12 Sep 2011 22:06:51 GMT",
"pgfnum": "1736"
},
"3": {
"text": "Tested on a virgin OPML installation, works.",
"created": "Mon, 12 Sep 2011 22:07:12 GMT",
"pgfnum": "1737"
}
}
},
"1": {
"text": "Making the River2 stylesheet a parameter",
"created": "Tue, 13 Sep 2011 11:47:22 GMT",
"pgfnum": "1739",
"type": "blogpost",
"subs": {
"0": {
"text": "John Johnston asked where he would go to change the pointer to the default stylesheet in his static river. Unfortunately, the answer was that if he changed it, there would be no way to protect the change against a future update. I needed to carve out a pref here so that he could safely change it.",
"created": "Tue, 13 Sep 2011 11:47:36 GMT",
"pgfnum": "1740"
},
"1": {
"text": "I had a bit of time to kill at the NYPL so I used their excellent free wifi to add a new prefs panel in River2 that allows you to specify the URL of your stylesheet.",
"created": "Tue, 13 Sep 2011 11:48:35 GMT",
"pgfnum": "1742"
},
"2": {
"text": "It's a perfect feature. If you click on the default stylesheet you see that it's the original by Nicolas Gallagher, unmodified. We always said you'd be able to replace it. Now you can, and it's easy!",
"created": "Tue, 13 Sep 2011 11:49:09 GMT",
"pgfnum": "1743"
},
"3": {
"text": "BTW, the tourists were out in droves yesterday, everywhere you went. And they spoke all languages of Planet Earth. I guess everyone wanted to be here for the 9-11 remembrance?",
"created": "Tue, 13 Sep 2011 11:54:19 GMT",
"pgfnum": "1744"
}
}
}
}
},
"18": {
"text": "9/11/11 by DW",
"created": "Sun, 11 Sep 2011 13:59:56 GMT",
"pgfnum": "1686",
"subs": {
"0": {
"text": "River2.root installation",
"created": "Sun, 11 Sep 2011 21:41:15 GMT",
"pgfnum": "1722",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm working with a small number of hearty souls on getting River2 to install smoothly on their machines. As always, I thought it should be a slam-dunk, because I am able to install it in seconds without problems, but a couple of users are having an amazing series of problems.",
"created": "Sun, 11 Sep 2011 21:41:25 GMT",
"pgfnum": "1723"
},
"1": {
"text": "I asked one of them, Fred Zelders, to send me a copy of his OPML folder so I could see if I could reproduce the problems here. And they did show up here, so I could step through the process in the debugger, and see where it fails.",
"created": "Sun, 11 Sep 2011 21:42:20 GMT",
"pgfnum": "1724"
},
"2": {
"text": "The problem appears to be in some code to prevent re-entrant calls to the scanner. No point in having two scans running concurrently. And it's getting false positives, that is, it thinks a scan is running when it completed long-ago.",
"created": "Sun, 11 Sep 2011 21:42:59 GMT",
"pgfnum": "1725"
},
"3": {
"text": "I added code to make it more clear when a scan terminates, and set the test so it doesn't believe a positive result 20 minutes after the last scan started.",
"created": "Sun, 11 Sep 2011 21:44:05 GMT",
"pgfnum": "1726"
},
"4": {
"text": "I have tested this code on two machines: 1. The one that's running Fred's installation. 2. My production server that maintains a set of rivers used at NYU and my own personal river. The scanning problem was solved by these fixes on the \"Fred simulator\" and continued to work on the production server.",
"created": "Sun, 11 Sep 2011 21:45:03 GMT",
"pgfnum": "1727"
},
"5": {
"text": "Parts",
"created": "Sun, 11 Sep 2011 23:33:12 GMT",
"pgfnum": "1728",
"subs": {
"0": {
"text": "river2Suite.doScanNow"
},
"1": {
"text": "river2Suite.doScanThread"
}
}
}
}
},
"1": {
"text": "radio2.root and bit.ly",
"created": "Sun, 11 Sep 2011 14:32:25 GMT",
"pgfnum": "1701",
"type": "blogpost",
"subs": {
"0": {
"text": "New user-level pref to use bit.ly instead of adjix.",
"created": "Sun, 11 Sep 2011 14:32:31 GMT",
"pgfnum": "1702"
},
"1": {
"text": "A prefs panel to go with it.",
"created": "Sun, 11 Sep 2011 15:20:12 GMT",
"pgfnum": "1717"
},
"2": {
"text": "And a howto to tie it all together.",
"created": "Sun, 11 Sep 2011 15:20:17 GMT",
"pgfnum": "1718"
},
"3": {
"text": "Parts",
"created": "Sun, 11 Sep 2011 15:37:15 GMT",
"pgfnum": "1720",
"subs": {
"0": {
"text": "bitly.init"
},
"1": {
"text": "bitly.create"
},
"2": {
"text": "radio2Suite.initUser"
},
"3": {
"text": "radio2Suite.shortener.create"
},
"4": {
"text": "beautSuite.data.prefsOutline"
}
}
}
}
},
"2": {
"text": "Rebooting with bit.ly",
"created": "Sun, 11 Sep 2011 13:59:57 GMT",
"pgfnum": "1687",
"type": "blogpost",
"subs": {
"0": {
"text": "Adjix isn't working today, and there have been enough outages lately to make it necessary to develop a Plan B, where \"B\" is for bit.ly.",
"created": "Sun, 11 Sep 2011 14:00:15 GMT",
"pgfnum": "1688"
},
"1": {
"text": "I had glue, but it was from 2008, and the API has changed a lot.",
"created": "Sun, 11 Sep 2011 14:01:09 GMT",
"pgfnum": "1690"
},
"2": {
"text": "Luckily it was all very familiar and I had new glue up and running in about an hour, and installed on my radioReallySimple server, and hooked into the nytriver Twitter account.",
"created": "Sun, 11 Sep 2011 14:01:23 GMT",
"pgfnum": "1691"
},
"3": {
"text": "http://twitter.com/#!/nytriver",
"created": "Sun, 11 Sep 2011 14:01:58 GMT",
"pgfnum": "1692"
},
"4": {
"text": "The next place on the path is radio2.root, hooking blork.ly in to the posting operation.",
"created": "Sun, 11 Sep 2011 14:03:28 GMT",
"pgfnum": "1699"
},
"5": {
"text": "Then I have to learn how to ask bit.ly for stats about links, and I'm assuming they have all that we need. If they don't, then we're going to lose some features. Fact.",
"created": "Sun, 11 Sep 2011 14:04:51 GMT",
"pgfnum": "1700"
}
}
}
}
},
"19": {
"text": "9/10/11 by DW",
"created": "Sat, 10 Sep 2011 13:17:01 GMT",
"pgfnum": "1645",
"subs": {
"0": {
"text": "App menu",
"created": "Sat, 10 Sep 2011 21:42:20 GMT",
"pgfnum": "1684"
},
"1": {
"text": "App storage",
"created": "Sat, 10 Sep 2011 21:42:23 GMT",
"pgfnum": "1685"
},
"2": {
"text": "River2 static builds",
"created": "Sat, 10 Sep 2011 17:42:01 GMT",
"pgfnum": "1679",
"type": "blogpost",
"subs": {
"0": {
"text": "It should build the static pages at least once before there are any new items.",
"created": "Sat, 10 Sep 2011 17:42:04 GMT",
"pgfnum": "1680",
"subs": {
"0": {
"text": "Doing this with adrdata^.stats.static.ctPageBuilds.",
"created": "Sat, 10 Sep 2011 18:24:40 GMT",
"pgfnum": "1682"
},
"1": {
"text": "It wasn't being maintained, but now it is. When it's zero, we build all static files, no matter how many items have changed in the scan. That should get the static folder set up.",
"created": "Sat, 10 Sep 2011 18:26:50 GMT",
"pgfnum": "1683"
}
}
},
"1": {
"text": "Reporting on building static files in the log it should link to the river files, makes debugging more fun.",
"created": "Sat, 10 Sep 2011 17:42:25 GMT",
"pgfnum": "1681"
}
}
},
"3": {
"text": "External name opmlEditor pref",
"created": "Sat, 10 Sep 2011 15:47:46 GMT",
"pgfnum": "1674",
"type": "blogpost",
"subs": {
"0": {
"text": "We need to know how you want us to refer to your machine in URLs.",
"created": "Sat, 10 Sep 2011 15:47:50 GMT",
"pgfnum": "1675"
},
"1": {
"text": "We guess, by doing a reverse DNS lookup, but that's usually not what you want.",
"created": "Sat, 10 Sep 2011 15:48:19 GMT",
"pgfnum": "1676"
},
"2": {
"text": "If you've assigned a domain or sub-domain to the server, this is the page you can tell us about it.",
"created": "Sat, 10 Sep 2011 15:48:43 GMT",
"pgfnum": "1677"
},
"3": {
"text": "Screen shot.",
"created": "Sat, 10 Sep 2011 15:57:51 GMT",
"pgfnum": "1678"
}
}
},
"4": {
"text": "idApi.root ready for testing",
"created": "Sat, 10 Sep 2011 13:17:02 GMT",
"pgfnum": "1646",
"type": "blogpost",
"subs": {
"0": {
"text": "I've made some changes to the way idApi.root works, so that it can benefit from the opmlEditor website tools, by storing the user information in members.root instead of config.root. We all know this is the modern way to do things, right? :-)",
"created": "Sat, 10 Sep 2011 14:46:22 GMT",
"pgfnum": "1666"
},
"1": {
"text": "If you had already installed it, you should follow the instructions on the Howto and re-install from the Tool Catalog page. I didn't release updates for all the parts that changed. In the future, I will.",
"created": "Sat, 10 Sep 2011 14:47:08 GMT",
"pgfnum": "1667"
},
"2": {
"text": "If you are already running apps like Blork or River2 and using membership, you should probably run idApi.root on the machine that's running those apps now, but there is no requirement that you do so. If you run it on a different machine, you should export the user table in members.root default group and re-import it on the machine that's running your server. All you really need is the prefs table with the password for each user, but it's simpler just to export the whole thing. And at this stage the tables aren't that big.",
"created": "Sat, 10 Sep 2011 14:47:54 GMT",
"pgfnum": "1668"
},
"3": {
"text": "That's about it for now. Please report success or problems on the Frontier-user list.",
"created": "Sat, 10 Sep 2011 14:49:34 GMT",
"pgfnum": "1669"
}
}
}
}
},
"20": {
"text": "9/9/11 by DW",
"created": "Fri, 09 Sep 2011 14:05:24 GMT",
"pgfnum": "1609",
"subs": {
"0": {
"text": "New SLIde prefs",
"created": "Fri, 09 Sep 2011 16:44:40 GMT",
"pgfnum": "1639",
"type": "blogpost",
"subs": {
"0": {
"text": "In the opmlEditor website, there is now a prefs panel that allows you to turn on delegation to a SLIde server for identity.",
"created": "Fri, 09 Sep 2011 16:44:52 GMT",
"pgfnum": "1640"
},
"1": {
"text": "Wrote the beginnings of a howto for this.",
"created": "Fri, 09 Sep 2011 16:45:13 GMT",
"pgfnum": "1641"
},
"2": {
"text": "I still have to write scripts that export and import existing member data from a non-SLIde server into a SLIde server.",
"created": "Fri, 09 Sep 2011 16:45:19 GMT",
"pgfnum": "1642"
},
"3": {
"text": "It's all pretty easy, but it's still a corner-turn. This is the first step.",
"created": "Fri, 09 Sep 2011 16:45:39 GMT",
"pgfnum": "1643"
}
}
},
"1": {
"text": "Users command in opmlEditor website",
"created": "Fri, 09 Sep 2011 15:21:00 GMT",
"pgfnum": "1618",
"type": "blogpost",
"subs": {
"0": {
"text": "Shows you a list of all the users of the server.",
"created": "Fri, 09 Sep 2011 15:21:17 GMT",
"pgfnum": "1620"
},
"1": {
"text": "Here's a screen shot with the users names hidden. (They're real people.)",
"created": "Fri, 09 Sep 2011 15:27:28 GMT",
"pgfnum": "1625"
},
"2": {
"text": "The first column is the username. Then the number of times their table has been accessed, followed by the date when the user table was created, then the date of last access.",
"created": "Fri, 09 Sep 2011 15:21:28 GMT",
"pgfnum": "1621"
},
"3": {
"text": "Also found and fixed an HTML bug in Tools page.",
"created": "Fri, 09 Sep 2011 15:22:11 GMT",
"pgfnum": "1624"
},
"4": {
"text": "Parts",
"created": "Fri, 09 Sep 2011 15:21:56 GMT",
"pgfnum": "1622",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.usersIntro"
},
"1": {
"text": "opmlEditor.viewUsers"
},
"2": {
"text": "opmlEditor.website.users"
},
"3": {
"text": "opmlEditor.viewMenu"
},
"4": {
"text": "opmlEditor.viewCatalog"
}
}
}
}
},
"2": {
"text": "New User command in opmlEditor website",
"created": "Fri, 09 Sep 2011 14:05:25 GMT",
"pgfnum": "1610",
"type": "blogpost",
"subs": {
"0": {
"text": "There is now a New User command in the opmlEditor website:",
"created": "Fri, 09 Sep 2011 14:05:48 GMT",
"pgfnum": "1611"
},
"1": {
"text": "http://127.0.0.1/opmlEditor/newUser",
"created": "Fri, 09 Sep 2011 14:06:03 GMT",
"pgfnum": "1612"
},
"2": {
"text": "Previously the only place you could create a new user was in the Blork menu. This obviously is not the right place for it, because you might want to create a new user for any app -- River2, Radio2, the photo tool, etc etc.",
"created": "Fri, 09 Sep 2011 14:06:14 GMT",
"pgfnum": "1613"
},
"3": {
"text": "Also there should be a prefs panel to hook up membership to SLIde. Also in the OPML Editor menu. (But that comes later.)",
"created": "Thu, 08 Sep 2011 17:11:04 GMT",
"pgfnum": "1608"
},
"4": {
"text": "Also fixed a bug in webApp.viewMenu where if the pagename had an uppercase character in its name it wouldn't get highlighted as active in the menu. This bug showed up in viewing the newUser page.",
"created": "Fri, 09 Sep 2011 14:09:19 GMT",
"pgfnum": "1617"
},
"5": {
"text": "Parts",
"created": "Fri, 09 Sep 2011 14:07:44 GMT",
"pgfnum": "1615",
"subs": {
"0": {
"text": "webApp.viewMenu"
},
"1": {
"text": "opmlEditor.data.outlines.newUserTemplate"
},
"2": {
"text": "opmlEditor.viewNewUser"
},
"3": {
"text": "opmlEditor.website.newUser"
},
"4": {
"text": "opmlEditor.viewMenu"
}
}
}
}
}
}
},
"21": {
"text": "9/8/11 by DW",
"created": "Thu, 08 Sep 2011 11:47:44 GMT",
"pgfnum": "1552",
"subs": {
"0": {
"text": "signin page looks bad",
"created": "Thu, 08 Sep 2011 15:35:11 GMT",
"pgfnum": "1600",
"type": "blogpost",
"subs": {
"0": {
"text": "Checked it out and there are styles in the River2 template that need to be at a lower level, in the webapp stylesheet.",
"created": "Thu, 08 Sep 2011 15:35:18 GMT",
"pgfnum": "1601"
},
"1": {
"text": ".divSigninForm td {",
"subs": {
"0": {
"text": "border: none;"
},
"1": {
"text": "color: black;"
},
"2": {
"text": "font-size: 115%;"
},
"3": {
"text": "}"
}
}
},
"2": {
"text": ".divSigninForm .signInFormTextInput {",
"subs": {
"0": {
"text": "font-style: bold;"
},
"1": {
"text": "font-size: 105%;"
},
"2": {
"text": "}"
}
}
},
"3": {
"text": "Parts:",
"created": "Thu, 08 Sep 2011 15:38:26 GMT",
"pgfnum": "1603",
"subs": {
"0": {
"text": "webApp.data.headIncludes",
"created": "Thu, 08 Sep 2011 15:38:29 GMT",
"pgfnum": "1604"
},
"1": {
"text": "river2Website.[\"#template\"]"
}
}
}
}
},
"1": {
"text": "opmlEditor prefs",
"created": "Thu, 08 Sep 2011 14:22:32 GMT",
"pgfnum": "1587",
"type": "blogpost",
"subs": {
"0": {
"text": "The web server security prefs page username/password was way out of date.",
"created": "Thu, 08 Sep 2011 14:22:40 GMT",
"pgfnum": "1588"
},
"1": {
"text": "The new version asks for the Admin password, and sets the password in members.root for the admin account.",
"created": "Thu, 08 Sep 2011 15:17:41 GMT",
"pgfnum": "1596"
},
"2": {
"text": "You can use this account to log on to any of the managed sites (River2, beaut, worldoutline, opmleditor) remotely.",
"created": "Thu, 08 Sep 2011 15:18:02 GMT",
"pgfnum": "1597"
},
"3": {
"text": "I will add a pref that turns off remote access for all this, just not ready for it yet.",
"created": "Thu, 08 Sep 2011 15:18:25 GMT",
"pgfnum": "1598"
},
"4": {
"text": "Also reworked the S3 prefs page and removed pages for Friendfeed and Identi.ca. The data is still there, but we don't need a UI because we are no longer using external identity systems for our apps.",
"created": "Thu, 08 Sep 2011 15:18:49 GMT",
"pgfnum": "1599"
}
}
},
"2": {
"text": "River2 installation run-through",
"created": "Thu, 08 Sep 2011 11:47:45 GMT",
"pgfnum": "1553",
"subs": {
"0": {
"text": "Now we take a step back from Blork and focus on the installation process for River2.",
"created": "Thu, 08 Sep 2011 11:48:01 GMT",
"pgfnum": "1554"
},
"1": {
"text": "The goal is to find bugs in the installation, and to add whatever is needed for setup to the opmlEditor website.",
"created": "Thu, 08 Sep 2011 11:48:21 GMT",
"pgfnum": "1555"
},
"2": {
"text": "Then the howto can just link to pages on the website where you set the things you need to set, if any.",
"created": "Thu, 08 Sep 2011 11:48:41 GMT",
"pgfnum": "1556"
},
"3": {
"text": "http://static.blorkmark.com/",
"created": "Thu, 08 Sep 2011 13:44:05 GMT",
"pgfnum": "1585"
},
"4": {
"text": "I've created a new instance of the poets15 AMI called Neptune.",
"created": "Thu, 08 Sep 2011 11:48:57 GMT",
"pgfnum": "1557"
},
"5": {
"text": "Todo",
"created": "Thu, 08 Sep 2011 13:35:59 GMT",
"pgfnum": "1580",
"subs": {
"0": {
"text": "River2 prefs page for setting title and sub-title of your static river.",
"created": "Thu, 08 Sep 2011 13:36:00 GMT",
"pgfnum": "1581"
}
}
}
}
}
}
},
"22": {
"text": "9/7/11 by DW",
"created": "Wed, 07 Sep 2011 13:47:01 GMT",
"pgfnum": "1518",
"subs": {
"0": {
"text": "Bookmarklet in Safari on iPad",
"created": "Wed, 07 Sep 2011 17:19:04 GMT",
"pgfnum": "1545",
"type": "blogpost",
"subs": {
"0": {
"text": "I had the old bookmarklet working on my desktop, but it didn't work on the iPad.",
"created": "Wed, 07 Sep 2011 17:19:11 GMT",
"pgfnum": "1546"
},
"1": {
"text": "I suspect this is because it has popup blocking, or doesn't run a script in the body of a web page, or some other iPad-ism thing.",
"created": "Wed, 07 Sep 2011 17:19:29 GMT",
"pgfnum": "1547"
},
"2": {
"text": "So I sniff for Safari on iPad in the user-agent header, and if it smells like an iPad, instead of popping up a window, I just redirect to the popup. It replaces whatever was in that tab, big deal. When you click Submit the thing still posts to your feed, that's what counts.",
"created": "Wed, 07 Sep 2011 17:20:00 GMT",
"pgfnum": "1548"
},
"3": {
"text": "So I can post from my iPad again. Happy. :-)",
"created": "Wed, 07 Sep 2011 17:21:09 GMT",
"pgfnum": "1549"
},
"4": {
"text": "Part",
"created": "Wed, 07 Sep 2011 17:21:22 GMT",
"pgfnum": "1550",
"subs": {
"0": {
"text": "beautWebsite.index",
"created": "Wed, 07 Sep 2011 17:21:23 GMT",
"pgfnum": "1551"
}
}
}
}
},
"1": {
"text": "Blork menu tweak",
"created": "Wed, 07 Sep 2011 13:47:02 GMT",
"pgfnum": "1519",
"type": "blogpost",
"subs": {
"0": {
"text": "Dan MacTough observes that the Home command in the Blork menu is redundant. The name of the product should link to the home page. When it does, we can remove the Home command. Glad to get the real estate back. :-)",
"created": "Wed, 07 Sep 2011 13:47:14 GMT",
"pgfnum": "1520"
},
"1": {
"text": "We need an optional parameter on webApp.viewMenu that provides the url of the home page.",
"created": "Wed, 07 Sep 2011 13:49:43 GMT",
"pgfnum": "1523"
},
"2": {
"text": "Also fixed the opmlEditor and River2 menus.",
"created": "Wed, 07 Sep 2011 14:14:46 GMT",
"pgfnum": "1533"
},
"3": {
"text": "Parts",
"created": "Wed, 07 Sep 2011 13:48:04 GMT",
"pgfnum": "1521",
"subs": {
"0": {
"text": "beautSuite.viewMenu"
},
"1": {
"text": "webApp.viewMenu"
},
"2": {
"text": "opmlEditor.viewMenu",
"created": "Wed, 07 Sep 2011 14:15:11 GMT",
"pgfnum": "1534"
},
"3": {
"text": "river2Suite.viewMenu"
}
}
}
}
},
"2": {
"text": "Make the old bookmarklet work",
"created": "Wed, 07 Sep 2011 13:51:09 GMT",
"pgfnum": "1524",
"type": "blogpost",
"subs": {
"0": {
"text": "It's really annoying to switch to the new bookmarklet on my iPad. It wasn't easy shoehorning the old one in there. And because of that I now see how I can make the old one work with the new Blork.",
"created": "Wed, 07 Sep 2011 13:51:15 GMT",
"pgfnum": "1525"
},
"1": {
"text": "Did the conversion and released the parts. Works when I click the link on my desktop, but nothing happens on the iPad, where I needed it to work. If anyone with the old bookmarklet installed can give this a try and let me know if it works or doesn't.",
"created": "Wed, 07 Sep 2011 15:13:29 GMT",
"pgfnum": "1540"
},
"2": {
"text": "Parts:",
"created": "Wed, 07 Sep 2011 15:14:19 GMT",
"pgfnum": "1541",
"subs": {
"0": {
"text": "beautWebsite.index"
},
"1": {
"text": "beautWebsite.openPopup"
}
}
}
}
},
"3": {
"text": "Eliminating the line at the top of zebra-striped tables",
"created": "Wed, 07 Sep 2011 14:08:46 GMT",
"pgfnum": "1526",
"type": "blogpost",
"subs": {
"0": {
"text": "Dan had the answer.",
"created": "Wed, 07 Sep 2011 14:08:57 GMT",
"pgfnum": "1527"
},
"1": {
"text": "And I had the place to put it.",
"created": "Wed, 07 Sep 2011 14:30:00 GMT",
"pgfnum": "1535"
},
"2": {
"text": "webApp.data.headIncludes simply includes the bootstrap stylesheet.",
"created": "Wed, 07 Sep 2011 14:30:06 GMT",
"pgfnum": "1536"
},
"3": {
"text": "A great place to override one of its settings that will be broadcast everywhere I use it.",
"created": "Wed, 07 Sep 2011 14:36:50 GMT",
"pgfnum": "1538"
},
"4": {
"text": "So I put a <style> section after the link to the stylesheet.",
"created": "Wed, 07 Sep 2011 14:37:07 GMT",
"pgfnum": "1539"
},
"5": {
"text": "Perfect!",
"created": "Wed, 07 Sep 2011 14:31:27 GMT",
"pgfnum": "1537"
}
}
},
"4": {
"text": "Databases command in opmlEditor website",
"created": "Wed, 07 Sep 2011 15:48:47 GMT",
"pgfnum": "1542",
"type": "blogpost",
"subs": {
"0": {
"text": "New command lists all the open databases, how big they are, when they were created and where they are located in the guest databases folder.",
"created": "Wed, 07 Sep 2011 15:48:57 GMT",
"pgfnum": "1543"
},
"1": {
"text": "Parts",
"created": "Wed, 07 Sep 2011 15:49:25 GMT",
"pgfnum": "1544",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.databasesIntro"
},
"1": {
"text": "opmlEditor.viewOpenDatabases"
},
"2": {
"text": "opmlEditor.viewMenu"
},
"3": {
"text": "opmlEditor.website.databases"
}
}
}
}
}
}
},
"23": {
"text": "9/6/11 by DW",
"created": "Tue, 06 Sep 2011 13:30:04 GMT",
"pgfnum": "1496",
"subs": {
"0": {
"text": "Short-term roadmap",
"created": "Tue, 06 Sep 2011 15:45:24 GMT",
"pgfnum": "1509",
"type": "blogpost",
"subs": {
"0": {
"text": "Now the roadmap gets a bit simpler.",
"created": "Tue, 06 Sep 2011 15:45:29 GMT",
"pgfnum": "1510"
},
"1": {
"text": "1. A new clean release of River2, with a simple Howto that gets you a static river served by River2 itself. Easily mirrored on S3. A documented process for adding other users (and therefore other rivers).",
"created": "Tue, 06 Sep 2011 15:45:40 GMT",
"pgfnum": "1511"
},
"2": {
"text": "2. A new clean release of EC2 for Poets, with a Tools folder with just ec2Support.root and helloWorld.root. That is, none of the applications. When it installs you have one user, admin. All setup is done by the OPML Editor website. No special configuration panels, as we were doing with the photo archiver, and with blork. The special purpose setup routines just replicate code that should be in the core, and none of them do a very good job. The goal is to do a great job, once and for all, and be done with basic setup.",
"created": "Tue, 06 Sep 2011 15:46:17 GMT",
"pgfnum": "1512"
},
"3": {
"text": "3. I do a seminar at NYU showing people how to set up their own server. That's what I'm driving for. A human-tested and proven server setup that runs an aggregator, designed for reporters and professors and J-school students.",
"created": "Tue, 06 Sep 2011 15:48:16 GMT",
"pgfnum": "1513"
},
"4": {
"text": "Other priorities",
"created": "Tue, 06 Sep 2011 16:20:41 GMT",
"pgfnum": "1514",
"subs": {
"0": {
"text": "Build out the opmlEditor website as a sysop control panel. Include features that allow you to monitor all databases, backups, etc.",
"created": "Tue, 06 Sep 2011 16:20:47 GMT",
"pgfnum": "1515"
},
"1": {
"text": "Fully integrate with SLIde, so we can distribute applications across many machines, and share a single user name space.",
"created": "Tue, 06 Sep 2011 16:22:00 GMT",
"pgfnum": "1516"
},
"2": {
"text": "Upgrade worldOutline.root to the new user interface.",
"created": "Tue, 06 Sep 2011 16:23:30 GMT",
"pgfnum": "1517"
}
}
}
}
},
"1": {
"text": "New Blork bits",
"created": "Tue, 06 Sep 2011 13:30:05 GMT",
"pgfnum": "1497",
"type": "blogpost",
"subs": {
"0": {
"text": "Posting in a popup",
"created": "Tue, 06 Sep 2011 12:44:49 GMT",
"pgfnum": "1484",
"subs": {
"0": {
"text": "I wanted posting to be simpler and faster because I do a lot of it. I wanted the posting process to be in a popup window that goes away when you post. And that's now how it works.",
"created": "Tue, 06 Sep 2011 12:45:09 GMT",
"pgfnum": "1485"
},
"1": {
"text": "There's a new Post command at the beginning of the menu at the top of the screen. It opens the popup window. As does the bookmarklet and the RT command, and the Edit icon on the History page. When you want to create or edit a post, it's done in the popup window. So this is probably a change for pretty much everyone who uses Blork.",
"created": "Tue, 06 Sep 2011 12:47:55 GMT",
"pgfnum": "1487"
},
"2": {
"text": "The History function which used to be fairly well buried at the bottom of the post dialog, now has its own menu command.",
"created": "Tue, 06 Sep 2011 13:02:19 GMT",
"pgfnum": "1494"
},
"3": {
"text": "To make room for the new commands, the Podcastsand Photos commands were removed.",
"created": "Tue, 06 Sep 2011 13:02:39 GMT",
"pgfnum": "1495"
}
}
},
"1": {
"text": "The menu looks different",
"created": "Tue, 06 Sep 2011 12:48:58 GMT",
"pgfnum": "1488",
"subs": {
"0": {
"text": "We've adopted a standard look and feel for the menus in all the components of the Blork system, and that style appears here for the first time.",
"created": "Tue, 06 Sep 2011 12:55:47 GMT",
"pgfnum": "1489"
}
}
},
"2": {
"text": "The Prefs system looks much better",
"created": "Tue, 06 Sep 2011 12:56:49 GMT",
"pgfnum": "1490",
"subs": {
"0": {
"text": "It had been a long time since the Prefs system that Blork uses had gotten an overhaul and it needed one. Time waits for no one, as the Stones used to sing. And it was time to re-do this. I hope you'll agree it looks stunning now.",
"created": "Tue, 06 Sep 2011 12:56:56 GMT",
"pgfnum": "1491"
}
}
},
"3": {
"text": "Transitioning",
"created": "Tue, 06 Sep 2011 13:31:54 GMT",
"pgfnum": "1501",
"subs": {
"0": {
"text": "1. You must install the new Bookmarklet. The old one no longer works. (AC: I added the popup menu to the popup window, so you can use it to post to multiple feeds.) You can find a link to the Bookmarklet on the Docs page.",
"created": "Tue, 06 Sep 2011 13:31:58 GMT",
"pgfnum": "1502"
},
"1": {
"text": "2. There are some glitches in the display of some pages. We will fix these over time.",
"created": "Tue, 06 Sep 2011 13:32:18 GMT",
"pgfnum": "1503"
},
"2": {
"text": "3. If you're running a server you must update: opml.root, beaut.root, river2.root and radio2.root. The RIver2 UI has already been transitioned, as has the OPML Editor admin interface.",
"created": "Tue, 06 Sep 2011 13:33:33 GMT",
"pgfnum": "1504"
}
}
},
"4": {
"text": "Parts",
"created": "Tue, 06 Sep 2011 13:38:43 GMT",
"pgfnum": "1505",
"subs": {
"0": {
"text": "webApp.data.headIncludes"
},
"1": {
"text": "webApp.data.tableClass"
},
"2": {
"text": "webApp.viewHeadIncludes"
},
"3": {
"text": "webApp.viewMenu"
},
"4": {
"text": "beautSuite.data.docsOutline"
},
"5": {
"text": "beautSuite.data.html.historyIntro"
},
"6": {
"text": "beautSuite.data.html.river"
},
"7": {
"text": "beautSuite.data.prefsOutline"
},
"8": {
"text": "beautSuite.viewMenu"
},
"9": {
"text": "beautWebsite.[\"#filters\"].firstFilter"
},
"10": {
"text": "beautWebsite.[\"#template\"]"
},
"11": {
"text": "beautWebsite.feeds"
},
"12": {
"text": "beautWebsite.history"
},
"13": {
"text": "beautWebsite.openPopup"
},
"14": {
"text": "beautWebsite.popupPost.index"
},
"15": {
"text": "beautWebsite.prefs"
},
"16": {
"text": "beautWebsite.styles"
},
"17": {
"text": "prefs2.textAreaPref"
},
"18": {
"text": "radio2Suite.data.tweetBoxPopup"
},
"19": {
"text": "radio2Suite.init"
},
"20": {
"text": "radio2Suite.initUser"
},
"21": {
"text": "radio2Suite.main"
},
"22": {
"text": "radio2Suite.viewHistory"
},
"23": {
"text": "river2Website.subscriptions"
}
}
}
}
}
}
},
"24": {
"text": "9/5/11 by DW",
"created": "Mon, 05 Sep 2011 11:18:56 GMT",
"pgfnum": "1444",
"subs": {
"0": {
"text": "beaut.root conversion",
"created": "Mon, 05 Sep 2011 12:57:06 GMT",
"pgfnum": "1456",
"type": "blogpost",
"subs": {
"0": {
"text": "The user interface of blork is the next candidate for conversion. It has a lot of commands in its menus, but it's basically just another version of River2 (I hope). Let's find out.",
"created": "Mon, 05 Sep 2011 12:57:19 GMT",
"pgfnum": "1458"
},
"1": {
"text": "For this work, I'm setting up radio2.root and beaut.root on a test server named venus. This is good because I want to set up a separate machine for hosting Blork for others to use, separate from my overloaded main server.",
"created": "Mon, 05 Sep 2011 13:01:45 GMT",
"pgfnum": "1459"
},
"2": {
"text": "http://radiov.scripting.com/",
"created": "Mon, 05 Sep 2011 13:07:31 GMT",
"pgfnum": "1460"
},
"3": {
"text": "The Radio2 install worked without a hitch.",
"created": "Mon, 05 Sep 2011 13:15:29 GMT",
"pgfnum": "1461"
},
"4": {
"text": "http://blorkv.scripting.com/",
"created": "Mon, 05 Sep 2011 13:17:48 GMT",
"pgfnum": "1462"
},
"5": {
"text": "And the Beaut install worked too!",
"created": "Mon, 05 Sep 2011 13:21:29 GMT",
"pgfnum": "1463"
},
"6": {
"text": "There's an issue of \"userWhoCanCreateNewAccounts.\" This must be \"admin\" but there will be sites out there that work the old way. Not exactly sure what to do here.",
"created": "Mon, 05 Sep 2011 13:51:23 GMT",
"pgfnum": "1464",
"subs": {
"0": {
"text": "Just initialize it to admin. Existing installations will have it set as they have it set. No problems.",
"created": "Mon, 05 Sep 2011 14:31:06 GMT",
"pgfnum": "1465"
}
}
},
"7": {
"text": "Converted the menu. Works great.",
"created": "Mon, 05 Sep 2011 14:31:36 GMT",
"pgfnum": "1466"
},
"8": {
"text": "Converting prefs. Had to write prefs2.textareapref. As you can see it worked. (The first time!)",
"created": "Mon, 05 Sep 2011 15:17:24 GMT",
"pgfnum": "1467"
},
"9": {
"text": "Added Post command to menu, opens the popup window, with nothing filled in.",
"created": "Mon, 05 Sep 2011 18:02:27 GMT",
"pgfnum": "1471"
},
"10": {
"text": "New History command.",
"created": "Mon, 05 Sep 2011 18:02:48 GMT",
"pgfnum": "1473"
},
"11": {
"text": "If you signout, the styles on the signin page were all screwed up. That's because the new styles page wasn't making it through the cookie check. Made the fix in the firstfilter script. Watch out for this in other places.",
"created": "Tue, 06 Sep 2011 00:54:06 GMT",
"pgfnum": "1476"
},
"12": {
"text": "The Links page looks like crap, but I have no idea how it's supposed to work. Funny how when these things were tables they \"just worked.\" I know, it's not actually funny. :-)",
"created": "Tue, 06 Sep 2011 01:23:39 GMT",
"pgfnum": "1477"
},
"13": {
"text": "Comment the Podcasts and Photos commands. We need the space.",
"created": "Tue, 06 Sep 2011 01:25:07 GMT",
"pgfnum": "1478"
},
"14": {
"text": "Hooked up the Edit and Delete buttons on the History page.",
"created": "Mon, 05 Sep 2011 18:21:18 GMT",
"pgfnum": "1475"
},
"15": {
"text": "Added the feeds popup menu for feeds to the popup window.",
"created": "Mon, 05 Sep 2011 15:33:42 GMT",
"pgfnum": "1468"
},
"16": {
"text": "Hooked up the RT button.",
"created": "Mon, 05 Sep 2011 18:02:43 GMT",
"pgfnum": "1472"
},
"17": {
"text": "Parts",
"created": "Mon, 05 Sep 2011 15:36:38 GMT",
"pgfnum": "1469",
"subs": {
"0": {
"text": "beautSuite.data.html.historyIntro"
},
"1": {
"text": "beautSuite.data.html.postCommand"
},
"2": {
"text": "beautSuite.data.html.river"
},
"3": {
"text": "beautSuite.data.prefsOutline"
},
"4": {
"text": "beautSuite.viewMenu"
},
"5": {
"text": "beautWebsite.[\"#filters\"].firstFilter"
},
"6": {
"text": "beautWebsite.[\"#template\"]"
},
"7": {
"text": "beautWebsite.feeds"
},
"8": {
"text": "beautWebsite.history"
},
"9": {
"text": "beautWebsite.openPopup"
},
"10": {
"text": "beautWebsite.popupPost.index"
},
"11": {
"text": "beautWebsite.prefs"
},
"12": {
"text": "beautWebsite.rt"
},
"13": {
"text": "beautWebsite.styles"
},
"14": {
"text": "prefs2.textAreaPref"
},
"15": {
"text": "radio2Suite.data.tweetBoxPopup"
},
"16": {
"text": "radio2Suite.init"
},
"17": {
"text": "radio2Suite.initUser"
},
"18": {
"text": "radio2Suite.main"
},
"19": {
"text": "radio2Suite.viewHistory"
},
"20": {
"text": "river2Website.subscriptions"
},
"21": {
"text": "webApp.data.headIncludes"
},
"22": {
"text": "webApp.data.tableClass"
},
"23": {
"text": "webApp.viewHeadIncludes"
},
"24": {
"text": "webApp.viewMenu"
}
}
}
}
},
"1": {
"text": "Getting tables sorted out",
"created": "Mon, 05 Sep 2011 11:18:57 GMT",
"pgfnum": "1445",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm using the Bootstrap toolkit from Twitter, specifically the zebra-striped table format.",
"created": "Mon, 05 Sep 2011 11:19:12 GMT",
"pgfnum": "1446"
},
"1": {
"text": "The tables should have a <thead> and <tbody>. In <thead> is a <tr> with <th> elements.",
"created": "Mon, 05 Sep 2011 11:19:53 GMT",
"pgfnum": "1447"
},
"2": {
"text": "The <tbody> is just the normal table body stuff. <tr>s with <td>s within.",
"created": "Mon, 05 Sep 2011 11:21:06 GMT",
"pgfnum": "1448"
},
"3": {
"text": "log2.view",
"created": "Mon, 05 Sep 2011 11:23:43 GMT",
"pgfnum": "1449",
"subs": {
"0": {
"text": "Add <thead> and <tbody> elements. Eliminate the \"oddrow\" class on every other row. This can be done in the stylesheet (and is). If the cache is turned off don't store the text in the log item.",
"created": "Mon, 05 Sep 2011 11:23:49 GMT",
"pgfnum": "1450"
}
}
},
"4": {
"text": "opmleditor.viewCatalog",
"created": "Mon, 05 Sep 2011 11:54:11 GMT",
"pgfnum": "1451",
"subs": {
"0": {
"text": "In the column headers, use <th> elements instead of <td> elements. Want to get absolute consistency here. Remove <b> elements from the text in the <th> elements.",
"created": "Mon, 05 Sep 2011 11:54:17 GMT",
"pgfnum": "1452"
},
"1": {
"text": "And when I did this, the bold border at the top of the table appeared as in the log table. So now when we get rid of it in one place presumably it will go away in the other.",
"created": "Mon, 05 Sep 2011 11:54:18 GMT",
"pgfnum": "1453"
},
"2": {
"text": "And when we do tables anywhere, let's do it the same way. That way we can change them all by just changing builtins.webapp. Yes!",
"created": "Mon, 05 Sep 2011 11:54:49 GMT",
"pgfnum": "1454"
}
}
},
"5": {
"text": "General note: Be sure to update opml.root when you manually update any of the tools. Very often there are changes to core code when the tools are getting updates. You don't have to worry about this with automatic nightly updates, only when you do it \"by hand.\"",
"created": "Mon, 05 Sep 2011 11:56:33 GMT",
"pgfnum": "1455"
}
}
}
}
},
"25": {
"text": "9/4/11 by DW",
"created": "Sun, 04 Sep 2011 12:37:15 GMT",
"pgfnum": "1439",
"subs": {
"0": {
"text": "Feeds page in Blork",
"created": "Sun, 04 Sep 2011 12:59:00 GMT",
"pgfnum": "1442",
"type": "blogpost",
"subs": {
"0": {
"text": "As predicted, the feeds page in Blork is no longer centered. This is a good thing! (I understand how this shit works, better all the time.) But it still seems to work. Pretty soon I'm going to do this retrofit for Blork too and then all will be cool. :-)",
"created": "Sun, 04 Sep 2011 12:59:06 GMT",
"pgfnum": "1443"
}
}
},
"1": {
"text": "Work on the River2 feeds page",
"created": "Sat, 03 Sep 2011 22:44:11 GMT",
"pgfnum": "1425",
"type": "blogpost",
"subs": {
"0": {
"text": "river2suite.viewSubs",
"created": "Sat, 03 Sep 2011 22:44:17 GMT",
"pgfnum": "1426",
"subs": {
"0": {
"text": "The table's class can be set by a new parameter. It no longer has an ID of \"rivertable.\" This made no sense, to anyone -- I think.",
"created": "Sat, 03 Sep 2011 22:50:57 GMT",
"pgfnum": "1429"
},
"1": {
"text": "When I call this routine from the river2 website, I will set the table class to the webapp table class. It should remain constant for all other apps. This means beaut's view of the feeds page might get some weird formatting until I get there on my review, but it should continue to work.",
"created": "Sat, 03 Sep 2011 22:51:27 GMT",
"pgfnum": "1430"
},
"2": {
"text": "All the stuff on the page is contained within a class, divRiver2SubsPage.",
"created": "Sat, 03 Sep 2011 23:02:07 GMT",
"pgfnum": "1434"
}
}
},
"1": {
"text": "river2Suite.loadImage",
"created": "Sat, 03 Sep 2011 22:45:45 GMT",
"pgfnum": "1427",
"subs": {
"0": {
"text": "We're going to undo this. Originally River2 had a configurable UI, including a way to change the images. All you had to do is drop the new versions in a folder, and the software would automatically conform. This routine was the center of that. We will have much better ways to control the look. Simplify.",
"created": "Sat, 03 Sep 2011 22:45:48 GMT",
"pgfnum": "1428"
},
"1": {
"text": "There are still a couple of calls to loadImage in there, but I don't think they're actually generating any code that's being used in the rendering. Come back to this at a later date.",
"created": "Sun, 04 Sep 2011 12:45:28 GMT",
"pgfnum": "1441"
}
}
},
"2": {
"text": "river2Website.subscriptions",
"created": "Sat, 03 Sep 2011 22:56:16 GMT",
"pgfnum": "1431",
"subs": {
"0": {
"text": "This is where we pass in webApp.data.logTableClass.",
"created": "Sat, 03 Sep 2011 22:56:18 GMT",
"pgfnum": "1432"
},
"1": {
"text": "Also it was <center>ing the table. No more of that.",
"created": "Sat, 03 Sep 2011 22:56:58 GMT",
"pgfnum": "1433"
}
}
},
"3": {
"text": "template styles",
"created": "Sat, 03 Sep 2011 23:09:25 GMT",
"pgfnum": "1435",
"subs": {
"0": {
"text": "Removing #rivertable. I don't think anything breaks. Will find out now.",
"created": "Sat, 03 Sep 2011 23:09:30 GMT",
"pgfnum": "1436"
},
"1": {
"text": "There were all these styles for table's in there. I bet that's where the borders were coming from and sure enough, that's right",
"created": "Sat, 03 Sep 2011 23:10:49 GMT",
"pgfnum": "1437",
"subs": {
"0": {
"text": "td {",
"subs": {
"0": {
"text": "border: 1px solid gainsboro;"
},
"1": {
"text": "background: #fff;"
},
"2": {
"text": "padding: 6px 6px 6px 12px;"
},
"3": {
"text": "color: #4f6b72;"
},
"4": {
"text": "}"
}
}
},
"1": {
"text": "td.newsCheckbox {",
"subs": {
"0": {
"text": "background: #fff;"
},
"1": {
"text": "padding: 6px 6px 6px 12px;"
},
"2": {
"text": "color: #4f6b72;"
},
"3": {
"text": "}"
}
}
},
"2": {
"text": "td.newsItem {",
"subs": {
"0": {
"text": "background: #fff;"
},
"1": {
"text": "padding: 6px 6px 6px 12px;"
},
"2": {
"text": "color: #4f6b72;"
},
"3": {
"text": "}"
}
}
},
"3": {
"text": "td.newsOrnaments {",
"subs": {
"0": {
"text": "background: #fff;"
},
"1": {
"text": "padding: 6px 6px 6px 12px;"
},
"2": {
"text": "color: #4f6b72;"
},
"3": {
"text": "}"
}
}
},
"4": {
"text": "td.feedname {",
"subs": {
"0": {
"text": "background: #F5F5F5;"
},
"1": {
"text": "color: #006600;"
},
"2": {
"text": "}"
}
}
},
"5": {
"text": "td.subscription {",
"subs": {
"0": {
"text": "background: #fff;"
},
"1": {
"text": "color: #4f6b72;"
},
"2": {
"text": "}"
}
}
},
"6": {
"text": "td.subscriptionAlt {",
"subs": {
"0": {
"text": "background: #F5F5F5;"
},
"1": {
"text": "color: #4f6b72;"
},
"2": {
"text": "}"
}
}
}
}
}
}
}
}
}
}
},
"26": {
"text": "9/3/11 by DW",
"created": "Sat, 03 Sep 2011 14:07:05 GMT",
"pgfnum": "1399",
"subs": {
"0": {
"text": "Frontier-Users list",
"created": "Sat, 03 Sep 2011 16:35:22 GMT",
"pgfnum": "1419",
"type": "blogpost",
"subs": {
"0": {
"text": "If you're following this narrative, there's a companion mail list you might want to subscribe to.",
"created": "Sat, 03 Sep 2011 16:35:26 GMT",
"pgfnum": "1420"
},
"1": {
"text": "Or you can follow it in your RSS reader.",
"created": "Sat, 03 Sep 2011 16:39:10 GMT",
"pgfnum": "1424"
}
}
},
"1": {
"text": "The log page in River2",
"created": "Sat, 03 Sep 2011 15:20:19 GMT",
"pgfnum": "1408",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a good place to work, because the log page is something that appears in a lot of contexts, it's a table, and there's a very good model for what it should look like -- the Tool Catalog page.",
"created": "Sat, 03 Sep 2011 15:20:26 GMT",
"pgfnum": "1409"
},
"1": {
"text": "Here are two screen shots: Tool Catalog and Log taken right now. The goal is to get the latter to look like the former.",
"created": "Sat, 03 Sep 2011 15:21:00 GMT",
"pgfnum": "1410"
},
"2": {
"text": "1. log2.view -- Numerous changes, explained in the comment at the head of the script.",
"created": "Sat, 03 Sep 2011 15:23:36 GMT",
"pgfnum": "1412"
},
"3": {
"text": "2. river2website.log -- Connected the log table up with the webApp style sheet. Added a header and intro.",
"created": "Sat, 03 Sep 2011 15:42:04 GMT",
"pgfnum": "1413"
},
"4": {
"text": "BTW, it's nice to spend a little time focused on the log page of an app. I never have time to do that. It's not a tight corner, so it's easy to make big improvements with more manageable breakage.",
"created": "Sat, 03 Sep 2011 15:42:09 GMT",
"pgfnum": "1414"
},
"5": {
"text": "Also, in the river2 template, removed styles for UI components that are no longer present. navMenu, divPrefs table elements.",
"created": "Sat, 03 Sep 2011 16:14:22 GMT",
"pgfnum": "1418"
},
"6": {
"text": "Still todo: The log page now works much better, but there's a border that shouldn't be there. Can't figure out how it got there. Maybe one of the CSS gurus can help me figure that out??",
"created": "Sat, 03 Sep 2011 16:10:29 GMT",
"pgfnum": "1415"
},
"7": {
"text": "Parts:",
"created": "Sat, 03 Sep 2011 16:14:01 GMT",
"pgfnum": "1416",
"subs": {
"0": {
"text": "river2Suite.data.html.logPageIntro"
},
"1": {
"text": "webApp.data.logTableClass"
},
"2": {
"text": "log2.view"
},
"3": {
"text": "river2Website.log"
},
"4": {
"text": "river2Website.[\"#template\"]"
}
}
}
}
},
"2": {
"text": "Version and username in River2 UI",
"created": "Sat, 03 Sep 2011 14:07:06 GMT",
"pgfnum": "1400",
"type": "blogpost",
"subs": {
"0": {
"text": "The version number and username are now visible in user interface.",
"created": "Sat, 03 Sep 2011 14:07:22 GMT",
"pgfnum": "1401"
},
"1": {
"text": "This helps enormously in debugging.",
"created": "Sat, 03 Sep 2011 15:04:00 GMT",
"pgfnum": "1404"
},
"2": {
"text": "Screen shot.",
"created": "Sat, 03 Sep 2011 15:03:59 GMT",
"pgfnum": "1403"
},
"3": {
"text": "BTW, in case it's not clear, the new menu and prefs code is going to make its way into all apps, so there can be new much-needed integration.",
"created": "Sat, 03 Sep 2011 15:05:30 GMT",
"pgfnum": "1407"
},
"4": {
"text": "Parts",
"created": "Sat, 03 Sep 2011 15:04:12 GMT",
"pgfnum": "1405",
"subs": {
"0": {
"text": "webApp.data.styles"
},
"1": {
"text": "webApp.viewMenu"
},
"2": {
"text": "river2Suite.viewMenu"
},
"3": {
"text": "river2Website.log"
}
}
}
}
}
}
},
"27": {
"text": "9/2/11 by DW",
"created": "Fri, 02 Sep 2011 16:25:35 GMT",
"pgfnum": "1380",
"subs": {
"0": {
"text": "Loose ends",
"created": "Sat, 03 Sep 2011 00:40:59 GMT",
"pgfnum": "1397",
"type": "blogpost",
"subs": {
"0": {
"text": "These parts didn't make it out in the last release.",
"created": "Sat, 03 Sep 2011 00:41:04 GMT",
"pgfnum": "1398",
"subs": {
"0": {
"text": "webApp.data.fontLinks"
},
"1": {
"text": "webApp.viewFontLinks"
},
"2": {
"text": "webApp.viewStyles"
}
}
}
}
},
"1": {
"text": "River2 integration",
"created": "Fri, 02 Sep 2011 16:25:36 GMT",
"pgfnum": "1381",
"type": "blogpost",
"subs": {
"0": {
"text": "The project for the last two days was to make River2 work on the same foundation as the OPML Editor website.",
"created": "Fri, 02 Sep 2011 21:55:56 GMT",
"pgfnum": "1388"
},
"1": {
"text": "The foundation is: 1. builtins.prefs2 and 2. builtins.webapp.",
"created": "Fri, 02 Sep 2011 21:56:21 GMT",
"pgfnum": "1389"
},
"2": {
"text": "I'm pretty happy with the way River2 works.",
"created": "Fri, 02 Sep 2011 21:56:49 GMT",
"pgfnum": "1390"
},
"3": {
"text": "The roadmap is to fill out the OPML Editor menu as a control panel for managing the server, and River2 as the prototype application.",
"created": "Fri, 02 Sep 2011 21:57:08 GMT",
"pgfnum": "1391"
},
"4": {
"text": "All this will come together in a new release of EC2 for Poets which is also pretty far along.",
"created": "Fri, 02 Sep 2011 21:57:33 GMT",
"pgfnum": "1392"
},
"5": {
"text": "When you install the AMI, you get a platform, and installing River2 is a matter of clicking the Install link on the Tool Catalog page.",
"created": "Fri, 02 Sep 2011 21:57:49 GMT",
"pgfnum": "1393"
},
"6": {
"text": "Should be getting there pretty soon. Maybe in a week or two. :-)",
"created": "Fri, 02 Sep 2011 21:58:13 GMT",
"pgfnum": "1394"
},
"7": {
"text": "Parts",
"created": "Fri, 02 Sep 2011 21:58:29 GMT",
"pgfnum": "1395",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.catalogIntro"
},
"1": {
"text": "opmlEditor.viewCatalog"
},
"2": {
"text": "opmlEditor.viewMenu"
},
"3": {
"text": "opmlEditor.website.[\"#template\"]"
},
"4": {
"text": "opmlEditor.website.styles"
},
"5": {
"text": "river2Suite.data.prefsOutline"
},
"6": {
"text": "river2Suite.viewMenu"
},
"7": {
"text": "river2Website.[\"#template\"]"
},
"8": {
"text": "river2Website.docs"
},
"9": {
"text": "river2Website.prefs"
},
"10": {
"text": "river2Website.styles"
},
"11": {
"text": "webApp"
},
"12": {
"text": "webApp.data.styles"
},
"13": {
"text": "webApp.viewMenu"
}
}
}
}
}
}
},
"28": {
"text": "9/1/11 by DW",
"created": "Thu, 01 Sep 2011 15:25:36 GMT",
"pgfnum": "1358",
"subs": {
"0": {
"text": "builtins.webApp",
"created": "Thu, 01 Sep 2011 22:08:09 GMT",
"pgfnum": "1371",
"type": "blogpost",
"subs": {
"0": {
"text": "Now that the new OPML interface is out, it's time to factor it, so that the same techniques can be used by the websites of the Tools, without replicating code.",
"created": "Thu, 01 Sep 2011 22:08:17 GMT",
"pgfnum": "1372"
},
"1": {
"text": "Let's start a new builtin table, webApp. There is webBrowser and webServer. This layer adds menus, prefs, etc.",
"created": "Thu, 01 Sep 2011 22:17:37 GMT",
"pgfnum": "1375"
},
"2": {
"text": "1. I factored the rendering code from builtins.opmlEditor into builtins.webApp, and made the modifications to the template for the opmleEditor website.",
"created": "Thu, 01 Sep 2011 22:16:55 GMT",
"pgfnum": "1373"
},
"3": {
"text": "2. Then I started work on River2. Changed its menu routine to use webapp.viewmenu. I was able to access almost all parts of my local River2 website, and the styles mostly work. There are a few colors that are wrong. I have an idea what the problem is.",
"created": "Thu, 01 Sep 2011 23:35:50 GMT",
"pgfnum": "1376"
},
"4": {
"text": "3. Now I'm going to check in these changes on my test server, one that's really running River2. Once I get it working there, I'll release the modifications to builtins.opmlEditor, the first release of builtins.webApp, and a new version of River2.",
"created": "Thu, 01 Sep 2011 23:36:50 GMT",
"pgfnum": "1377",
"subs": {
"0": {
"text": "builtins.webapp",
"created": "Thu, 01 Sep 2011 23:42:56 GMT",
"pgfnum": "1378"
},
"1": {
"text": "river2Suite.viewMenu"
},
"2": {
"text": "river2Website.[\"#template\"]"
},
"3": {
"text": "opmlEditor.data.outlines.catalogIntro"
},
"4": {
"text": "opmlEditor.viewCatalog"
},
"5": {
"text": "opmlEditor.viewMenu"
},
"6": {
"text": "opmlEditor.website.[\"#template\"]"
},
"7": {
"text": "opmlEditor.website.styles"
}
}
},
"5": {
"text": "4. Time to call it a day. Very productive even though not a lot of hours at the keyboard.",
"created": "Thu, 01 Sep 2011 23:56:02 GMT",
"pgfnum": "1379"
}
}
},
"1": {
"text": "Prefs2 release, OPML Editor prefs converted",
"created": "Thu, 01 Sep 2011 15:25:49 GMT",
"pgfnum": "1359",
"type": "blogpost",
"subs": {
"0": {
"text": "I now have the Prefs system for the OPML Editor working once again after the changes in styles, and using the Bootstrap library from Twitter. The new look is much better, and there's room for a lot more functionality.",
"created": "Thu, 01 Sep 2011 15:25:55 GMT",
"pgfnum": "1360"
},
"1": {
"text": "From the inside, the new prefs system is in prefs2, and corresponds to log2, scheduler2, river2, radio2, etc. A revisit of something core to the functionality that has been completely rewritten in the last few years, but is backward compatible with previous versions. This runs the same outlines as radio.prefs, but does it with much better use of fonts and CSS and no tables.",
"created": "Thu, 01 Sep 2011 16:35:43 GMT",
"pgfnum": "1370"
},
"2": {
"text": "I'm going to have to use new techniques to come up with a list of parts that changed. (Wrote and released a sample script that does it. workspace.userlandSamples.findChangedParts.)",
"created": "Thu, 01 Sep 2011 15:26:42 GMT",
"pgfnum": "1361",
"subs": {
"0": {
"text": "prefs2",
"created": "Thu, 01 Sep 2011 16:35:35 GMT",
"pgfnum": "1369"
},
"1": {
"text": "opmlEditor.data.outlines.catalogIntro"
},
"2": {
"text": "opmlEditor.data.outlines.prefs"
},
"3": {
"text": "opmlEditor.data.outlines.signInTemplate"
},
"4": {
"text": "opmlEditor.data.outlines.websiteHeader"
},
"5": {
"text": "opmlEditor.init"
},
"6": {
"text": "opmlEditor.initUser"
},
"7": {
"text": "opmlEditor.member.checkCookie"
},
"8": {
"text": "opmlEditor.member.exists"
},
"9": {
"text": "opmlEditor.viewCatalog"
},
"10": {
"text": "opmlEditor.viewMenu"
},
"11": {
"text": "opmlEditor.website"
}
}
}
}
},
"2": {
"text": "New sample script",
"created": "Thu, 01 Sep 2011 16:05:03 GMT",
"pgfnum": "1363",
"subs": {
"0": {
"text": "workspace.userlandSamples.findChangedParts finds all outlines, scripts and tables in the indicated table that have changed since marktime.",
"created": "Thu, 01 Sep 2011 16:05:07 GMT",
"pgfnum": "1364"
}
}
},
"3": {
"text": "Re-started Frontier-User list",
"created": "Thu, 01 Sep 2011 16:05:38 GMT",
"pgfnum": "1365",
"subs": {
"0": {
"text": "As a Google Group.",
"created": "Thu, 01 Sep 2011 16:05:45 GMT",
"pgfnum": "1366"
}
}
}
}
}
}
},
"21": {
"created": "Wed, 03 Aug 2011 10:11:25 GMT",
"pgfnum": "801",
"text": "August 2011",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/09/01/archive009.opml",
"subs": {
"0": {
"text": "8/31/11 by DW",
"created": "Wed, 31 Aug 2011 14:03:12 GMT",
"pgfnum": "1345",
"type": "blogpost",
"subs": {
"0": {
"text": "Nearing closure on the rewrite of the prefs system. When this is done, the prefs system will be 2012-modern, using styles and fonts. I'm getting to some degree of mastery over CSS, rather than just throwing shit up there and mindlessly guessing at the answer until something tolerable shows up. This time I think it actually looks good.",
"created": "Wed, 31 Aug 2011 14:03:13 GMT",
"pgfnum": "1346"
},
"1": {
"text": "While I'm in here, I'm also going to get rid of password confirmation. It's an idea that thankfully has gone by the wayside. (Postscript: The new prefs system works fine without repeated passwords. So go ahead and remove the extra stuff and just prompt for the password. Use the World Outline Server prefs page as an example.)",
"created": "Wed, 31 Aug 2011 14:04:42 GMT",
"pgfnum": "1347"
},
"2": {
"text": "Also going to retire the FriendFeed and identi.ca prefs pages, though the data will remain in the object database. And get ready to write a whole bunch more.",
"created": "Wed, 31 Aug 2011 14:05:08 GMT",
"pgfnum": "1348"
},
"3": {
"text": "I've made zero changes to the prefs outline. This is important. Even though I'm rewriting radio.prefs into a new prefs2 builtin table, it's important that old outlines continue to work. This means I'll be able to wholesale adopt this new code right off and not have to wait till I get around to a conversion.",
"created": "Wed, 31 Aug 2011 14:05:35 GMT",
"pgfnum": "1349"
},
"4": {
"text": "To ease this process:",
"created": "Wed, 31 Aug 2011 14:06:37 GMT",
"pgfnum": "1350"
},
"5": {
"text": "1. I'm replacing radio.prefs everywhere with prefs2.",
"created": "Wed, 31 Aug 2011 14:06:43 GMT",
"pgfnum": "1351"
},
"6": {
"text": "2. I'm eliminating all <br>s.",
"created": "Wed, 31 Aug 2011 14:06:55 GMT",
"pgfnum": "1352"
},
"7": {
"text": "3. Not sure what else.",
"created": "Wed, 31 Aug 2011 14:07:14 GMT",
"pgfnum": "1353"
},
"8": {
"text": "Here's a screen shot.",
"created": "Wed, 31 Aug 2011 14:07:28 GMT",
"pgfnum": "1354"
},
"9": {
"text": "I want to pull in the prefs systems for: River2, Blork, WorldOutline -- anything else?",
"created": "Wed, 31 Aug 2011 14:12:45 GMT",
"pgfnum": "1356"
},
"10": {
"text": "Overall there's a lot less optimization. That can come later. And may not be necessary at all. The machines have gotten a lot faster since the original version was written, and these are small outlines, not huge ones like the ones we sling around in the world outline.",
"created": "Wed, 31 Aug 2011 14:09:58 GMT",
"pgfnum": "1355"
}
}
},
"1": {
"text": "8/30/11 by DW",
"created": "Tue, 30 Aug 2011 13:43:44 GMT",
"pgfnum": "1341",
"subs": {
"0": {
"text": "Back to work on the opmleditor website",
"created": "Tue, 30 Aug 2011 13:43:45 GMT",
"pgfnum": "1342",
"subs": {
"0": {
"text": "Working on a way for our Prefs system, which is table-based, to work well within the Bootstrap environment.",
"created": "Tue, 30 Aug 2011 13:44:00 GMT",
"pgfnum": "1343"
}
}
}
}
},
"2": {
"text": "8/27/11 by DW",
"created": "Sat, 27 Aug 2011 08:01:34 GMT",
"pgfnum": "1308",
"subs": {
"0": {
"text": "Review of opmleditor website",
"created": "Sat, 27 Aug 2011 19:43:37 GMT",
"pgfnum": "1330",
"subs": {
"0": {
"text": "Started out as working on look and feel, but now I'm adapting to the new identity system. Long overdue.",
"created": "Sun, 28 Aug 2011 14:12:10 GMT",
"pgfnum": "1334"
},
"1": {
"text": "In opmleditor.init, we create an admin user if one doesn't exist, and write the admin user's password to a file in the Extras sub-folder of the folder that contains the OPML app.",
"created": "Sun, 28 Aug 2011 14:21:38 GMT",
"pgfnum": "1335"
},
"2": {
"text": "To test it properly I had to set user.opmlEditor.prefs.flLocalMemberIsAdmin false. Might want to turn it back on later. (Already have.)",
"created": "Sun, 28 Aug 2011 15:40:29 GMT",
"pgfnum": "1339"
},
"3": {
"text": "The local admin user needs to be able to sign in and out. There are other personalities than admin.",
"created": "Sun, 28 Aug 2011 16:08:57 GMT",
"pgfnum": "1340"
},
"4": {
"text": "Parts",
"created": "Sat, 27 Aug 2011 19:43:46 GMT",
"pgfnum": "1331",
"subs": {
"0": {
"text": "opmlEditor.viewCatalog",
"created": "Sat, 27 Aug 2011 19:43:49 GMT",
"pgfnum": "1332"
},
"1": {
"text": "opmlEditor.data.outlines.catalogIntro",
"created": "Sat, 27 Aug 2011 19:44:03 GMT",
"pgfnum": "1333"
},
"2": {
"text": "opmlEditor.website.[\"#template\"]"
},
"3": {
"text": "opmlEditor.data.outlines.websiteHeader"
},
"4": {
"text": "opmlEditor.initUser"
},
"5": {
"text": "opmlEditor.member.exists"
},
"6": {
"text": "opmlEditor.init",
"created": "Sun, 28 Aug 2011 14:42:15 GMT",
"pgfnum": "1338"
},
"7": {
"text": "opmlEditor.viewMenu"
}
}
}
}
},
"1": {
"text": "Added a cache to worldOutline",
"created": "Sat, 27 Aug 2011 15:39:08 GMT",
"pgfnum": "1329",
"type": "blogpost",
"subs": {
"0": {
"text": "I added a cache to worldOutlineSuite.main. It skips the call to html.viewDirectory if someone has already viewed the page since the root outline was modified. In theory it should be possible to publish links to worldoutline nodes, if this works, without much regard to how many visits it gets right off the bat.",
"created": "Sat, 27 Aug 2011 15:39:19 GMT",
"pgfnum": "1330"
},
"1": {
"text": "This problem is caused because of all the bots that are watching Twitter. When I publish a link there's an immediate surge of programs hitting the page probably for no good reason. But that's the way it works.",
"created": "Sat, 27 Aug 2011 15:41:09 GMT",
"pgfnum": "1331"
},
"2": {
"text": "I had to make a fix so the counter increments even if we access the cache, to see how it handles a flood from Twitter.",
"created": "Sat, 27 Aug 2011 15:42:02 GMT",
"pgfnum": "1332"
},
"3": {
"text": "What's really cool about this page is that it's a test of caching (we can see the updates after saving) and when I turn it into a blogpost nodetype, it will get linked to on Twitter, so it will get a flood of hits.",
"created": "Sat, 27 Aug 2011 15:46:45 GMT",
"pgfnum": "1333"
},
"4": {
"text": "Let's see!",
"created": "Sat, 27 Aug 2011 15:47:22 GMT",
"pgfnum": "1334"
},
"5": {
"text": "Parts: worldOutlineSuite.main.",
"created": "Sat, 27 Aug 2011 19:41:58 GMT",
"pgfnum": "1329"
}
}
},
"2": {
"text": "Howto for River2",
"created": "Sat, 27 Aug 2011 14:20:52 GMT",
"pgfnum": "1325",
"type": "blogpost",
"subs": {
"0": {
"text": "Need a howto that explains how to create a new river.",
"created": "Sat, 27 Aug 2011 14:21:06 GMT",
"pgfnum": "1326"
},
"1": {
"text": "I need one for development stuff, for Brent to watch.",
"created": "Sat, 27 Aug 2011 14:21:16 GMT",
"pgfnum": "1327"
},
"2": {
"text": "Also need the howto. :-)",
"created": "Sat, 27 Aug 2011 14:21:30 GMT",
"pgfnum": "1328"
}
}
},
"3": {
"text": "Faster text building",
"created": "Sat, 27 Aug 2011 14:06:01 GMT",
"pgfnum": "1319",
"type": "blogpost",
"subs": {
"0": {
"text": "As noted earlier, there's a faster way to build strings of HTML, XML and JSON. I'm applying the new method in several crucial places. Should result in an overall performance boost.",
"created": "Sat, 27 Aug 2011 14:06:10 GMT",
"pgfnum": "1320"
},
"1": {
"text": "A new example script illustrates: workspace.userlandSamples.fasterTextBuilding.",
"created": "Sat, 27 Aug 2011 14:06:52 GMT",
"pgfnum": "1321"
},
"2": {
"text": "Also, I made it so that html nodetypes have the same ability to save rendered content to S3 as howto nodes and I generalized the function, so it will be easy to do it for other nodetypes. I have a hurricane webcam that should be served out of S3 in case it gets a lot of hits.",
"created": "Sat, 27 Aug 2011 14:11:23 GMT",
"pgfnum": "1324"
},
"3": {
"text": "Parts",
"created": "Sat, 27 Aug 2011 14:07:39 GMT",
"pgfnum": "1322",
"subs": {
"0": {
"text": "river2Suite.opmlBuild"
},
"1": {
"text": "river2Suite.viewJsonNews3"
},
"2": {
"text": "river2Suite.viewMenu"
},
"3": {
"text": "river2Suite.viewSubs"
},
"4": {
"text": "worldOutlineSuite.uploadToS3"
},
"5": {
"text": "howto2Suite.renderSubOutline"
},
"6": {
"text": "html.directory.getRawHtml"
},
"7": {
"text": "html.directory.viewDirectory"
}
}
}
}
},
"4": {
"text": "Optimizing html.directory.viewDirectory",
"created": "Sat, 27 Aug 2011 08:01:35 GMT",
"pgfnum": "1309",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a good place to make faster, esp when a site is getting hit with a burst of traffic.",
"created": "Sat, 27 Aug 2011 08:01:49 GMT",
"pgfnum": "1310"
},
"1": {
"text": "Brent uncovered an old optimization that we had forgotten.",
"created": "Sat, 27 Aug 2011 08:06:46 GMT",
"pgfnum": "1315"
},
"2": {
"text": "Instead of the usual \"add\" routine, use this form instead:",
"created": "Sat, 27 Aug 2011 08:02:22 GMT",
"pgfnum": "1311",
"subs": {
"0": {
"text": "on add (s)",
"subs": {
"0": {
"text": "htmltext = htmltext + (string.filledstring (\"\\t\", indentlevel) + s + \"\\r\")"
},
"1": {
"text": "return (\"\")",
"created": "Sat, 27 Aug 2011 08:08:09 GMT",
"pgfnum": "1316"
}
}
}
}
},
"3": {
"text": "The kernel recognizes this and doesn't create a new string, instead it adds to the existing string.",
"created": "Sat, 27 Aug 2011 08:02:51 GMT",
"pgfnum": "1313"
},
"4": {
"text": "When the text being generated gets long, this gets sloooowwwww. ",
"created": "Sat, 27 Aug 2011 08:03:16 GMT",
"pgfnum": "1314"
}
}
}
}
},
"3": {
"text": "8/26/11 by DW",
"created": "Fri, 26 Aug 2011 15:09:26 GMT",
"pgfnum": "1274",
"subs": {
"0": {
"text": "Encoding in the JSON river",
"created": "Fri, 26 Aug 2011 18:03:49 GMT",
"pgfnum": "1300",
"type": "blogpost",
"subs": {
"0": {
"text": "In the re-skinning of River2, I made a change to the way we encode the JSON behind the beautiful display. This was actually a bad idea. So I reversed it. And also optimized the building of the JSON so it should be quite a bit faster.",
"created": "Fri, 26 Aug 2011 18:03:53 GMT",
"pgfnum": "1301"
},
"1": {
"text": "Part: river2suite.viewJsonNews3.",
"created": "Fri, 26 Aug 2011 18:04:50 GMT",
"pgfnum": "1302"
}
}
},
"1": {
"text": "Headers for HowTos",
"created": "Fri, 26 Aug 2011 16:07:31 GMT",
"pgfnum": "1296",
"type": "blogpost",
"subs": {
"0": {
"text": "If a howto node doesn't have a headergraphic attribute, then use the title, in the default font.",
"created": "Fri, 26 Aug 2011 16:07:42 GMT",
"pgfnum": "1297"
},
"1": {
"text": "Here's an example.",
"created": "Fri, 26 Aug 2011 17:51:05 GMT",
"pgfnum": "1299"
},
"2": {
"text": "Parts: howtto2suite.renderSubOutline.",
"created": "Fri, 26 Aug 2011 17:50:43 GMT",
"pgfnum": "1298"
}
}
},
"2": {
"text": "Styles in worldoutline",
"created": "Fri, 26 Aug 2011 15:33:30 GMT",
"pgfnum": "1284",
"styles": "h1 {color: #00A000; text-shadow: 4px 4px 4px #AAA;}",
"type": "blogpost",
"subs": {
"0": {
"text": "Remind me how they work.",
"created": "Fri, 26 Aug 2011 15:33:37 GMT",
"pgfnum": "1285"
},
"1": {
"text": "Here's a node that has styles. Do a view-source to see what it generates. Pretty much what you'd think.",
"created": "Fri, 26 Aug 2011 15:51:39 GMT",
"pgfnum": "1290"
},
"2": {
"text": "So I added a style to the parent of this line, setting the color for H1 to green. And sure enough the headline is green.",
"created": "Fri, 26 Aug 2011 15:53:26 GMT",
"pgfnum": "1291"
},
"3": {
"text": "Let's try adding a shadow! And sure enough you get a shadow.",
"created": "Fri, 26 Aug 2011 15:53:50 GMT",
"pgfnum": "1292"
},
"4": {
"text": "The mistake I was making before was thinking I needed to add the class. I guess not?",
"created": "Fri, 26 Aug 2011 15:56:28 GMT",
"pgfnum": "1294"
},
"5": {
"text": "No. The mistake I made was it was on a HowTo node, and it doesn't support styles. Need to look at that.",
"created": "Fri, 26 Aug 2011 15:56:41 GMT",
"pgfnum": "1295"
}
}
},
"3": {
"text": "Caching in html.directory.viewdirectory",
"created": "Fri, 26 Aug 2011 15:48:55 GMT",
"pgfnum": "1288",
"subs": {
"0": {
"text": "Not sure how the cache would get invalidated, but we need to be able to handle a rush of readers that comes when something on the worldoutline is pointed to from one of the high flow sites.",
"created": "Fri, 26 Aug 2011 15:49:16 GMT",
"pgfnum": "1289"
}
}
},
"4": {
"text": "New control panel",
"created": "Fri, 26 Aug 2011 15:33:42 GMT",
"pgfnum": "1286",
"subs": {
"0": {
"text": "Need to get started on this.",
"created": "Fri, 26 Aug 2011 15:33:47 GMT",
"pgfnum": "1287"
}
}
},
"5": {
"text": "Poets15 done",
"created": "Fri, 26 Aug 2011 15:09:27 GMT",
"pgfnum": "1275",
"type": "blogpost",
"subs": {
"0": {
"text": "I built and tested Poets15.",
"created": "Fri, 26 Aug 2011 15:09:33 GMT",
"pgfnum": "1276"
},
"1": {
"text": "Created a test instance. Installed River2. Looks great. Static rendering works.",
"created": "Fri, 26 Aug 2011 15:14:06 GMT",
"pgfnum": "1281"
},
"2": {
"text": "I also rewrote the intro to EC2 for Poets to reflect the goals of this release.",
"created": "Fri, 26 Aug 2011 15:11:04 GMT",
"pgfnum": "1277"
},
"3": {
"text": "It's more than proof-of-concept now. It's a platform.",
"created": "Fri, 26 Aug 2011 15:15:25 GMT",
"pgfnum": "1283"
},
"4": {
"text": "A collection of instruments that play a symphony.",
"created": "Fri, 26 Aug 2011 15:14:42 GMT",
"pgfnum": "1282"
},
"5": {
"text": "A distributed publishing system operated by its users.",
"created": "Fri, 26 Aug 2011 15:11:57 GMT",
"pgfnum": "1279"
},
"6": {
"text": "Poets15 and River2 are two separate products, but they will be released together.",
"created": "Fri, 26 Aug 2011 15:11:29 GMT",
"pgfnum": "1278"
},
"7": {
"text": "This is the package for journalism students. Step one.",
"created": "Fri, 26 Aug 2011 15:13:10 GMT",
"pgfnum": "1280"
}
}
}
}
},
"4": {
"text": "8/25/11 by DW",
"created": "Thu, 25 Aug 2011 12:30:23 GMT",
"pgfnum": "1227",
"subs": {
"0": {
"text": "Prepare for poets15",
"created": "Thu, 25 Aug 2011 21:11:37 GMT",
"pgfnum": "1262",
"type": "blogpost",
"subs": {
"0": {
"text": "Launching an instance from poets14 called poetprep15.",
"created": "Thu, 25 Aug 2011 21:11:46 GMT",
"pgfnum": "1263"
},
"1": {
"text": "Going to let it run overnight and update whatever software needs updating.",
"created": "Thu, 25 Aug 2011 21:13:53 GMT",
"pgfnum": "1264"
},
"2": {
"text": "Tomorrow I will do the build.",
"created": "Thu, 25 Aug 2011 21:14:08 GMT",
"pgfnum": "1265"
},
"3": {
"text": "Time to write this for real: poetstartup.blorkmark.com",
"created": "Thu, 25 Aug 2011 21:20:38 GMT",
"pgfnum": "1266"
}
}
},
"1": {
"text": "Encoding in river2suite.viewJsonNews3",
"created": "Thu, 25 Aug 2011 20:33:23 GMT",
"pgfnum": "1258",
"subs": {
"0": {
"text": "This is the core river-in-json routine.",
"created": "Thu, 25 Aug 2011 20:33:32 GMT",
"pgfnum": "1259"
},
"1": {
"text": "Undid a change I made in the previous release.",
"created": "Thu, 25 Aug 2011 20:33:49 GMT",
"pgfnum": "1260"
}
}
},
"2": {
"text": "URLs of rivers",
"created": "Thu, 25 Aug 2011 16:19:17 GMT",
"pgfnum": "1246",
"subs": {
"0": {
"text": "East Village news",
"created": "Thu, 25 Aug 2011 16:20:27 GMT",
"pgfnum": "1254",
"type": "link",
"url": "http://static.scripting.com/houston/rivers/eastVillageRiver3.js"
},
"1": {
"text": "NYT river",
"created": "Thu, 25 Aug 2011 16:20:57 GMT",
"pgfnum": "1256",
"type": "link",
"url": "http://nytimesriver.com/nytRiverRiver3.js"
},
"2": {
"text": "TNW tech news river",
"created": "Thu, 25 Aug 2011 16:21:10 GMT",
"pgfnum": "1257",
"type": "link",
"url": "http://static.scripting.com/zee/zeeRiver3.js"
},
"3": {
"text": "Dave's personal river",
"created": "Thu, 25 Aug 2011 16:20:00 GMT",
"pgfnum": "1251",
"type": "link",
"url": "http://daveriver.scripting.com/iowaRiver3.js"
},
"4": {
"text": "Adam Curry's river",
"created": "Thu, 25 Aug 2011 16:20:43 GMT",
"pgfnum": "1255",
"type": "link",
"url": "http://river.curry.com/radio2River3.js"
}
}
},
"3": {
"text": "opmleditor prefs runs off members.root",
"created": "Thu, 25 Aug 2011 14:59:06 GMT",
"pgfnum": "1234",
"subs": {
"0": {
"text": "There is a username and password in user.opmleditor. This is not good, because we now have an admin user in members.root.",
"created": "Thu, 25 Aug 2011 14:59:15 GMT",
"pgfnum": "1235"
},
"1": {
"text": "So soon after today's big release, I need to unify them. Make the opmleditor prefs run off admin in members.root.",
"created": "Thu, 25 Aug 2011 14:59:36 GMT",
"pgfnum": "1236"
}
}
},
"4": {
"text": "River2 -- Version 0.984.",
"created": "Thu, 25 Aug 2011 12:30:23 GMT",
"pgfnum": "1228",
"type": "blogpost",
"subs": {
"0": {
"text": "Parts are out.",
"created": "Thu, 25 Aug 2011 15:29:02 GMT",
"pgfnum": "1244"
},
"1": {
"text": "This release has an (almost) completely CSS-based user interface. And the river is ready for skinning. And we got some skins on the way. Everything's going pretty well right now. Knock wood.",
"created": "Thu, 25 Aug 2011 15:27:02 GMT",
"pgfnum": "1241"
},
"2": {
"text": "Today's work was mopping up, fixing loose-ends, testing. No breakage! :-)",
"created": "Thu, 25 Aug 2011 12:30:28 GMT",
"pgfnum": "1229"
},
"3": {
"text": "The requirement is that an installation running beaut.root not be broken by these changes. That's what I'm going to watch for. Luckily I have such an installation myself that's mission critical.",
"created": "Thu, 25 Aug 2011 15:27:58 GMT",
"pgfnum": "1242"
},
"4": {
"text": "Here are the things addressed today.",
"created": "Thu, 25 Aug 2011 15:28:36 GMT",
"pgfnum": "1243",
"subs": {
"0": {
"text": "prefs & log only for main user.",
"created": "Thu, 25 Aug 2011 14:07:57 GMT",
"pgfnum": "1231"
},
"1": {
"text": "There was a problem with opmleditor prefs, but it was a caching problem. Quit and restart cleared the problem. We were getting links into River2's prefs from the opmleditor prefs page.",
"created": "Thu, 25 Aug 2011 14:58:12 GMT",
"pgfnum": "1233"
},
"2": {
"text": "Worked on messages on the Subs page.",
"created": "Thu, 25 Aug 2011 13:46:12 GMT",
"pgfnum": "1228"
},
"3": {
"text": "Sign-in page gets proper formatting.",
"created": "Thu, 25 Aug 2011 12:30:34 GMT",
"pgfnum": "1230"
},
"4": {
"text": "Prefs page looks decent now.",
"created": "Thu, 25 Aug 2011 12:30:59 GMT",
"pgfnum": "1231"
},
"5": {
"text": "Static rendering works.",
"created": "Thu, 25 Aug 2011 15:26:34 GMT",
"pgfnum": "1240"
}
}
},
"5": {
"text": "Parts",
"created": "Thu, 25 Aug 2011 15:19:03 GMT",
"pgfnum": "1237",
"subs": {
"0": {
"text": "log2.view"
},
"1": {
"text": "opmlEditor.data.outlines.signInTemplate"
},
"2": {
"text": "radio.prefs.browser"
},
"3": {
"text": "river2Suite.data.html.beautifulRiverTemplate"
},
"4": {
"text": "river2Suite.data.html.credits"
},
"5": {
"text": "river2Suite.data.html.linkToFeedContents"
},
"6": {
"text": "river2Suite.data.html.riverBody"
},
"7": {
"text": "river2Suite.data.prefsOutline"
},
"8": {
"text": "river2Suite.doScanThread"
},
"9": {
"text": "river2Suite.firewall"
},
"10": {
"text": "river2Suite.linkToFeedContents"
},
"11": {
"text": "river2Suite.static.afterScan"
},
"12": {
"text": "river2Suite.viewBeautifulRiver"
},
"13": {
"text": "river2Suite.viewDynamicJson"
},
"14": {
"text": "river2Suite.viewJsonNews3"
},
"15": {
"text": "river2Suite.viewMenu"
},
"16": {
"text": "river2Suite.viewNews"
},
"17": {
"text": "river2Suite.viewScan"
},
"18": {
"text": "river2Suite.viewSubs"
},
"19": {
"text": "river2Website.[\"#filters\"].firstFilter"
},
"20": {
"text": "river2Website.[\"#template\"]"
},
"21": {
"text": "river2Website.feed"
},
"22": {
"text": "river2Website.feeds"
},
"23": {
"text": "river2Website.index"
},
"24": {
"text": "river2Website.log"
},
"25": {
"text": "river2Website.photos"
},
"26": {
"text": "river2Website.podcasts"
},
"27": {
"text": "river2Website.prefs"
},
"28": {
"text": "river2Website.riverFeedJs"
},
"29": {
"text": "river2Website.riverMainJs"
},
"30": {
"text": "river2Website.riverPhotosJs"
},
"31": {
"text": "river2Website.riverPodcastsJs"
},
"32": {
"text": "river2Website.subscriptions"
}
}
}
}
}
}
},
"5": {
"text": "8/24/11 by DW",
"created": "Wed, 24 Aug 2011 12:50:37 GMT",
"pgfnum": "1214",
"subs": {
"0": {
"text": "Day 2 of the River2 facelift",
"created": "Wed, 24 Aug 2011 12:50:38 GMT",
"pgfnum": "1215",
"subs": {
"0": {
"text": "Pages to look at first: Feeds, Prefs, Log.",
"created": "Wed, 24 Aug 2011 12:50:52 GMT",
"pgfnum": "1216"
},
"1": {
"text": "Prefs",
"created": "Wed, 24 Aug 2011 13:14:54 GMT",
"pgfnum": "1217",
"subs": {
"0": {
"text": "Instead of linking into the opmleditor prefs system, create a page within the River2 site.",
"created": "Wed, 24 Aug 2011 13:14:57 GMT",
"pgfnum": "1218"
},
"1": {
"text": "Revise the text on the Prefs page, taking out things that either are not being maintained, or are unnecessarily confusing.",
"created": "Wed, 24 Aug 2011 13:15:53 GMT",
"pgfnum": "1219"
},
"2": {
"text": "The big question is this:",
"created": "Wed, 24 Aug 2011 13:16:25 GMT",
"pgfnum": "1220",
"subs": {
"0": {
"text": "More than one page or one page. If it's just one page, then the prefs system has to be modified (probably not too hard).",
"created": "Wed, 24 Aug 2011 14:35:30 GMT",
"pgfnum": "1222"
},
"1": {
"text": "If it's more than one page, there is prior art for that -- worldoutline.root. But that means you can't access the prefs from the OPML Editor prefs system.",
"created": "Wed, 24 Aug 2011 14:36:00 GMT",
"pgfnum": "1223"
}
}
}
}
},
"2": {
"text": "Must pretty-up the command center at the top of the screen. It can look a lot better.",
"created": "Wed, 24 Aug 2011 14:34:49 GMT",
"pgfnum": "1221"
}
}
}
}
},
"6": {
"text": "8/23/11 by DW",
"created": "Tue, 23 Aug 2011 14:35:46 GMT",
"pgfnum": "1194",
"subs": {
"0": {
"text": "Slogans become feature of opmlEditor",
"created": "Tue, 23 Aug 2011 15:56:10 GMT",
"pgfnum": "1204",
"type": "blogpost",
"subs": {
"0": {
"text": "They are part of Radio2. But we need them elsewhere.",
"created": "Tue, 23 Aug 2011 15:56:17 GMT",
"pgfnum": "1205"
},
"1": {
"text": "So they get promoted to system.verbs.builtins.opmleditor.",
"created": "Tue, 23 Aug 2011 23:07:59 GMT",
"pgfnum": "1207"
},
"2": {
"text": "Parts: opmlEditor.data.slogans, opmlEditor.viewSlogan.",
"created": "Tue, 23 Aug 2011 23:07:06 GMT",
"pgfnum": "1206"
}
}
},
"1": {
"text": "user.opmleditor.server.externalDomainName",
"created": "Tue, 23 Aug 2011 15:12:21 GMT",
"pgfnum": "1201",
"type": "blogpost",
"subs": {
"0": {
"text": "A new global, for all apps running on this machine. This is how you should refer to it, in URLs you generate, that might be for external consumption.",
"created": "Tue, 23 Aug 2011 15:12:33 GMT",
"pgfnum": "1202"
},
"1": {
"text": "Need to implement a prefs page for this.",
"created": "Tue, 23 Aug 2011 15:13:47 GMT",
"pgfnum": "1203"
},
"2": {
"text": "Parts: opmlEditor.init.",
"created": "Tue, 23 Aug 2011 23:12:14 GMT",
"pgfnum": "1208"
}
}
},
"2": {
"text": "River2",
"created": "Tue, 23 Aug 2011 14:35:47 GMT",
"pgfnum": "1195",
"type": "blogpost",
"subs": {
"0": {
"text": "Replacing the old UI with the beautiful one.",
"created": "Tue, 23 Aug 2011 14:35:49 GMT",
"pgfnum": "1196"
},
"1": {
"text": "Made lots of progress today. Much of the new user interface is working.",
"created": "Tue, 23 Aug 2011 23:14:37 GMT",
"pgfnum": "1209"
},
"2": {
"text": "Still have to work on the Prefs, Feeds, Log pages. Sign-on and sign-out.",
"created": "Tue, 23 Aug 2011 23:14:56 GMT",
"pgfnum": "1210"
},
"3": {
"text": "More work tomorrow.",
"created": "Tue, 23 Aug 2011 23:15:16 GMT",
"pgfnum": "1211"
},
"4": {
"text": "Parts",
"created": "Tue, 23 Aug 2011 23:33:14 GMT",
"pgfnum": "1212",
"subs": {
"0": {
"text": "river2Suite.data.html.beautifulRiverTemplate"
},
"1": {
"text": "river2Suite.data.html.credits"
},
"2": {
"text": "river2Suite.data.html.riverBody"
},
"3": {
"text": "river2Suite.doScanThread"
},
"4": {
"text": "river2Suite.static.afterScan"
},
"5": {
"text": "river2Suite.viewBeautifulRiver"
},
"6": {
"text": "river2Suite.viewDynamicJson"
},
"7": {
"text": "river2Suite.viewJsonNews3"
},
"8": {
"text": "river2Suite.viewMenu"
},
"9": {
"text": "river2Suite.viewNews"
},
"10": {
"text": "river2Suite.viewSubs"
},
"11": {
"text": "river2Website.[\"#filters\"].firstFilter"
},
"12": {
"text": "river2Website.[\"#template\"]"
},
"13": {
"text": "river2Website.[\"river.js\"]"
},
"14": {
"text": "river2Website.feed"
},
"15": {
"text": "river2Website.index"
},
"16": {
"text": "river2Website.photos"
},
"17": {
"text": "river2Website.podcasts"
},
"18": {
"text": "river2Website.riverFeedJs"
},
"19": {
"text": "river2Website.riverJs"
},
"20": {
"text": "river2Website.riverMainJs"
},
"21": {
"text": "river2Website.riverPhotosJs"
},
"22": {
"text": "river2Website.riverPodcastsJs"
}
}
}
}
}
}
},
"7": {
"text": "8/22/11 by DW",
"created": "Mon, 22 Aug 2011 11:40:38 GMT",
"pgfnum": "1152",
"subs": {
"0": {
"text": "How River2 installs",
"created": "Mon, 22 Aug 2011 15:43:57 GMT",
"pgfnum": "1179",
"subs": {
"0": {
"text": "There's been a fair amount of drift as River2 has been incorporated into Blork. Now when I do a fresh install of River2 in a fresh install of the OPML Editor, I get something that's fairly useless. True, if you know how to set the options you can have a very fine aggregator in just a few steps. But why not make it so that it's nice if you don't do anything. ",
"created": "Mon, 22 Aug 2011 15:44:00 GMT",
"pgfnum": "1180"
},
"1": {
"text": "Here's my test server: http://hello.scripting.com/river2/",
"created": "Mon, 22 Aug 2011 15:45:18 GMT",
"pgfnum": "1181"
},
"2": {
"text": "It starts up correctly with an admin user, and a made-up password.",
"created": "Mon, 22 Aug 2011 15:47:23 GMT",
"pgfnum": "1182"
},
"3": {
"text": "But I can access it from the local system? Yes.",
"created": "Mon, 22 Aug 2011 15:49:04 GMT",
"pgfnum": "1185"
},
"4": {
"text": "Here are some problems: There are no feeds on the Feeds page of the default install. There is no news on the Home page. (Same problem really.)",
"created": "Mon, 22 Aug 2011 15:47:35 GMT",
"pgfnum": "1183"
},
"5": {
"text": "However, the onInstall script sets all this stuff up correctly, but it must not have finished running? When I ran it again all was good.",
"created": "Mon, 22 Aug 2011 19:40:43 GMT",
"pgfnum": "1189",
"subs": {
"0": {
"text": "And, in fact, when I did a fresh install, this stuff was working.",
"created": "Mon, 22 Aug 2011 19:45:14 GMT",
"pgfnum": "1190"
}
}
},
"6": {
"text": "Todo",
"created": "Mon, 22 Aug 2011 19:45:35 GMT",
"pgfnum": "1191",
"subs": {
"0": {
"text": "There is no link to the Prefs page on the default install. Admin user should always have a link to the Prefs page.",
"created": "Mon, 22 Aug 2011 19:23:21 GMT",
"pgfnum": "1188"
},
"1": {
"text": "I want to get rid of the old table-based view of the River. Let's swtich completely to Beautiful. Do it tonight.",
"created": "Mon, 22 Aug 2011 19:45:36 GMT",
"pgfnum": "1192"
}
}
}
}
},
"1": {
"text": "SLIde objects, day 2",
"created": "Mon, 22 Aug 2011 11:40:38 GMT",
"pgfnum": "1153",
"subs": {
"0": {
"text": "This is what a response looks like now:",
"created": "Mon, 22 Aug 2011 11:40:47 GMT",
"pgfnum": "1154"
},
"1": {
"text": "",
"created": "Mon, 22 Aug 2011 11:41:08 GMT",
"pgfnum": "1155"
},
"2": {
"text": "If you're posting, you must now provide an additional param, dataSerialnum, and it must match the value on the server, or the POST is rejected.",
"created": "Mon, 22 Aug 2011 11:45:09 GMT",
"pgfnum": "1156"
},
"3": {
"text": "With that I have the implementation complete.",
"created": "Mon, 22 Aug 2011 12:32:55 GMT",
"pgfnum": "1157"
},
"4": {
"text": "Updated the spec.",
"created": "Mon, 22 Aug 2011 13:02:53 GMT",
"pgfnum": "1176"
},
"5": {
"text": "Now to release the parts:",
"created": "Mon, 22 Aug 2011 13:03:06 GMT",
"pgfnum": "1177",
"subs": {
"0": {
"text": "idApiSuite.init"
},
"1": {
"text": "idApiSuite.initUser"
},
"2": {
"text": "idApiSuite.responder.respond"
},
"3": {
"text": "system.verbs.apps.slide"
},
"4": {
"text": "opmlEditor.member.validateRemote"
}
}
}
}
}
}
},
"8": {
"text": "8/21/11 by DW",
"created": "Sun, 21 Aug 2011 11:50:40 GMT",
"pgfnum": "1101",
"subs": {
"0": {
"text": "Start on SLIde objects",
"created": "Mon, 22 Aug 2011 01:04:20 GMT",
"pgfnum": "1142",
"subs": {
"0": {
"text": "A few days ago I wrote a proposal for adding a very simple data model to SLIde.",
"created": "Mon, 22 Aug 2011 01:04:33 GMT",
"pgfnum": "1143"
},
"1": {
"text": "Let's see what's involved in implementing it.",
"created": "Mon, 22 Aug 2011 01:04:51 GMT",
"pgfnum": "1144"
},
"2": {
"text": "Work in idApiSuite.responder.respond.",
"created": "Mon, 22 Aug 2011 01:10:19 GMT",
"pgfnum": "1145",
"subs": {
"0": {
"text": "Check the method, only accept GET and POST requests, returning an error for all other methods.",
"created": "Mon, 22 Aug 2011 01:10:41 GMT",
"pgfnum": "1146"
}
}
},
"3": {
"text": "Factoring the code from opmleditor.member.validateRemote into a new glue table at system.verbs.apps.slide. We're going to need a way to put as well as get. And it's not all going to fit into the existing functionality provided by the opmlEditor level.",
"created": "Mon, 22 Aug 2011 01:28:14 GMT",
"pgfnum": "1147"
},
"4": {
"text": "Parts",
"created": "Mon, 22 Aug 2011 01:29:40 GMT",
"pgfnum": "1148",
"subs": {
"0": {
"text": "system.verbs.apps.slide",
"created": "Mon, 22 Aug 2011 01:29:42 GMT",
"pgfnum": "1149"
},
"1": {
"text": "opmleditor.member.validateRemote",
"created": "Mon, 22 Aug 2011 01:29:52 GMT",
"pgfnum": "1150"
},
"2": {
"text": "idApiSuite.responder.respond",
"created": "Mon, 22 Aug 2011 01:29:58 GMT",
"pgfnum": "1151"
}
}
}
}
},
"1": {
"text": "howto2.root template",
"created": "Sun, 21 Aug 2011 22:52:11 GMT",
"pgfnum": "1138",
"type": "blogpost",
"subs": {
"0": {
"text": "Converted the template to CSS. No tables.",
"created": "Sun, 21 Aug 2011 22:52:20 GMT",
"pgfnum": "1139"
},
"1": {
"text": "Added support for headerText, headerFont and headerFontSize.",
"created": "Sun, 21 Aug 2011 22:52:37 GMT",
"pgfnum": "1140"
},
"2": {
"text": "Example: SLIde howto.",
"created": "Sun, 21 Aug 2011 23:04:50 GMT",
"pgfnum": "1141"
}
}
},
"2": {
"text": "Wrapping headerText deemed ugly!",
"created": "Sun, 21 Aug 2011 20:15:25 GMT",
"pgfnum": "1132",
"type": "blogpost",
"subs": {
"0": {
"text": "Oy if your text is too long or the window too narrow, or viewed on Safari (and who knows where else) you get a mishmash of wrapping headerText that looks realllllly bad.",
"created": "Sun, 21 Aug 2011 20:15:51 GMT",
"pgfnum": "1133"
},
"1": {
"text": "To fix, I added white-space: nowrap property to the divGraphic .h1 style, and it stopped wrapping.",
"created": "Sun, 21 Aug 2011 20:16:52 GMT",
"pgfnum": "1134"
},
"2": {
"text": "Parts: worldOutlineSuite.data.virgin.template.",
"created": "Sun, 21 Aug 2011 20:38:50 GMT",
"pgfnum": "1136"
}
}
},
"3": {
"text": "Web fonts in header on scripting.com",
"created": "Sun, 21 Aug 2011 15:54:24 GMT",
"pgfnum": "1122",
"type": "blogpost",
"subs": {
"0": {
"text": "I've learned enough about Google Web Fonts to see how I want to add a feature there permanently, not on an experimental basis.",
"created": "Sun, 21 Aug 2011 15:54:32 GMT",
"pgfnum": "1123"
},
"1": {
"text": "The header graphic on scripting.com has been in Impact font (I think 96 point) for many years. I've switched to Fontdiner Swanky using GWFs.",
"created": "Sun, 21 Aug 2011 15:54:57 GMT",
"pgfnum": "1124"
},
"2": {
"text": "Here's the old graphic for archive sake.",
"created": "Sun, 21 Aug 2011 15:55:41 GMT",
"pgfnum": "1125"
},
"3": {
"text": "Here's a screen shot of the new header.",
"created": "Sun, 21 Aug 2011 15:56:15 GMT",
"pgfnum": "1127"
}
}
},
"4": {
"text": "Miscellaneous fixes in worldoutline",
"created": "Sun, 21 Aug 2011 15:07:59 GMT",
"pgfnum": "1115",
"type": "blogpost",
"subs": {
"0": {
"text": "A bunch of little changes to fix bugs and fill out features.",
"created": "Sun, 21 Aug 2011 15:08:09 GMT",
"pgfnum": "1116"
},
"1": {
"text": "1. The googleFontsLink macro needed to be initialized for every page-rendering op, there were places where it wasn't being initialized. Moved the init from main to setDefaultAtts.",
"created": "Sun, 21 Aug 2011 15:08:20 GMT",
"pgfnum": "1117"
},
"2": {
"text": "2. Need a way to set the headerText globally. Add new elements to the headerGraphic prefs page. Screen shot.",
"created": "Sun, 21 Aug 2011 15:10:22 GMT",
"pgfnum": "1118",
"subs": {
"0": {
"text": "This is what it looks like on my home page. Nice! :-)",
"created": "Sun, 21 Aug 2011 15:37:03 GMT",
"pgfnum": "1120"
}
}
},
"3": {
"text": "3. We were hotting-up urls in the Prefs pages. Made a change to turn this off, it was screwing with the display of text inside text entry boxes.",
"created": "Sun, 21 Aug 2011 15:10:54 GMT",
"pgfnum": "1119"
},
"4": {
"text": "4. Got an error on the Prefs page that adrobject was not defined. It was talking about pta^.adrobject. It wasn't defined. I defined it.",
"created": "Sun, 21 Aug 2011 15:38:23 GMT",
"pgfnum": "1121"
},
"5": {
"text": "5. Changed version to 0.39.",
"created": "Sun, 21 Aug 2011 16:21:12 GMT",
"pgfnum": "1131"
},
"6": {
"text": "Parts",
"created": "Sun, 21 Aug 2011 16:18:15 GMT",
"pgfnum": "1129",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser"
},
"1": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"2": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"3": {
"text": "worldOutlineSuite.main"
},
"4": {
"text": "worldOutlineWebsite.prefs"
},
"5": {
"text": "worldOutlineInfo"
}
}
}
}
},
"5": {
"text": "Finish headerFont",
"created": "Sun, 21 Aug 2011 11:50:41 GMT",
"headerfont": "Alice",
"headerfontsize": "64px",
"headertext": "Work Notes",
"pgfnum": "1102",
"type": "blogpost",
"subs": {
"0": {
"text": "Following up on yesterday's work to use Google Web Fonts for headers, an alternative using GIFs or JPEGs.",
"created": "Sun, 21 Aug 2011 11:51:22 GMT",
"pgfnum": "1104"
},
"1": {
"text": "There's a new command in the World Outline sub-menu of the Outliner menu, called Set headerText. When you choose the command a dialog asks what you would like the header text to be. It adds the attributes needed, using the default font and a size of 64px. You can change these values by writing your own script, possibly adding it to your Custom menu.",
"created": "Sun, 21 Aug 2011 12:11:14 GMT",
"pgfnum": "1105"
},
"2": {
"text": "If you want to use this feature in an existing worldoutline installation, you must add two bits to your template.",
"created": "Sun, 21 Aug 2011 12:12:38 GMT",
"pgfnum": "1106"
},
"3": {
"text": "1. In the section, add a <%googleFontsLink%> macro.",
"created": "Sun, 21 Aug 2011 12:13:03 GMT",
"pgfnum": "1107"
},
"4": {
"text": "2. There's a new style, .divGraphic h1. Copy this into your template, just after .divGraphic img.",
"created": "Sun, 21 Aug 2011 12:13:15 GMT",
"pgfnum": "1108"
},
"5": {
"text": "You can find examples of both in the default template, at worldOutlineSuite.data.virgin.template.",
"created": "Sun, 21 Aug 2011 12:14:34 GMT",
"pgfnum": "1109"
},
"6": {
"text": "I'm using this feature in the worknotes section, as you can see at the top of the page.",
"created": "Sun, 21 Aug 2011 12:14:52 GMT",
"pgfnum": "1110"
},
"7": {
"text": "Parts",
"created": "Sun, 21 Aug 2011 12:15:51 GMT",
"pgfnum": "1112",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser"
},
"1": {
"text": "worldOutlineSuite.data.virgin.template"
},
"2": {
"text": "worldOutlineSuite.main"
},
"3": {
"text": "opmlEditor.init"
},
"4": {
"text": "opmlEditor.menuCommands.outlinerSetHeaderText"
},
"5": {
"text": "system.menus.menubar",
"created": "Sun, 21 Aug 2011 12:23:06 GMT",
"pgfnum": "1114"
}
}
}
}
}
}
},
"9": {
"text": "8/20/11 by DW",
"created": "Sat, 20 Aug 2011 15:55:34 GMT",
"pgfnum": "1077",
"subs": {
"0": {
"text": "headerFont in worldoutline",
"created": "Sat, 20 Aug 2011 18:27:47 GMT",
"headerfont": "Lobster",
"headerfontsize": "64px",
"headertext": "headerText is Coool!",
"pgfnum": "1092",
"subs": {
"0": {
"text": "New attributes, if, instead of a headerGraphic, you set the (new) headerText attribute.",
"created": "Sat, 20 Aug 2011 18:27:50 GMT",
"pgfnum": "1093"
},
"1": {
"text": "1. headerFont -- which of the Google Web Fonts do we use for the header text.",
"created": "Sat, 20 Aug 2011 18:29:34 GMT",
"pgfnum": "1094"
},
"2": {
"text": "2. headerFontSize -- what's the font size, in pixels.",
"created": "Sat, 20 Aug 2011 18:29:55 GMT",
"pgfnum": "1095"
},
"3": {
"text": "There's a new style in the default template, .divGraphic h1. If you want to use this feature on an existing website, you must copy this into your template, just after .divGraphic img.",
"created": "Sat, 20 Aug 2011 19:00:04 GMT",
"pgfnum": "1097"
},
"4": {
"text": "This page has a headerText attribute of <%headerText%> and it displays it in <%headerFont%> <%headerFontSize%>.",
"created": "Sat, 20 Aug 2011 19:01:15 GMT",
"pgfnum": "1098"
},
"5": {
"text": "A new macro <%googleFontsLink%> -- generates a <link> element that includes the font you're using for the header. This macro must be placed in the <head> section of your template.",
"created": "Sun, 21 Aug 2011 11:50:45 GMT",
"pgfnum": "1103"
},
"6": {
"text": "What changed: worldOutlineSuite.initUser, worldOutlineSuite.main, worldOutlineSuite.data.virgin.template.",
"created": "Sat, 20 Aug 2011 19:42:56 GMT",
"pgfnum": "1099"
}
}
},
"1": {
"text": "Pumped up the worldoutline startup doc",
"created": "Sat, 20 Aug 2011 15:55:35 GMT",
"pgfnum": "1078",
"type": "blogpost",
"subs": {
"0": {
"text": "I want the first-time user to have some ideas on what it's for and what you can do with it.",
"created": "Sat, 20 Aug 2011 15:55:58 GMT",
"pgfnum": "1079"
},
"1": {
"text": "http://userdocs.worldoutline.org/",
"created": "Sat, 20 Aug 2011 16:12:20 GMT",
"pgfnum": "1090"
}
}
}
}
},
"10": {
"text": "8/19/11 by DW",
"created": "Fri, 19 Aug 2011 19:26:42 GMT",
"pgfnum": "1062",
"subs": {
"0": {
"text": "Popup window faster",
"created": "Fri, 19 Aug 2011 20:47:34 GMT",
"pgfnum": "1072",
"type": "blogpost",
"subs": {
"0": {
"text": "Publishing via the popup window is now faster. It doesn't wait for the feed to be published before returning. Since we don't display the feed, there's no reason to wait.",
"created": "Fri, 19 Aug 2011 20:47:40 GMT",
"pgfnum": "1073"
},
"1": {
"text": "Parts: beautWebsite.popupPost.index, radio2Suite.main."
}
}
},
"1": {
"text": "Clearing all fields of popup",
"created": "Fri, 19 Aug 2011 20:44:14 GMT",
"pgfnum": "1069",
"type": "blogpost",
"subs": {
"0": {
"text": "We have a \"new\" button in the dialog on the main site, I just had to turn it on in this one, and voila -- it works!",
"created": "Fri, 19 Aug 2011 20:44:22 GMT",
"pgfnum": "1070"
},
"1": {
"text": "I love it when features are this easy.",
"created": "Fri, 19 Aug 2011 21:04:28 GMT",
"pgfnum": "1074"
},
"2": {
"text": "I tweaked up the button so it looks nice on a gray background.",
"created": "Fri, 19 Aug 2011 21:04:33 GMT",
"pgfnum": "1075"
},
"3": {
"text": "Parts: radio2Suite.data.html.newIcon, radio2Suite.data.tweetBoxPopup.",
"created": "Fri, 19 Aug 2011 21:04:53 GMT",
"pgfnum": "1076"
}
}
},
"2": {
"text": "Blork counter more useful",
"created": "Fri, 19 Aug 2011 19:26:43 GMT",
"pgfnum": "1063",
"type": "blogpost",
"subs": {
"0": {
"text": "I changed the counter in the Blork editing box so that it reflects the size of the description plus the size of the link. It used to reflect just the size of the description.",
"created": "Fri, 19 Aug 2011 19:26:55 GMT",
"pgfnum": "1064"
},
"1": {
"text": "
",
"created": "Fri, 19 Aug 2011 19:28:01 GMT",
"pgfnum": "1067"
},
"2": {
"text": "This change is reflected in both versions of the edit box, in the main app window and in the new bookmarklet's popup window.",
"created": "Fri, 19 Aug 2011 19:27:35 GMT",
"pgfnum": "1066"
},
"3": {
"text": "Parts: radio2Suite.data.tweetBox, radio2Suite.data.tweetBoxPopup, radio2Suite.main.",
"created": "Fri, 19 Aug 2011 19:51:29 GMT",
"pgfnum": "1068"
}
}
}
}
},
"11": {
"text": "8/18/11 by DW",
"created": "Thu, 18 Aug 2011 13:09:04 GMT",
"pgfnum": "1030",
"subs": {
"0": {
"text": "Fixed membership glitch",
"created": "Thu, 18 Aug 2011 13:09:05 GMT",
"pgfnum": "1031",
"type": "blogpost",
"subs": {
"0": {
"text": "I was trying to use Google Chrome to post to my Blork linkblog, and got an error message saying that there was no table named \"dick\".",
"created": "Thu, 18 Aug 2011 13:12:36 GMT",
"pgfnum": "1032"
},
"1": {
"text": "Last time I used Chrome, I had been testing a newly created worldoutline account for a user named dick (a real person, Dick Applebaum). The same account should have worked for Radio2, but the user had never been set up for that app.",
"created": "Thu, 18 Aug 2011 13:13:18 GMT",
"pgfnum": "1033"
},
"2": {
"text": "So I added a check in beautWebsite.[\"#filters\"].firstFilter, the site of the error, and if it's not set up, I do the provisioning there. It's really very quick.",
"created": "Thu, 18 Aug 2011 13:16:35 GMT",
"pgfnum": "1036"
},
"3": {
"text": "This highlights a big loose-end. When I added support for SLIde to my system, I have to separate the initialization of the user's member record from the initialization of their application-specific record.",
"created": "Thu, 18 Aug 2011 13:14:25 GMT",
"pgfnum": "1034"
},
"4": {
"text": "This will come up right away, as we add the ability to store a hunk of JSON data with a SLIde user.",
"created": "Thu, 18 Aug 2011 13:17:08 GMT",
"pgfnum": "1037"
},
"5": {
"text": "Parts: beautWebsite.[\"#filters\"].firstFilter, radio2Suite.newUser.",
"created": "Thu, 18 Aug 2011 13:15:33 GMT",
"pgfnum": "1035"
}
}
}
}
},
"12": {
"text": "8/17/11 by DW",
"created": "Wed, 17 Aug 2011 12:21:35 GMT",
"pgfnum": "985",
"subs": {
"0": {
"text": "New Blork bookmarklet",
"created": "Wed, 17 Aug 2011 15:51:22 GMT",
"pgfnum": "998",
"type": "blogpost",
"subs": {
"0": {
"text": "Here's the howto that explains how to install and use the bookmarklet.",
"created": "Wed, 17 Aug 2011 21:55:33 GMT",
"pgfnum": "1026"
},
"1": {
"text": "Important: You do not have to use the new bookmarklet, the old one continues to work.",
"created": "Wed, 17 Aug 2011 15:54:14 GMT",
"pgfnum": "1005"
},
"2": {
"text": "Parts: beautWebsite.popupPost, radio2Suite.data.tweetBoxPopup, radio2Suite.main, radio2Suite.newPost, radio2Suite.data.html.bookmarkletCode.",
"created": "Wed, 17 Aug 2011 15:51:38 GMT",
"pgfnum": "1000"
}
}
},
"1": {
"text": "More work on Blork popup",
"created": "Wed, 17 Aug 2011 13:09:29 GMT",
"pgfnum": "993",
"subs": {
"0": {
"text": "The word \"Blork\" links back to main website, where you can review and edit previous posts, configure your feeds, etc.",
"created": "Wed, 17 Aug 2011 13:09:34 GMT",
"pgfnum": "994"
},
"1": {
"text": "I'm getting double posts in the feed for some reason. There's something different about the way the dialog works that causes double posts. They're not happening using the original dialog. So I addressed the issue by adding code at the publishing end, that prevents double-posts. It's generally more useful there anyway.",
"created": "Wed, 17 Aug 2011 13:10:40 GMT",
"pgfnum": "995",
"subs": {
"0": {
"text": "There will be problems if people double-post via the API, but I see that as less of a problem, and will be easily addressed if it becomes one.",
"created": "Wed, 17 Aug 2011 15:42:55 GMT",
"pgfnum": "996"
}
}
}
}
},
"2": {
"text": "New feature in xmlViewer app",
"created": "Wed, 17 Aug 2011 12:21:36 GMT",
"pgfnum": "986",
"type": "blogpost",
"subs": {
"0": {
"text": "This came up as a question on Stack Overflow.",
"created": "Wed, 17 Aug 2011 12:24:27 GMT",
"pgfnum": "989"
},
"1": {
"text": "I have a little app that's an adjunct to Blork, that lets people view their feed as XML even if their browser thinks that's too \"ugly\" for them. It's important that people be able to see that their feed is working, and see the relationship between the settings in the app, and the result in the feeds.",
"created": "Wed, 17 Aug 2011 12:21:51 GMT",
"pgfnum": "987"
},
"2": {
"text": "My users are pretty smart, and if you show them how something works, they know either to hit the Back button if they're confused, but more likely they'll take a look and try to figure it out. At least I want to make it possible.",
"created": "Wed, 17 Aug 2011 12:26:01 GMT",
"pgfnum": "992"
},
"3": {
"text": "Anyway, the feature is this. If you add a compile=1 parameter to the call, xmlViewer will compile the XML text and then decompile it before displaying. This guarantees that even if the generator of the XML strips out all carriage returns and linefeeds (why do they do this?) you'll still be able to view the feed.",
"created": "Wed, 17 Aug 2011 12:23:14 GMT",
"pgfnum": "988"
},
"4": {
"text": "Here's an example link with the new parameter.",
"created": "Wed, 17 Aug 2011 12:24:35 GMT",
"pgfnum": "990"
}
}
}
}
},
"13": {
"text": "8/16/11 by DW",
"created": "Tue, 16 Aug 2011 14:41:22 GMT",
"pgfnum": "972",
"subs": {
"0": {
"text": "Blork's popup post window",
"created": "Tue, 16 Aug 2011 14:41:23 GMT",
"pgfnum": "973",
"type": "blogpost",
"subs": {
"0": {
"text": "After a bit of trial and error, always waste a lot of time fumbling with CSS, I created a different template for the popup window version of the Blork dialog.",
"created": "Tue, 16 Aug 2011 14:41:31 GMT",
"pgfnum": "974"
},
"1": {
"text": "Using Google Web Fonts to make it interesting. :-)",
"created": "Tue, 16 Aug 2011 21:20:07 GMT",
"pgfnum": "982"
},
"2": {
"text": "In Firefox, if you have dom.disable_window_open_feature.location in about:config set true, all popup windows will have location bars. If you disable it my popup windows won't have them (desirable).",
"created": "Tue, 16 Aug 2011 23:18:01 GMT",
"pgfnum": "984"
}
}
}
}
},
"14": {
"text": "8/15/11 by DW",
"created": "Mon, 15 Aug 2011 22:02:41 GMT",
"pgfnum": "963",
"subs": {
"0": {
"text": "Close popup Blork window on Submit",
"created": "Mon, 15 Aug 2011 22:02:46 GMT",
"pgfnum": "964",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm working on a popup window that's launched from the Blork bookmarklet.",
"created": "Mon, 15 Aug 2011 22:02:59 GMT",
"pgfnum": "965"
},
"1": {
"text": "I just learned how to get the window to close after the user presses Submit.",
"created": "Mon, 15 Aug 2011 22:05:02 GMT",
"pgfnum": "966"
},
"2": {
"text": "Return a script in the body of the html that closes the window:",
"created": "Mon, 15 Aug 2011 22:05:32 GMT",
"pgfnum": "967",
"subs": {
"0": {
"text": "<script>window.close();</script>.",
"created": "Mon, 15 Aug 2011 22:08:04 GMT",
"pgfnum": "970"
},
"1": {
"text": "Works like a charm.",
"created": "Mon, 15 Aug 2011 22:05:36 GMT",
"pgfnum": "968"
}
}
},
"3": {
"text": "One part changes, radio2suite.main.",
"created": "Mon, 15 Aug 2011 22:05:36 GMT",
"pgfnum": "969",
"subs": {
"0": {
"text": "It sets a new flag, pta^.radio2.flSubmitButton, if the user clicked Submit.",
"created": "Mon, 15 Aug 2011 22:08:34 GMT",
"pgfnum": "971"
}
}
}
}
}
}
},
"15": {
"text": "8/12/11 by DW",
"created": "Fri, 12 Aug 2011 14:10:11 GMT",
"pgfnum": "932",
"subs": {
"0": {
"text": "Problem with the listings site",
"created": "Fri, 12 Aug 2011 22:28:50 GMT",
"pgfnum": "959",
"type": "blogpost",
"subs": {
"0": {
"text": "I noticed that some items weren't getting updated on the listings site. Wasn't sure if this was a problem with all or some. Turns out it was just some.",
"created": "Fri, 12 Aug 2011 22:28:55 GMT",
"pgfnum": "960"
},
"1": {
"text": "If the root that contains the object being updated doesn't exist on the server that's building the listings, it won't update on the listings site.",
"created": "Fri, 12 Aug 2011 22:29:31 GMT",
"pgfnum": "961"
},
"2": {
"text": "I think there's a better approach than just beings sure all the roots are open on the server. But I'm not sure what it is.",
"created": "Fri, 12 Aug 2011 22:29:59 GMT",
"pgfnum": "962"
}
}
},
"1": {
"text": "Poets14 is done",
"created": "Fri, 12 Aug 2011 22:16:52 GMT",
"pgfnum": "953",
"type": "blogpost",
"subs": {
"0": {
"text": "I packed up the AMI and created an instance: Mitt Romney.",
"created": "Fri, 12 Aug 2011 22:16:59 GMT",
"pgfnum": "954"
},
"1": {
"text": "Here's the static river page on Mitt Romney.",
"created": "Fri, 12 Aug 2011 22:18:58 GMT",
"pgfnum": "956"
},
"2": {
"text": "There was one problem in ec2supportsuite.shipping.setdefaults. We were trying to zero out config.river2.users, but that table doesn't exist if it's not a blork-build.",
"created": "Fri, 12 Aug 2011 22:17:23 GMT",
"pgfnum": "955"
},
"3": {
"text": "Easily fixed, but the instance will have an error when it boots, which will be corrected as soon as it updates, which happens seconds after booting up.",
"created": "Fri, 12 Aug 2011 22:28:38 GMT",
"pgfnum": "958"
},
"4": {
"text": "Poets15 will not have the problem at all.",
"created": "Fri, 12 Aug 2011 22:19:45 GMT",
"pgfnum": "957"
}
}
},
"2": {
"text": "Testing dlvr.it with my Twitter feed",
"created": "Fri, 12 Aug 2011 19:10:27 GMT",
"pgfnum": "961",
"type": "blogpost",
"subs": {
"0": {
"text": "As an experiment, this is a post coming from my world outline, edited with my outliner, of course, flowing through RSS to dlvr.it, and on to my main Twitter account.",
"created": "Fri, 12 Aug 2011 16:40:58 GMT",
"pgfnum": "959"
}
}
},
"3": {
"text": "Today's updates",
"created": "Fri, 12 Aug 2011 16:22:08 GMT",
"pgfnum": "956",
"subs": {
"0": {
"text": "river2Suite.init"
},
"1": {
"text": "river2Suite.background.everyMinute"
},
"2": {
"text": "river2Suite.doScanNow"
},
"3": {
"text": "river2Suite.doScanThread"
},
"4": {
"text": "river2Suite.static.runBuildThread"
},
"5": {
"text": "river2Suite.viewSubs"
},
"6": {
"text": "river2Website.feeds"
},
"7": {
"text": "river2Website.index"
},
"8": {
"text": "river2Website.log"
},
"9": {
"text": "river2Website.mobile.photos"
},
"10": {
"text": "river2Website.photos"
},
"11": {
"text": "river2Website.podcasts"
},
"12": {
"text": "river2Website.scan"
},
"13": {
"text": "river2Website.subscriptions"
}
}
},
"4": {
"text": "Testing, getting ready for Poets14",
"created": "Fri, 12 Aug 2011 15:30:53 GMT",
"pgfnum": "947",
"type": "blogpost",
"subs": {
"0": {
"text": "To test the latest changes, which involve scanning, which is pretty central to the functioning of a River2 installation, I'm going to install river2.root on Houston, and let it run for a few hours and see if everything still works. If so, then I'll release the parts.",
"created": "Fri, 12 Aug 2011 15:31:05 GMT",
"pgfnum": "949",
"subs": {
"0": {
"text": "I'm getting an error in river2Suite.static.buildOnePage. pagetable.river2.staticFname is not defined. I've seen this before. Now I have to remember what the problem was.",
"created": "Fri, 12 Aug 2011 15:47:36 GMT",
"pgfnum": "951"
},
"1": {
"text": "I added some debugging code, and it's getting the error trying to build the static page for user \"admin.\"",
"created": "Fri, 12 Aug 2011 16:02:11 GMT",
"pgfnum": "953"
},
"2": {
"text": "I believe the problem was that it was trying to build the old-style page, so on that theory I set users.admin.prefs.beautifulRiver.flBeautifulIsIndex to true. I think the error will now go away. Let's see...",
"created": "Fri, 12 Aug 2011 16:02:34 GMT",
"pgfnum": "954"
},
"3": {
"text": "It did. On the chance that this is happening elsewhere, I'm going to do a maintenence flag that flips this automatically for people.",
"created": "Fri, 12 Aug 2011 16:12:42 GMT",
"pgfnum": "955"
}
}
},
"1": {
"text": "Also, since Windows updated overnight, I'm going to launch an instance of Poets12 and let it sit there until it updates and then rebuild the AMI. I always skip version 13 of things. Superstitious I guess. :-)",
"created": "Fri, 12 Aug 2011 15:32:01 GMT",
"pgfnum": "950",
"subs": {
"0": {
"text": "The new instance is called Shark Cage.",
"created": "Fri, 12 Aug 2011 15:53:22 GMT",
"pgfnum": "952"
}
}
}
}
},
"5": {
"text": "Error displaying Feeds page",
"created": "Fri, 12 Aug 2011 14:51:10 GMT",
"pgfnum": "941",
"type": "blogpost",
"subs": {
"0": {
"text": "I've seen this error before, let's fix it.",
"created": "Fri, 12 Aug 2011 14:51:19 GMT",
"pgfnum": "942"
},
"1": {
"text": "Turns out it's possible for us to add a feed that hasn't had its feedinfo set up, so the title doesn't exist, to compare against the empty string. (A check that was added on 8/3.)",
"created": "Fri, 12 Aug 2011 15:05:43 GMT",
"pgfnum": "944"
},
"2": {
"text": "Now it's very careful before even looking at the title and the feeds page displays correctly in this case.",
"created": "Fri, 12 Aug 2011 15:06:18 GMT",
"pgfnum": "945"
},
"3": {
"text": "Part: river2Suite.viewSubs",
"created": "Fri, 12 Aug 2011 15:08:28 GMT",
"pgfnum": "946"
}
}
},
"6": {
"text": "Page titles become constants",
"created": "Fri, 12 Aug 2011 14:47:21 GMT",
"pgfnum": "938",
"type": "blogpost",
"subs": {
"0": {
"text": "For some reason at some point I thought the titles of the pages should be prefs. I can't figure it out now. So I'm undoing this, and making them constants.",
"created": "Fri, 12 Aug 2011 14:47:26 GMT",
"pgfnum": "939"
}
}
},
"7": {
"text": "Avoid re-entrant River2 scan threads",
"created": "Fri, 12 Aug 2011 14:10:12 GMT",
"pgfnum": "933",
"type": "blogpost",
"subs": {
"0": {
"text": "We tiptoe about launching scan threads for fear of having them run concurrently, which would be a bad thing. Wasteful, and possibly creating some conditions where one or both scans have trouble completing. So I'm careful not to launch them too liberally.",
"created": "Fri, 12 Aug 2011 14:10:31 GMT",
"pgfnum": "934"
},
"1": {
"text": "But we know how to keep them from running re-entrant, we do it now with the static build process that runs after a scan. So let's do something similar for the scan itself.",
"created": "Fri, 12 Aug 2011 14:11:40 GMT",
"pgfnum": "935"
},
"2": {
"text": "Parts",
"created": "Fri, 12 Aug 2011 14:34:06 GMT",
"pgfnum": "936",
"subs": {
"0": {
"text": "river2Suite.init"
},
"1": {
"text": "river2Suite.doScanThread"
},
"2": {
"text": "river2Suite.doScanNow"
},
"3": {
"text": "river2Suite.static.runBuildThread"
}
}
}
}
}
}
},
"16": {
"text": "8/11/11 by DW",
"created": "Thu, 11 Aug 2011 16:58:44 GMT",
"pgfnum": "919",
"subs": {
"0": {
"text": "Easing the one-request per second rule",
"created": "Thu, 11 Aug 2011 16:58:44 GMT",
"pgfnum": "920",
"type": "blogpost",
"subs": {
"0": {
"text": "It has been pointed out that not allowing timestamps to be re-used could be a problem if an application legitimately needs to query more than one account in a second.",
"created": "Thu, 11 Aug 2011 16:59:12 GMT",
"pgfnum": "921"
},
"1": {
"text": "It's not at all ridiculous for an application to make multiple requests in a second.",
"created": "Thu, 11 Aug 2011 17:05:17 GMT",
"pgfnum": "923"
},
"2": {
"text": "So, I've changing the spec and my implementation to allow one request per timestamp per account. ",
"created": "Thu, 11 Aug 2011 17:00:56 GMT",
"pgfnum": "922"
}
}
}
}
},
"17": {
"text": "8/10/11 by DW",
"created": "Wed, 10 Aug 2011 13:53:47 GMT",
"pgfnum": "891",
"subs": {
"0": {
"text": "SLIde time must be in GMT",
"created": "Wed, 10 Aug 2011 18:27:01 GMT",
"pgfnum": "907",
"type": "blogpost",
"subs": {
"0": {
"text": "The time must be in GMT. We were sending it in the local timezone of each machine. It happens to work because both of my test machines are in the same timezone.",
"created": "Wed, 10 Aug 2011 18:27:05 GMT",
"pgfnum": "908"
},
"1": {
"text": "This is one of the problems of Unix dates, each app must have a convention about what timezone it's in. The date itself can't say what timezone it's talking about. A comparitive advantage of RFC822 dates.",
"created": "Wed, 10 Aug 2011 18:39:18 GMT",
"pgfnum": "909"
}
}
},
"1": {
"text": "Changes to SLIde",
"created": "Wed, 10 Aug 2011 13:53:48 GMT",
"pgfnum": "892",
"type": "blogpost",
"subs": {
"0": {
"text": "Implemented four of the suggestions from reviewers.",
"created": "Wed, 10 Aug 2011 13:54:05 GMT",
"pgfnum": "893"
},
"1": {
"text": "1. Unix timestamp. Used to be RFC822 formatted. A lot of reviewers asked for this, independently. Let the majority rule. :-)",
"created": "Wed, 10 Aug 2011 13:54:18 GMT",
"pgfnum": "894"
},
"2": {
"text": "2. Version parameter. Starts off at 0. Might possibly change it to 1 when it's announced on scripting.com. On the other hand a 0-based protocol version is kind of neat (never heard of one before). Current implementation just checks for its presence and that it's a valid integer. Otherwise all versions are (currently) assumed to be compatible with all others. If that should change, it will be noted in the spec.",
"created": "Wed, 10 Aug 2011 15:36:23 GMT",
"pgfnum": "896"
},
"3": {
"text": "3. Timestamps can only be used once. Since we only allow timestamps to be used for five minutes, this is quite implementable.",
"created": "Wed, 10 Aug 2011 16:47:23 GMT",
"pgfnum": "897"
},
"4": {
"text": "4. No longer base64-ing the signature. No need to since it is URL-encoded.",
"created": "Wed, 10 Aug 2011 17:43:21 GMT",
"pgfnum": "898"
},
"5": {
"text": "Still have to update the spec, but the code is implemented and changes released.",
"created": "Wed, 10 Aug 2011 17:52:50 GMT",
"pgfnum": "901"
},
"6": {
"text": "Parts",
"created": "Wed, 10 Aug 2011 17:48:17 GMT",
"pgfnum": "899",
"subs": {
"0": {
"text": "idApiSuite.init"
},
"1": {
"text": "idApiSuite.getSignature"
},
"2": {
"text": "idApiSuite.responder.respond"
},
"3": {
"text": "opmlEditor.member.validateRemote"
}
}
}
}
}
}
},
"18": {
"text": "8/9/11 by DW",
"created": "Tue, 09 Aug 2011 16:54:39 GMT",
"pgfnum": "850",
"subs": {
"0": {
"text": "Tweaks for the next round of changes",
"created": "Tue, 09 Aug 2011 23:17:11 GMT",
"pgfnum": "886",
"type": "blogpost",
"subs": {
"0": {
"text": "These prefs look like they could use changing, so I'm trying them out on the test server to see if it makes sense:",
"created": "Tue, 09 Aug 2011 23:17:18 GMT",
"pgfnum": "887"
},
"1": {
"text": "flLimitRiverHistory -- currently false. If true, it keeps the river from accumulating more than 31 days worth of history. A good thing to turn on, it seems. Keeps the root from bloating.",
"created": "Tue, 09 Aug 2011 23:17:36 GMT",
"pgfnum": "888"
},
"2": {
"text": "flRequestCloudNotify -- currently false. If true, we implement the client side of the <cloud> element in RSS. Obviously this is a problem if the server is behind a firewall or NAT. I set it true on the test server.",
"created": "Tue, 09 Aug 2011 23:18:28 GMT",
"pgfnum": "889"
},
"3": {
"text": "maxItemsHomePage -- currently 100. I'm trying it at 250.",
"created": "Tue, 09 Aug 2011 23:20:34 GMT",
"pgfnum": "890"
}
}
},
"1": {
"text": "More tweaks for static rivers",
"created": "Tue, 09 Aug 2011 22:35:04 GMT",
"pgfnum": "877",
"type": "blogpost",
"subs": {
"0": {
"text": "The streamlining of the startup process for River2 continues.",
"created": "Tue, 09 Aug 2011 22:35:15 GMT",
"pgfnum": "878"
},
"1": {
"text": "Newly installed River2's have static rendering enabled by default.",
"created": "Tue, 09 Aug 2011 22:35:27 GMT",
"pgfnum": "879"
},
"2": {
"text": "They are saved into /rivers/admin/ in the www folder of the local web server.",
"created": "Tue, 09 Aug 2011 22:54:46 GMT",
"pgfnum": "885"
},
"3": {
"text": "So, rather than having to configure Dropbox or S3 to get started, we build off the fact that the OPML Editor is a web server.",
"created": "Tue, 09 Aug 2011 22:51:42 GMT",
"pgfnum": "882",
"subs": {
"0": {
"text": "http://ec2-184-72-81-253.compute-1.amazonaws.com/rivers/admin/",
"created": "Tue, 09 Aug 2011 22:52:51 GMT",
"pgfnum": "883"
}
}
},
"4": {
"text": "Obviously that URL will stop working when this temporary server is decommissioned.",
"created": "Tue, 09 Aug 2011 22:53:45 GMT",
"pgfnum": "884"
},
"5": {
"text": "Instead of minutesBetweenScans set to 60, it's now set to 10.",
"created": "Tue, 09 Aug 2011 22:36:22 GMT",
"pgfnum": "880"
},
"6": {
"text": "Parts: river2Suite.init.",
"created": "Tue, 09 Aug 2011 22:49:28 GMT",
"pgfnum": "881"
}
}
},
"2": {
"text": "nytriver on twitter rebooted",
"created": "Tue, 09 Aug 2011 16:54:39 GMT",
"pgfnum": "851",
"type": "blogpost",
"subs": {
"0": {
"text": "I needed a warmup project and noted that the nytriver account on Twitter wasn't working, so I hooked the NYT river feed up to radioReallySimple, which is our local version of TwitterFeed, and linked up, and got it working.",
"created": "Tue, 09 Aug 2011 16:54:52 GMT",
"pgfnum": "852"
},
"1": {
"text": "Along the way, I added a menu command to radioReallySimple.root that, when you give it the url of a feed, sets it up so that it's subscribed to it, and switches you over to twitter.com to authorize it. So you should be logged in to Twitter before you run the command. It's in the Tools menu under radioReallySimple. Here's the howto.",
"created": "Tue, 09 Aug 2011 16:55:56 GMT",
"pgfnum": "853"
},
"2": {
"text": "Since we're running links from the NYT that aren't shortened, I also hooked up the URL shortener behind r2.ly to radioReallySimple (it's Joe Moreno's Adjix server) and set up prefs so it's by default off. But now you can configure the app to shorten URLs. Be careful not to shorten Radio2 urls because they are already shortened (so this should probably only be used in special cases like the Times river).",
"created": "Tue, 09 Aug 2011 16:56:59 GMT",
"pgfnum": "854"
},
"3": {
"text": "It was annoying me that podcasts that flow to Twitter weren't being shortened, so I hooked them up too. But you have to explicitly configure the shortener and turn it on to get shortened URLs.",
"created": "Tue, 09 Aug 2011 16:58:38 GMT",
"pgfnum": "856"
},
"4": {
"text": "BTW, here's the initial writeup from 2007 for this feature. It describes a twitter account called \"nyt\" which I clearly set up, and would love to use, but I haven't been able to log in to yet.",
"created": "Tue, 09 Aug 2011 17:09:44 GMT",
"pgfnum": "872"
},
"5": {
"text": "Parts",
"created": "Tue, 09 Aug 2011 16:59:42 GMT",
"pgfnum": "857",
"subs": {
"0": {
"text": "radioReallySimpleSuite.init"
},
"1": {
"text": "radioReallySimpleSuite.initUser"
},
"2": {
"text": "radioReallySimpleSuite.shortenUrl"
},
"3": {
"text": "radioReallySimpleSuite.menuCommands"
},
"4": {
"text": "radioReallySimpleSuite.menu"
},
"5": {
"text": "radioReallySimpleSuite.newItemCallback"
}
}
}
}
}
}
},
"19": {
"text": "8/8/11 by DW",
"created": "Mon, 08 Aug 2011 23:42:27 GMT",
"pgfnum": "839",
"subs": {
"0": {
"text": "Tweaks for static rivers",
"created": "Mon, 08 Aug 2011 23:42:28 GMT",
"pgfnum": "840",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm streamlining river2.root so that it boots up with an admin user that generates a static river that's beautiful.",
"created": "Mon, 08 Aug 2011 23:42:43 GMT",
"pgfnum": "841"
},
"1": {
"text": "This should be as effortless as possible to set up.",
"created": "Mon, 08 Aug 2011 23:43:13 GMT",
"pgfnum": "842"
},
"2": {
"text": "1. The beautiful river is the index file for every user that has static rendering enabled. That's the look we want to lead with in every case. It's ready.",
"created": "Mon, 08 Aug 2011 23:43:35 GMT",
"pgfnum": "843"
},
"3": {
"text": "2. The admin user has static rendering enabled.",
"created": "Mon, 08 Aug 2011 23:44:37 GMT",
"pgfnum": "844"
},
"4": {
"text": "3. Instead of generating admin.html, admin.json, admin.opml and adminRiver3.js, I want to generate a sub-folder called admin and have the files within be called index.html, index.json, index.opml and river3.js. This makes it possible to map a domain to the folder and have it \"just work.\"",
"created": "Mon, 08 Aug 2011 23:44:52 GMT",
"pgfnum": "845"
},
"5": {
"text": "4. A new user-level pref, adruser^.prefs.static.flSubFolder, defaults false, so current installations don't change.",
"created": "Mon, 08 Aug 2011 23:46:45 GMT",
"pgfnum": "846"
},
"6": {
"text": "Parts",
"created": "Tue, 09 Aug 2011 13:55:16 GMT",
"pgfnum": "848",
"subs": {
"0": {
"text": "river2Suite.initBeautifulRiverPrefs"
},
"1": {
"text": "river2Suite.initUser"
},
"2": {
"text": "river2Suite.static.writeFile"
},
"3": {
"text": "river2Suite.utilities.setupAdminUser"
},
"4": {
"text": "river2Suite.podcasts.downloadOne"
},
"5": {
"text": "river2Suite.static.buildBeautifulRiver"
},
"6": {
"text": "river2Suite.static.buildJsonNews"
},
"7": {
"text": "river2Suite.static.buildOpml"
},
"8": {
"text": "river2Suite.viewBeautifulRiver"
}
}
}
}
}
}
},
"20": {
"text": "8/3/11 by DW",
"created": "Wed, 03 Aug 2011 10:11:28 GMT",
"pgfnum": "802",
"subs": {
"0": {
"text": "EC2 for Poets AMI",
"created": "Wed, 03 Aug 2011 10:11:35 GMT",
"pgfnum": "803",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm getting ready to do a howto for static rivers. The user doesn't need radio2.root or beaut.root, but they're deeply ingrained in the current AMI. We did what we swore we would never do. Explained below.",
"created": "Wed, 03 Aug 2011 10:11:56 GMT",
"pgfnum": "804",
"subs": {
"0": {
"text": "In 2008, I realized I needed an absolutely empty shell for the OPML Editor. I need to have the default install ship with an empty Tools table. This is because the OPML Editor was being used for lots of things, and each one was made more complicated because there was all this extra stuff in the apps folder.",
"created": "Wed, 03 Aug 2011 10:13:10 GMT",
"pgfnum": "805"
},
"1": {
"text": "I did it again. And now I'm going to undo it again.",
"created": "Wed, 03 Aug 2011 10:14:11 GMT",
"pgfnum": "806"
},
"2": {
"text": "Note the default install from the home.opml.org site is fine. It's the EC2 for Poets install that got feature creepy.",
"created": "Wed, 03 Aug 2011 10:14:31 GMT",
"pgfnum": "807"
}
}
},
"1": {
"text": "So I started with a Poets install, and removed all the tools from the folder except helloWorld.root and ec2support.root.",
"created": "Wed, 03 Aug 2011 10:14:56 GMT",
"pgfnum": "808"
},
"2": {
"text": "There was a question about ec2support.root. Should it stay or should it go?",
"created": "Wed, 03 Aug 2011 10:23:31 GMT",
"pgfnum": "810",
"subs": {
"0": {
"text": "I think it should stay, and the bits about beaut.root and radio2.root should be commented out.",
"created": "Wed, 03 Aug 2011 10:23:48 GMT",
"pgfnum": "814"
},
"1": {
"text": "It does a lot of things, like keep flaunch.exe running and set the system clock at startup, that would just have to be done somewhere else.",
"created": "Wed, 03 Aug 2011 10:24:06 GMT",
"pgfnum": "815"
},
"2": {
"text": "Servers do special things that workstations don't.",
"created": "Wed, 03 Aug 2011 10:24:37 GMT",
"pgfnum": "816"
},
"3": {
"text": "Verdict: It stays.",
"created": "Wed, 03 Aug 2011 14:47:34 GMT",
"pgfnum": "821"
}
}
},
"3": {
"text": "Then I created an AMI, ec2ForPoets10. Launched an instance called Bounty. Installed River2.",
"created": "Wed, 03 Aug 2011 14:47:39 GMT",
"pgfnum": "822",
"subs": {
"0": {
"text": "It complained that there was no beaut.root. That's because there were some callbacks installed. But there shouldn't have even been a config.river2. So I went back to Kleenex and deleted it, and save-copied config.root. It shrank from almost 100MB to 15K. That's a nice effect! (So there will be an ec2ForPoets11.)",
"created": "Wed, 03 Aug 2011 14:48:16 GMT",
"pgfnum": "823"
},
"1": {
"text": "Kleenex is the instance I build new AMIs from. Bounty is where I work through the new static howto.",
"created": "Wed, 03 Aug 2011 14:49:46 GMT",
"pgfnum": "824"
}
}
},
"4": {
"text": "ec2ForPoets11",
"subs": {
"0": {
"text": "Has a clean config.root.",
"created": "Wed, 03 Aug 2011 15:00:22 GMT",
"pgfnum": "825"
}
}
}
}
}
}
}
}
},
"22": {
"name": "july2011",
"text": "July 2011",
"type": "include",
"url": "http://static.reallysimple.org/worldoutline/dave/2011/08/18/archive008.opml",
"subs": {
"0": {
"text": "7/31/11 by DW",
"created": "Sun, 31 Jul 2011 23:40:35 GMT",
"pgfnum": "761",
"subs": {
"0": {
"text": "Changes to how photos work",
"created": "Sun, 31 Jul 2011 23:40:50 GMT",
"pgfnum": "762",
"type": "blogpost",
"subs": {
"0": {
"text": "In myPhotos.root, the month nodes are now of type thumbList.",
"created": "Sun, 31 Jul 2011 23:41:29 GMT",
"pgfnum": "764"
},
"1": {
"text": "In worldOutline.root, these nodes are treated specially in two ways.",
"created": "Sun, 31 Jul 2011 23:41:50 GMT",
"pgfnum": "765",
"subs": {
"0": {
"text": "1. There is a handler for thumbList nodes that displays them in a 4-across array thumbnails. Screen shot.",
"created": "Sun, 31 Jul 2011 23:50:52 GMT",
"pgfnum": "769"
},
"1": {
"text": "2. In html.directory.walk, we go through these nodes as if they were include types. This is the first type that behaves this way, but there will probably be others in the future.",
"created": "Sun, 31 Jul 2011 23:50:58 GMT",
"pgfnum": "770"
}
}
},
"2": {
"text": "The display of pictures was tweaked to be more attractive and functional. Example.",
"created": "Sun, 31 Jul 2011 23:42:38 GMT",
"pgfnum": "766"
},
"3": {
"text": "Parts",
"created": "Sun, 31 Jul 2011 23:42:56 GMT",
"pgfnum": "767",
"subs": {
"0": {
"text": "myPhotosSuite.buildCalendarOpml"
},
"1": {
"text": "myPhotosSuite.utilities.buildCalendarOpmls"
},
"2": {
"text": "myPhotosSuite.background.everyMinute"
},
"3": {
"text": "html.directory.walk"
},
"4": {
"text": "worldOutlineSuite.init"
},
"5": {
"text": "worldOutlineSuite.viewPhotoCallback"
},
"6": {
"text": "worldOutlineSuite.viewThumbListCallback"
}
}
}
}
}
}
},
"1": {
"text": "7/28/11 by DW",
"created": "Thu, 28 Jul 2011 15:52:43 GMT",
"pgfnum": "728",
"subs": {
"0": {
"text": "Experimenting with Fonts",
"created": "Thu, 28 Jul 2011 18:25:10 GMT",
"pgfnum": "756",
"type": "blogpost",
"subs": {
"0": {
"text": "Here: http://fdemo.blorkmark.com/.",
"created": "Thu, 28 Jul 2011 18:25:18 GMT",
"pgfnum": "757"
}
}
},
"1": {
"text": "Attributes in the HTTP request",
"created": "Thu, 28 Jul 2011 17:28:32 GMT",
"pgfnum": "741",
"type": "blogpost",
"subs": {
"0": {
"text": "You can now include attributes on the \"command line\" of the HTTP request that gets you to a node of type html.",
"created": "Thu, 28 Jul 2011 17:28:38 GMT",
"pgfnum": "742"
},
"1": {
"text": "So, for example, this page, will accept a parameter called greeting, and play it back to you.",
"created": "Thu, 28 Jul 2011 17:29:07 GMT",
"pgfnum": "743"
},
"2": {
"text": "http://greetingdemo.blorkmark.com/?greeting=Hooray%20For%20Hollywood",
"created": "Thu, 28 Jul 2011 17:31:18 GMT",
"pgfnum": "744"
},
"3": {
"text": "Part: html.directory.viewDirectory.",
"created": "Thu, 28 Jul 2011 17:27:59 GMT",
"pgfnum": "740"
}
}
},
"2": {
"text": "Attributes in html nodes",
"created": "Thu, 28 Jul 2011 17:24:08 GMT",
"pgfnum": "737",
"type": "blogpost",
"subs": {
"0": {
"text": "You can now include attributes in html nodes, and they are picked up when the page is served.",
"created": "Thu, 28 Jul 2011 17:24:18 GMT",
"pgfnum": "738"
},
"1": {
"text": "So if you wanted to include the domain for the page, you could refer to <%domain%>.",
"created": "Thu, 28 Jul 2011 17:34:21 GMT",
"pgfnum": "745"
},
"2": {
"text": "Makes it possible to copy/paste code without having to modify it.",
"created": "Thu, 28 Jul 2011 19:50:19 GMT",
"pgfnum": "759"
},
"3": {
"text": "Part: html.directory.walk.",
"created": "Thu, 28 Jul 2011 17:27:59 GMT",
"pgfnum": "740"
}
}
},
"3": {
"text": "Broken hitcounter in world outline",
"created": "Thu, 28 Jul 2011 15:52:44 GMT",
"domain": "hitct.blorkmark.com",
"pgfnum": "729",
"type": "blogpost",
"subs": {
"0": {
"text": "At some point while I was cleaning up the code that re-implemented the hitcounter in the world outline, I changed the name of the counter, and missed updating it in one place. That meant the counter was always getting set to 1. I noticed it some time back, but didn't have a chance to investigate until this morning. Bugs like these are easy to fix. Fixed.",
"created": "Thu, 28 Jul 2011 15:52:59 GMT",
"pgfnum": "730"
},
"1": {
"text": "Part: html.directory.bumpHitCount.",
"created": "Thu, 28 Jul 2011 15:54:28 GMT",
"pgfnum": "731"
}
}
}
}
},
"2": {
"text": "7/27/11 by DW",
"created": "Wed, 27 Jul 2011 13:27:01 GMT",
"pgfnum": "712",
"subs": {
"0": {
"text": "Feedback on the SLIde proposal",
"created": "Wed, 27 Jul 2011 13:27:01 GMT",
"pgfnum": "713",
"type": "blogpost",
"subs": {
"0": {
"text": "I've sent links to the SLIde proposal to a number of people whose opinions I respect, asking them to review and comment.",
"created": "Wed, 27 Jul 2011 13:27:18 GMT",
"pgfnum": "714"
},
"1": {
"text": "I've been blown away by the response. Much much better than what you get when you put a proposal out there publicly. This is the way I want to do it for all half-baked ideas in the future. :-)",
"created": "Wed, 27 Jul 2011 13:27:55 GMT",
"pgfnum": "715"
},
"2": {
"text": "Here's a summary of what's come back, with my comments.",
"created": "Wed, 27 Jul 2011 13:28:32 GMT",
"pgfnum": "716"
},
"3": {
"text": "1. Unix timestamp format. Several people recommended using this instead of RFC822 format. The argument in favor of RFC822 is that it's just as broadly supported as any other time format, is human-readable as well as machine-readable. But I could easily give on this one, and likely will.",
"created": "Wed, 27 Jul 2011 13:28:38 GMT",
"pgfnum": "717"
},
"4": {
"text": "2. Use SSL. I'm inclined to say this is a choice for the server, whether or not to implement SSL. Once you're using SSL is there any reason not to send the password in the clear? That's a serious question.",
"created": "Wed, 27 Jul 2011 13:29:47 GMT",
"pgfnum": "718",
"subs": {
"0": {
"text": "Argument in favor of SSL -- it prevents spoofed responses. Imagine you wanted access to someone's account. Hack a router between the two servers. Return \"yes\" when a request comes in for the user whose account you want access to.",
"created": "Wed, 27 Jul 2011 13:39:35 GMT",
"pgfnum": "720"
}
}
},
"5": {
"text": "3. Include a version number somewhere in the protocol. Good idea. Two choices. Could make the requests go to /v1 /v2 etc. Or include the version number as a string. I'd make it optional for version 1, in case there is no version 2.",
"created": "Wed, 27 Jul 2011 13:30:55 GMT",
"pgfnum": "719"
},
"6": {
"text": "4. It was pointed out that there is a 5-minute window for replay attacks. This could be prevented by not allowing any timestamp to be used twice. This means that you could do no more than one validation per account per second. Does not seem like an important limit, and I am inclined to include this in the proposal.",
"created": "Wed, 27 Jul 2011 13:55:09 GMT",
"pgfnum": "721"
},
"7": {
"text": "5. \"Security geeks will respect the hash a lot more if it uses Bcrypt instead of SHA-1, since SHA-1 can be brute-forced so quickly on programmable GPUs.\"",
"created": "Wed, 27 Jul 2011 13:58:06 GMT",
"pgfnum": "722"
},
"8": {
"text": "6. \"You shouldn't use a user password directly as the HMAC key, because the entropy of a password is not that of a secret key, which means you're using HMAC in a way that doesn't fit its specification.\"",
"created": "Wed, 27 Jul 2011 14:18:46 GMT",
"pgfnum": "723"
},
"9": {
"text": "7. \"Why does signature have to be base64 encoded if it's going to be url encoded?\"",
"created": "Wed, 27 Jul 2011 14:20:35 GMT",
"pgfnum": "724"
},
"10": {
"text": "Any feedback not included here has been read by me and is being thought-about. :-)",
"created": "Wed, 27 Jul 2011 14:24:55 GMT",
"pgfnum": "727"
},
"11": {
"text": "Further comments can be sent to dave dot winer at gmail dot com. I would be happy to start a mail list if people felt that was a good way to continue. Happy to take notes on privately-sent feedback.",
"created": "Wed, 27 Jul 2011 14:21:42 GMT",
"pgfnum": "725"
},
"12": {
"text": "Also, I have included all your names in the reviewer's section. If you'd rather not have your name there, just say the word. I did not include names here where I quoted feedback.",
"created": "Wed, 27 Jul 2011 14:22:17 GMT",
"pgfnum": "726"
}
}
}
}
},
"3": {
"text": "7/26/11 by DW",
"created": "Tue, 26 Jul 2011 15:14:03 GMT",
"pgfnum": "698",
"subs": {
"0": {
"text": "Added caching for remote ID server",
"created": "Tue, 26 Jul 2011 18:44:51 GMT",
"pgfnum": "708",
"type": "blogpost",
"subs": {
"0": {
"text": "It was making a few requests for each page. Instead, now I cache the password for up to 3 minutes before checking back with the ID server. This should dramatically reduce the number of requests. However, it will take up to 3 minutes after changing a password before it takes effect.",
"created": "Tue, 26 Jul 2011 18:45:02 GMT",
"pgfnum": "709"
},
"1": {
"text": "Parts",
"created": "Tue, 26 Jul 2011 18:46:24 GMT",
"pgfnum": "710",
"subs": {
"0": {
"text": "opmlEditor.init"
},
"1": {
"text": "opmlEditor.member.validate"
},
"2": {
"text": "opmlEditor.member.validateRemote"
}
}
}
}
},
"1": {
"text": "Change permalink text",
"created": "Tue, 26 Jul 2011 17:07:18 GMT",
"pgfnum": "706",
"type": "blogpost",
"subs": {
"0": {
"text": "On each story page on scripting2 blogs, the # permalinks had descriptive alt text \"Permanent link to this item in the archive.\" When people would copy/paste the text into their own posts, you'd get the full text in there. They should delete it, but they don't. So I changed it to a #. Which hopefully will be more obvious, but at least it isn't as long.",
"created": "Tue, 26 Jul 2011 17:07:45 GMT",
"pgfnum": "707"
}
}
},
"2": {
"text": "flUploadToS3 attribute",
"created": "Tue, 26 Jul 2011 15:14:04 GMT",
"pgfnum": "699",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a very special-purpose thing, but should be useful.",
"created": "Tue, 26 Jul 2011 15:14:17 GMT",
"pgfnum": "700"
},
"1": {
"text": "If a howto node has an flUploadToS3 attribute that's true, and it has a domain attribute, we upload the page, as it's rendered, to a bucket with the same name as its domain, with the filename index.html.",
"created": "Tue, 26 Jul 2011 15:14:27 GMT",
"pgfnum": "701"
},
"2": {
"text": "This means that if you write a howto that starts getting a lot of traffic, you can add this attribute, create a bucket on S3 with the domain name, visit the page, map the domain, and as soon as the DNS percolates, the flow will go to Amazon instead of your world outline server. Later the big wave is over, you can map the DNS back.",
"created": "Tue, 26 Jul 2011 15:15:40 GMT",
"pgfnum": "702"
},
"3": {
"text": "You might even the flUploadToS3 attribute true. No harm in keeping a rendered mirror on S3.",
"created": "Tue, 26 Jul 2011 15:16:46 GMT",
"pgfnum": "703"
},
"4": {
"text": "I'm anticipating that a howto I'm working on may get some traffic. :-)",
"created": "Tue, 26 Jul 2011 15:23:06 GMT",
"pgfnum": "704"
},
"5": {
"text": "I have to visit this page to get it to rebuild the static version on S3.",
"created": "Tue, 26 Jul 2011 15:36:03 GMT",
"pgfnum": "705"
}
}
}
}
},
"4": {
"text": "7/25/11 by DW",
"created": "Mon, 25 Jul 2011 12:26:50 GMT",
"pgfnum": "663",
"subs": {
"0": {
"text": "Hook opmlEditor.member into idApi.root",
"created": "Mon, 25 Jul 2011 12:26:52 GMT",
"pgfnum": "664",
"type": "blogpost",
"subs": {
"0": {
"text": "In user.opmlEditor.prefs, a new table: identity.",
"created": "Mon, 25 Jul 2011 12:37:21 GMT",
"pgfnum": "667"
},
"1": {
"text": "A boolean, flUseRemoteServer, if true we use a remote server, conforming to the Slide spec.",
"created": "Mon, 25 Jul 2011 12:37:35 GMT",
"pgfnum": "668"
},
"2": {
"text": "If it's true, serverDomain is the name of the server.",
"created": "Mon, 25 Jul 2011 12:37:43 GMT",
"pgfnum": "669"
},
"3": {
"text": "I have it hooked into my Blork server, and it appears to work. :-)",
"created": "Mon, 25 Jul 2011 13:45:03 GMT",
"pgfnum": "670"
},
"4": {
"text": "Parts",
"created": "Mon, 25 Jul 2011 12:27:15 GMT",
"pgfnum": "665",
"subs": {
"0": {
"text": "opmlEditor.init",
"created": "Mon, 25 Jul 2011 12:33:40 GMT",
"pgfnum": "666"
},
"1": {
"text": "opmlEditor.member.validate"
}
}
}
}
}
}
},
"5": {
"text": "7/24/11 by DW",
"created": "Sun, 24 Jul 2011 16:25:24 GMT",
"pgfnum": "639",
"subs": {
"0": {
"text": "Added title to howto nodes",
"created": "Sun, 24 Jul 2011 16:25:25 GMT",
"pgfnum": "640",
"type": "blogpost",
"subs": {
"0": {
"text": "Added the title of the document as an H3 at the top of the document.",
"created": "Sun, 24 Jul 2011 16:25:35 GMT",
"pgfnum": "641"
}
}
}
}
},
"6": {
"text": "7/22/11 by DW",
"created": "Fri, 22 Jul 2011 12:30:47 GMT",
"pgfnum": "529",
"subs": {
"0": {
"text": "Update river2 prefs",
"created": "Fri, 22 Jul 2011 20:05:33 GMT",
"pgfnum": "593",
"type": "blogpost",
"subs": {
"0": {
"text": "The prefs outline and the page on the website that controls the display of the prefs outline need to be modified to support the new location of river2's data.",
"created": "Fri, 22 Jul 2011 20:05:38 GMT",
"pgfnum": "594"
},
"1": {
"text": "Turns out you can reference local variables from the script that invoked the prefs outline, so we never actually had to hard-code addresses in the outlines.",
"created": "Fri, 22 Jul 2011 20:09:03 GMT",
"pgfnum": "598"
},
"2": {
"text": "So the fix was simply a search and replace, changing config.river2 for adrdata^ -- where adrdata is defined in river2website.prefs.",
"created": "Fri, 22 Jul 2011 20:09:09 GMT",
"pgfnum": "599"
},
"3": {
"text": "Parts",
"created": "Fri, 22 Jul 2011 20:07:01 GMT",
"pgfnum": "595",
"subs": {
"0": {
"text": "river2Website.prefs",
"created": "Fri, 22 Jul 2011 20:07:04 GMT",
"pgfnum": "596"
},
"1": {
"text": "river2Suite.data.prefsOutline",
"created": "Fri, 22 Jul 2011 20:07:09 GMT",
"pgfnum": "597"
}
}
}
}
},
"1": {
"text": "howto for corner-turn",
"created": "Fri, 22 Jul 2011 16:34:43 GMT",
"pgfnum": "588",
"type": "blogpost",
"subs": {
"0": {
"text": "I wrote a howto document that explains how you get River2 to run in its own database.",
"created": "Fri, 22 Jul 2011 16:34:49 GMT",
"pgfnum": "589"
},
"1": {
"text": "http://river2datahowto.blorkmark.com/",
"created": "Fri, 22 Jul 2011 16:35:05 GMT",
"pgfnum": "590"
}
}
},
"2": {
"text": "river2.root gets its own data file",
"created": "Fri, 22 Jul 2011 12:30:48 GMT",
"pgfnum": "530",
"type": "blogpost",
"subs": {
"0": {
"text": "An early decision in the development of river2.root was to include its data in config.root.",
"created": "Fri, 22 Jul 2011 12:49:30 GMT",
"pgfnum": "531"
},
"1": {
"text": "But River2 accumulates data at a much faster rate than the content management apps that run in the OPML Editor environment. That's what it's for -- accumulating data.",
"created": "Fri, 22 Jul 2011 12:50:06 GMT",
"pgfnum": "533"
},
"2": {
"text": "So the theory is that everything would work better if its data file were kept separate from config.root.",
"created": "Fri, 22 Jul 2011 12:50:54 GMT",
"pgfnum": "534"
},
"3": {
"text": "First step in the process of doing this corner-turn is to get it working on my main aggregator server, houston.scripting.com.",
"created": "Fri, 22 Jul 2011 12:51:13 GMT",
"pgfnum": "535"
},
"4": {
"text": "Wrote a script last night, river2suite.utilities.copyToRiver2Data, which copies all the data from config.river2 to a new file, river2data.root, which is located in Guest Databases/ops/datafiles.",
"created": "Fri, 22 Jul 2011 12:49:47 GMT",
"pgfnum": "532"
},
"5": {
"text": "Then I rewrote river2suite.init so that it returns the pointer to that data and not the config.river2 version. Very simple change. If it finds config.river2.stats.whenConvertedToSeparateFile then it knows to use the data file.",
"created": "Fri, 22 Jul 2011 12:52:41 GMT",
"pgfnum": "536"
},
"6": {
"text": "At 11AM, it works on houston. It was as painless a switchover as I thought it would be.",
"created": "Fri, 22 Jul 2011 15:08:50 GMT",
"pgfnum": "537"
},
"7": {
"text": "Next I'm going to release the new version of river2suite.init so I can test the process on another server.",
"created": "Fri, 22 Jul 2011 15:09:17 GMT",
"pgfnum": "538"
},
"8": {
"text": "It really works well. It takes a while for the conversion script to run, so you gotta be patient.",
"created": "Fri, 22 Jul 2011 16:12:13 GMT",
"pgfnum": "565"
},
"9": {
"text": "Parts",
"created": "Fri, 22 Jul 2011 15:10:57 GMT",
"pgfnum": "539",
"subs": {
"0": {
"text": "river2suite.init",
"created": "Fri, 22 Jul 2011 15:10:59 GMT",
"pgfnum": "540"
},
"1": {
"text": "river2suite.utilities.copyToRiver2Data",
"created": "Fri, 22 Jul 2011 15:11:08 GMT",
"pgfnum": "541"
}
}
}
}
}
}
},
"7": {
"text": "7/21/11 by DW",
"created": "Thu, 21 Jul 2011 13:33:31 GMT",
"pgfnum": "491",
"subs": {
"0": {
"text": "New attribute: visible",
"created": "Thu, 21 Jul 2011 22:31:42 GMT",
"pgfnum": "522",
"type": "blogpost",
"subs": {
"0": {
"text": "If an item has a \"visible\" attribute and it's false, don't display it in the list.",
"created": "Thu, 21 Jul 2011 22:31:49 GMT",
"pgfnum": "523"
},
"1": {
"text": "Useful for putting special files for Google Webmaster Tools. They don't have to appear in a listing of the directory, but a direct request to them has to work.",
"created": "Thu, 21 Jul 2011 22:32:03 GMT",
"pgfnum": "524"
},
"2": {
"text": "Also, we bump the hit counter for all requests, including special nodetypes. Previously we only bumped the counter if it was a list.",
"created": "Thu, 21 Jul 2011 22:32:25 GMT",
"pgfnum": "525"
},
"3": {
"text": "html.directory.viewDirectory",
"created": "Thu, 21 Jul 2011 22:33:21 GMT",
"pgfnum": "527"
}
}
},
"1": {
"text": "Raw HTML should really be raw",
"created": "Thu, 21 Jul 2011 22:29:09 GMT",
"pgfnum": "519",
"type": "blogpost",
"subs": {
"0": {
"text": "We were adding carriage returns at the end of every line. I know it's whitespace in the browser, but if you have code checking for equality, the extra Return characters screw things up. Fixed.",
"created": "Thu, 21 Jul 2011 22:29:17 GMT",
"pgfnum": "520"
},
"1": {
"text": "html.directory.getRawHtml",
"created": "Thu, 21 Jul 2011 22:30:00 GMT",
"pgfnum": "521"
}
}
},
"2": {
"text": "Problem with World Outline setup",
"created": "Thu, 21 Jul 2011 21:13:17 GMT",
"pgfnum": "507",
"type": "blogpost",
"subs": {
"0": {
"text": "Philippe Martin hit a problem with setting up the World Outline as an authoring workstation.",
"created": "Thu, 21 Jul 2011 21:13:35 GMT",
"pgfnum": "508"
},
"1": {
"text": "If you've already tried to install the server on your computer, you will go to the wrong prefs page when you try to set up the workstation software.",
"created": "Thu, 21 Jul 2011 21:14:02 GMT",
"pgfnum": "509"
},
"2": {
"text": "This is because both pages have the same title, and we use the title of the page to locate it within the prefs system.",
"created": "Thu, 21 Jul 2011 21:14:29 GMT",
"pgfnum": "510"
},
"3": {
"text": "The solution is to change the stitle of the authoring setup page. Instead of World Outline it now says World Outline server. The Howto doc now points to the correct page.",
"created": "Thu, 21 Jul 2011 21:14:47 GMT",
"pgfnum": "511"
},
"4": {
"text": "This will also give me a chance to test the listings code, to see if it will correctly update the listing for the part that changed.",
"created": "Thu, 21 Jul 2011 21:15:04 GMT",
"pgfnum": "512"
},
"5": {
"text": "Parts",
"created": "Thu, 21 Jul 2011 21:15:35 GMT",
"pgfnum": "513",
"subs": {
"0": {
"text": "opmlEditor.data.outlines.prefs",
"created": "Thu, 21 Jul 2011 21:15:36 GMT",
"pgfnum": "514"
}
}
}
}
},
"3": {
"text": "New listings site",
"created": "Thu, 21 Jul 2011 13:33:32 GMT",
"domain": "csen0.blorkmark.com",
"pgfnum": "492",
"type": "blogpost",
"subs": {
"0": {
"text": "I have a site, listings.opml.org, that has text listings of much of the code that I'm maintaining. The goal is to get all the code into Google's search engine, so we can look stuff up there.",
"created": "Thu, 21 Jul 2011 13:33:36 GMT",
"pgfnum": "493"
},
"1": {
"text": "However, the structure of the site was a mess, and it was incomplete.",
"created": "Thu, 21 Jul 2011 13:36:32 GMT",
"pgfnum": "497"
},
"2": {
"text": "We now have a better way to view code libraries, in the world outline, with code nodetypes. So I wrote a new app for managing the listings site, much simpler, that is well-organized and more complete.",
"created": "Thu, 21 Jul 2011 13:34:33 GMT",
"pgfnum": "494"
},
"3": {
"text": "Basically I create archives of all the code and outlines in the system table, workspace.userlandSamples, and each of the tools in the Tools Catalog.",
"created": "Thu, 21 Jul 2011 13:35:25 GMT",
"pgfnum": "495"
}
}
}
}
},
"8": {
"text": "7/20/11 by DW",
"created": "Wed, 20 Jul 2011 14:07:24 GMT",
"pgfnum": "471",
"subs": {
"0": {
"text": "listings.opml.org is a mess",
"created": "Wed, 20 Jul 2011 18:27:49 GMT",
"pgfnum": "485",
"subs": {
"0": {
"text": "listings.opml.org was a good idea, but now that we have code nodetypes, we can do a much more complete implementation, without all the content management.",
"created": "Wed, 20 Jul 2011 18:27:55 GMT",
"pgfnum": "486"
},
"1": {
"text": "I want to have maintained listings for all the code in opml.root and each of the tools on the Tools Catalog page.",
"created": "Wed, 20 Jul 2011 18:28:46 GMT",
"pgfnum": "487"
}
}
},
"1": {
"text": "No more \"item #1\" in data files",
"created": "Wed, 20 Jul 2011 15:14:53 GMT",
"pgfnum": "483",
"type": "blogpost",
"subs": {
"0": {
"text": "Eliminate a long-standing annoyance when creating object database datafiles. If there's an \"item #1\" at the top level it gets deleted when we see it in Frontier.openDataFile.",
"created": "Wed, 20 Jul 2011 15:12:38 GMT",
"pgfnum": "482"
}
}
},
"2": {
"text": "Rewrite hit-count code",
"created": "Wed, 20 Jul 2011 14:07:25 GMT",
"pgfnum": "472",
"type": "blogpost",
"subs": {
"0": {
"text": "The previous hit-count code in the World Outline was too simple. The hitcount table grows huge because of inclusion. I link into Ted's world, and Adam's -- they include pieces of other worlds, all of which you can get to from mine.",
"created": "Wed, 20 Jul 2011 14:07:33 GMT",
"pgfnum": "473"
},
"1": {
"text": "There are a million URLs that could work, and eventually every one of them will be tried. We need a different approach than having one big table indexed by URL.",
"created": "Wed, 20 Jul 2011 15:09:33 GMT",
"pgfnum": "475"
},
"2": {
"text": "I thought about using SimpleDB, but realized if I organized the hit count structure the same way the outline is organized, I would never get a table that's too big. Because it wouldn't work very well as an outline.",
"created": "Wed, 20 Jul 2011 15:10:10 GMT",
"pgfnum": "476"
},
"3": {
"text": "I also split the stats off into a separate data file, so if it bloats it'll be more apparent, and you won't have to do any messy stuff with config.root if you just want to throw out all the data and start over. Just delete worldOutlineStats.root.",
"created": "Wed, 20 Jul 2011 15:11:20 GMT",
"pgfnum": "478"
},
"4": {
"text": "The data file is in Guest Databases/ops/datafiles.",
"created": "Wed, 20 Jul 2011 15:12:04 GMT",
"pgfnum": "479"
},
"5": {
"text": "Parts",
"created": "Wed, 20 Jul 2011 15:12:16 GMT",
"pgfnum": "480",
"subs": {
"0": {
"text": "Frontier.openDataFile"
},
"1": {
"text": "html.directory.init"
},
"2": {
"text": "html.directory.bumpHitCount"
},
"3": {
"text": "html.directory.viewDirectory"
}
}
}
}
}
}
},
"9": {
"text": "7/19/11 by DW",
"created": "Tue, 19 Jul 2011 13:12:45 GMT",
"pgfnum": "431",
"subs": {
"0": {
"text": "User can store stuff in his own S3 bucket",
"created": "Tue, 19 Jul 2011 16:20:12 GMT",
"pgfnum": "461",
"type": "blogpost",
"subs": {
"0": {
"text": "This is a feature in radio2.root, but we must also have it here in worldOutline.root.",
"created": "Tue, 19 Jul 2011 16:20:50 GMT",
"pgfnum": "462"
},
"1": {
"text": "If the user wants to store his or her outline, feed, backups, etc in his own S3 bucket, that should be easy to set up.",
"created": "Tue, 19 Jul 2011 16:21:03 GMT",
"pgfnum": "463"
},
"2": {
"text": "They should just give write access to our account, and that's where we'll write from then-on.",
"created": "Tue, 19 Jul 2011 16:21:26 GMT",
"pgfnum": "464"
},
"3": {
"text": "New prefs in the user's members.root table.",
"created": "Tue, 19 Jul 2011 16:21:46 GMT",
"pgfnum": "465"
},
"4": {
"text": "I've got the back-end working now, but because this is core code for editing of the world outline, I want to do a code review before releasing.",
"created": "Tue, 19 Jul 2011 16:47:37 GMT",
"pgfnum": "468"
},
"5": {
"text": "I stopped short of adding a user interface for this. Want to get onto some other projects today.",
"created": "Wed, 20 Jul 2011 12:06:27 GMT",
"pgfnum": "470"
},
"6": {
"text": "Parts",
"created": "Tue, 19 Jul 2011 16:47:24 GMT",
"pgfnum": "466",
"subs": {
"0": {
"text": "worldOutlineSuite.initUser"
},
"1": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"1": {
"text": "World Outline feeds support cloud element",
"created": "Tue, 19 Jul 2011 13:22:56 GMT",
"pgfnum": "440",
"type": "blogpost",
"subs": {
"0": {
"text": "I want realtime updates from my world outline feed.",
"created": "Tue, 19 Jul 2011 13:51:59 GMT",
"pgfnum": "457"
},
"1": {
"text": "There's a new table of prefs on the workstation at user.opmlEditor.worldOutline.prefs.cloud.",
"created": "Tue, 19 Jul 2011 15:43:54 GMT",
"pgfnum": "458"
},
"2": {
"text": "After the feed is saved on the server, he pings using the coordinates in the cloud element. Assuming that the server supports the same XML-RPC ping handler we support in rssCloud.root. If not, well there will be a problem. (Realtime updates won't work, which is why we always fallback to polling.)",
"created": "Tue, 19 Jul 2011 15:44:05 GMT",
"pgfnum": "459"
},
"3": {
"text": "Actually it wouldn't be so hard to work around. We also support HTTP-POST on our server, and if that's what the cloud element calls for we could just use that. But for now the XML-RPC approach is sufficient.",
"created": "Tue, 19 Jul 2011 15:46:15 GMT",
"pgfnum": "460"
},
"4": {
"text": "Parts",
"created": "Tue, 19 Jul 2011 13:23:04 GMT",
"pgfnum": "441",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.init"
},
"1": {
"text": "opmlEditor.worldOutline.buildRss",
"created": "Tue, 19 Jul 2011 13:23:16 GMT",
"pgfnum": "442"
},
"2": {
"text": "xml.rss.pingCloud"
},
"3": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"2": {
"text": "Follow redirects on Add Feed command",
"created": "Tue, 19 Jul 2011 13:34:17 GMT",
"pgfnum": "451",
"type": "blogpost",
"subs": {
"0": {
"text": "In the right-click menu for outlines, the Add Feed command wouldn't work if the feed had been redirected.",
"created": "Tue, 19 Jul 2011 13:34:30 GMT",
"pgfnum": "452"
},
"1": {
"text": "This means you couldn't add Scripting News this way, because its feed was redirected to push the flow over to Amazon S3 so I don't have the scaling problem on my Linux server.",
"created": "Tue, 19 Jul 2011 13:34:49 GMT",
"pgfnum": "453"
},
"2": {
"text": "You'll see this working in the new feeds section in the About section at the top level of my outline.",
"created": "Tue, 19 Jul 2011 13:35:54 GMT",
"pgfnum": "454"
},
"3": {
"text": "Parts",
"created": "Tue, 19 Jul 2011 13:37:14 GMT",
"pgfnum": "455",
"subs": {
"0": {
"text": "Frontier.tools.commands.addFeed",
"created": "Tue, 19 Jul 2011 13:37:16 GMT",
"pgfnum": "456"
}
}
}
}
},
"3": {
"text": "Links should be linked",
"created": "Tue, 19 Jul 2011 13:12:47 GMT",
"pgfnum": "432",
"type": "blogpost",
"subs": {
"0": {
"text": "If you look at links in the world outline, you'll see that the icons next to the text link to the place they link to, but the text does not. This gives you very little space to hit to get to the place you're linking to. Not good.",
"created": "Tue, 19 Jul 2011 13:13:00 GMT",
"pgfnum": "433"
},
"1": {
"text": "Parts",
"created": "Tue, 19 Jul 2011 13:14:57 GMT",
"pgfnum": "435",
"subs": {
"0": {
"text": "html.directory.viewDirectory",
"created": "Tue, 19 Jul 2011 13:14:59 GMT",
"pgfnum": "436"
}
}
}
}
}
}
},
"10": {
"text": "7/18/11 by DW",
"created": "Tue, 19 Jul 2011 02:19:20 GMT",
"pgfnum": "420",
"subs": {
"0": {
"text": "rssUrl macro",
"created": "Tue, 19 Jul 2011 02:19:21 GMT",
"pgfnum": "421",
"type": "blogpost",
"subs": {
"0": {
"text": "New macro, allows you to link to the RSS url from your template.",
"created": "Tue, 19 Jul 2011 02:19:51 GMT",
"pgfnum": "422"
},
"1": {
"text": "A good place to put it is in a <link> element in the <head> of your template.",
"created": "Tue, 19 Jul 2011 02:21:51 GMT",
"pgfnum": "424"
},
"2": {
"text": "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"<%rssUrl%>\" />"
},
"3": {
"text": "I added this to the template on my world outline, so you can see what it looks like by viewing source.",
"created": "Tue, 19 Jul 2011 02:23:15 GMT",
"pgfnum": "426"
},
"4": {
"text": "And sure enough, there's now a blue RSS icon in Firefox's address bar. (I use version 3.6, before they removed the feature.)",
"created": "Tue, 19 Jul 2011 02:24:39 GMT",
"pgfnum": "427"
},
"5": {
"text": "Also added the link element to the default virgin template.",
"created": "Tue, 19 Jul 2011 02:26:45 GMT",
"pgfnum": "430"
},
"6": {
"text": "Parts",
"created": "Tue, 19 Jul 2011 02:25:24 GMT",
"pgfnum": "428",
"subs": {
"0": {
"text": "worldOutlineSuite.saveUserRoot",
"created": "Tue, 19 Jul 2011 02:25:25 GMT",
"pgfnum": "429"
},
"1": {
"text": "worldOutlineSuite.data.virgin.template"
}
}
}
}
}
}
},
"11": {
"text": "7/17/11 by DW",
"created": "Sun, 17 Jul 2011 13:23:52 GMT",
"pgfnum": "371",
"subs": {
"0": {
"text": "rss.xml on our world outline sites",
"created": "Sun, 17 Jul 2011 21:40:27 GMT",
"pgfnum": "412",
"type": "blogpost",
"subs": {
"0": {
"text": "Google Webmaster Tools insists that the URL of the feed must be on the site that it's describing. But it doesn't mind if you redirect to the actual feed. So that's what we do.",
"created": "Sun, 17 Jul 2011 21:40:34 GMT",
"pgfnum": "413"
},
"1": {
"text": "If you go to rss.xml, you'll be redirected to the appropriate feed.",
"created": "Sun, 17 Jul 2011 21:40:44 GMT",
"pgfnum": "414"
},
"2": {
"text": "Net-net, Google should be that much more responsive at adding the new stuff on our world outline sites.",
"created": "Sun, 17 Jul 2011 21:41:11 GMT",
"pgfnum": "415"
}
}
},
"1": {
"text": "Feeds for our World Outlines",
"created": "Sun, 17 Jul 2011 20:50:20 GMT",
"pgfnum": "401",
"type": "blogpost",
"subs": {
"0": {
"text": "This morning it \"came to me\" how to do feeds in the world outline. And it wasn't too hard to implement either (that was how I was sure I had the right answer).",
"created": "Sun, 17 Jul 2011 20:50:30 GMT",
"pgfnum": "403"
},
"1": {
"text": "What's in the feed: Nodes of type blogpost or howto, and perhaps others in the future.",
"created": "Sun, 17 Jul 2011 20:51:04 GMT",
"pgfnum": "404"
},
"2": {
"text": "They appear in reverse chronologic order of course.",
"created": "Sun, 17 Jul 2011 20:51:31 GMT",
"pgfnum": "405"
},
"3": {
"text": "There are at most 20 of them.",
"created": "Sun, 17 Jul 2011 20:51:44 GMT",
"pgfnum": "406"
},
"4": {
"text": "The generating of the RSS happens on the workstation, as the OPML is being generated and it is uploaded along with the OPML. This helps with scaling. The server only acts as a pass-through. It moves the RSS text to the S3 storage system.",
"created": "Sun, 17 Jul 2011 20:51:51 GMT",
"pgfnum": "407"
},
"5": {
"text": "The address of my feed is:",
"created": "Sun, 17 Jul 2011 20:52:41 GMT",
"pgfnum": "408"
},
"6": {
"text": "http://static.reallysimple.org/worldoutline/dave/rss.xml",
"created": "Sun, 17 Jul 2011 20:52:53 GMT",
"pgfnum": "409"
},
"7": {
"text": "Subscribe to it in any feed reader you like. Hook it into your feedhose. I have it hooked into my river. So you should see it when it updates. For example when this blogpost appears. :-)",
"created": "Sun, 17 Jul 2011 20:52:54 GMT",
"pgfnum": "410"
},
"8": {
"text": "Parts",
"created": "Sun, 17 Jul 2011 20:53:23 GMT",
"pgfnum": "411",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.buildRss"
},
"1": {
"text": "opmlEditor.worldOutline.saveWorkspace"
},
"2": {
"text": "worldOutlineSuite.initUser"
},
"3": {
"text": "worldOutlineRpcHandlers.saveUserRoot"
},
"4": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"2": {
"text": "Fixed error registering world outline site with Google Webmaster tools",
"created": "Sun, 17 Jul 2011 16:24:07 GMT",
"pgfnum": "390",
"type": "blogpost",
"subs": {
"0": {
"text": "I was starting to work with sitemaps. Registering worldoutline.scripting.com with Google Webmaster Tools. Encountered a bunch of problems trying to get it verified as mine.",
"created": "Sun, 17 Jul 2011 16:24:15 GMT",
"pgfnum": "391"
},
"1": {
"text": "Simplest method was to add a meta tag to the template.",
"created": "Sun, 17 Jul 2011 16:25:39 GMT",
"pgfnum": "392"
},
"2": {
"text": "But they reported they were getting back a 500 code, an error. So I tried writing a script myself to see what I'd get and sure enough I got a 500 code. The error message was:",
"created": "Sun, 17 Jul 2011 16:26:07 GMT",
"pgfnum": "393",
"subs": {
"0": {
"text": "Can't evaluate the expression because the name \"Accept\" hasn't been defined.",
"created": "Sun, 17 Jul 2011 16:27:18 GMT",
"pgfnum": "394"
}
}
},
"3": {
"text": "That's why I wasn't seeing the problem in the browser, clearly it was setting the Accept header. But scripts probably don't expect to have to do this. Mine apparently doesn't.",
"created": "Sun, 17 Jul 2011 16:27:25 GMT",
"pgfnum": "395"
},
"4": {
"text": "Once I made the change the registration worked.",
"created": "Sun, 17 Jul 2011 16:33:49 GMT",
"pgfnum": "398"
},
"5": {
"text": "Parts",
"created": "Sun, 17 Jul 2011 16:27:50 GMT",
"pgfnum": "396",
"subs": {
"0": {
"text": "html.directory.viewDirectory",
"created": "Sun, 17 Jul 2011 16:27:52 GMT",
"pgfnum": "397"
}
}
}
}
},
"3": {
"text": "New \"Copy address\" command in the Script menu",
"created": "Sun, 17 Jul 2011 13:36:46 GMT",
"pgfnum": "377",
"type": "blogpost",
"subs": {
"0": {
"text": "When a script window is frontmost, you can now copy its address to the clipboard.",
"created": "Sun, 17 Jul 2011 13:36:56 GMT",
"pgfnum": "378"
},
"1": {
"text": "This is useful when coding, when you want to write a call to the script you're looking at.",
"created": "Sun, 17 Jul 2011 13:37:09 GMT",
"pgfnum": "379"
},
"2": {
"text": "Before this, you had to right-click in the title bar and do a Copy address from the Table menu.",
"created": "Sun, 17 Jul 2011 13:37:24 GMT",
"pgfnum": "380"
},
"3": {
"text": "Removes a bunch of steps. :-)",
"created": "Sun, 17 Jul 2011 13:37:52 GMT",
"pgfnum": "381"
},
"4": {
"text": "Parts",
"created": "Sun, 17 Jul 2011 13:38:17 GMT",
"pgfnum": "382",
"subs": {
"0": {
"text": "system.menus.scripts.copyAddressCommand",
"created": "Sun, 17 Jul 2011 13:38:18 GMT",
"pgfnum": "383"
},
"1": {
"text": "system.menus.modals.scpt",
"created": "Sun, 17 Jul 2011 13:39:10 GMT",
"pgfnum": "384"
}
}
}
}
},
"4": {
"text": "Better error message for Blorkmark button",
"created": "Sun, 17 Jul 2011 13:23:53 GMT",
"domain": "bettererrormessage.blorkmark.net",
"pgfnum": "372",
"type": "blogpost",
"subs": {
"0": {
"text": "When the user enters the name of a domain that's not one of the ones we manage, the error message is very unhelpful. Let's see if we can do better.",
"created": "Sun, 17 Jul 2011 13:24:06 GMT",
"pgfnum": "373",
"subs": {
"0": {
"text": "Can't get the address of \"ChangeResourceRecordSetsResponse\" because the table doesn't have an object with that name."
}
}
},
"1": {
"text": "Improved messages:",
"created": "Sun, 17 Jul 2011 14:06:13 GMT",
"pgfnum": "385",
"subs": {
"0": {
"text": "Couldn't allocate the name \"test13.blorkmark.nest\" because there was an error: \"Unable to determine service/operation name to be authorized.\"",
"created": "Sun, 17 Jul 2011 14:06:21 GMT",
"pgfnum": "386"
},
"1": {
"text": "Couldn't allocate the name \"test13.blorkmark.net\" because there was an error: \"Tried to create resource record set test13.blorkmark.net., type CNAME but it already exists.\""
}
}
},
"2": {
"text": "The latter half is the message that's returned to us from Amazon, which is very vague and not very helpful. We try, as usual, to translate it into terms that make sense to the user, but also provide the text of the message so techies can debug, if it doesn't seem like there's a problem with the name.",
"created": "Sun, 17 Jul 2011 14:06:44 GMT",
"pgfnum": "387"
},
"3": {
"text": "Parts",
"created": "Sun, 17 Jul 2011 13:28:08 GMT",
"pgfnum": "375",
"subs": {
"0": {
"text": "s3.route53.createRecord",
"created": "Sun, 17 Jul 2011 13:28:10 GMT",
"pgfnum": "376"
}
}
}
}
}
}
},
"12": {
"text": "7/15/11 by DW",
"created": "Fri, 15 Jul 2011 13:26:47 GMT",
"pgfnum": "351",
"subs": {
"0": {
"text": "Outline attributes window",
"created": "Fri, 15 Jul 2011 23:06:30 GMT",
"pgfnum": "361",
"type": "blogpost",
"subs": {
"0": {
"text": "A new \"View Attributes\" command in the Outliner menu. When you choose it, a window opens, showing the attributes that are invisibly attached to the headline that the outliner cursor points to.",
"created": "Fri, 15 Jul 2011 23:07:07 GMT",
"pgfnum": "363"
},
"1": {
"text": "When you move the cursor, the contents of the window automatically changes.",
"created": "Fri, 15 Jul 2011 23:08:54 GMT",
"pgfnum": "368"
},
"2": {
"text": "So when you're editing in your World Outline window, you may want to leave this window open, so you can glance at the attributes as you're working.",
"created": "Fri, 15 Jul 2011 23:09:10 GMT",
"pgfnum": "369"
},
"3": {
"text": "Parts",
"created": "Fri, 15 Jul 2011 23:07:11 GMT",
"pgfnum": "364",
"subs": {
"0": {
"text": "opmlEditor.menuCommands.openAttributesWindow",
"created": "Fri, 15 Jul 2011 23:07:13 GMT",
"pgfnum": "365"
},
"1": {
"text": "system.menus.menubar",
"created": "Fri, 15 Jul 2011 23:07:21 GMT",
"pgfnum": "366"
},
"2": {
"text": "opmlEditor.init"
},
"3": {
"text": "opmleditor.opCursorMovedCallback",
"created": "Fri, 15 Jul 2011 23:07:47 GMT",
"pgfnum": "367"
}
}
}
}
},
"1": {
"text": "Earlier init for blorkmark table",
"created": "Fri, 15 Jul 2011 13:28:55 GMT",
"pgfnum": "356",
"type": "blogpost",
"subs": {
"0": {
"text": "The table that contains the domains we can allocate blorkmarks from, user.opmleditor.blorkmark.domains, wasn't getting initialized in time, on a virgin install.",
"created": "Fri, 15 Jul 2011 13:29:14 GMT",
"pgfnum": "357"
},
"1": {
"text": "Didn't have repeatable steps, so I looked at the code and decided it couldn't hurt to init it from opmleEditor.init. I keep forgetting how fast these init scripts run on today's hardware. A tiny drop in the ocean.",
"created": "Fri, 15 Jul 2011 13:32:07 GMT",
"pgfnum": "359"
},
"2": {
"text": "Note that I didn't actually have to do a virgin install to verify this. Any of my servers would do, since none of them have been used to create a blorkmark.",
"created": "Fri, 15 Jul 2011 13:31:34 GMT",
"pgfnum": "358"
}
}
},
"2": {
"text": "Added blorkmark.com",
"created": "Fri, 15 Jul 2011 13:26:48 GMT",
"pgfnum": "352",
"type": "blogpost",
"subs": {
"0": {
"text": "The list of domains we can allocate blorkmarks for, in the default install, now includes blorkmark.com.",
"created": "Fri, 15 Jul 2011 13:28:13 GMT",
"pgfnum": "354"
},
"1": {
"text": "The others are: blorkmark.net, blorkosphere.com and mageddon.org.",
"created": "Fri, 15 Jul 2011 13:27:13 GMT",
"pgfnum": "353"
},
"2": {
"text": "This required an update to opmlEditor.blorkmark.init.",
"created": "Fri, 15 Jul 2011 13:28:41 GMT",
"pgfnum": "355"
}
}
}
}
},
"13": {
"text": "7/14/11 by DW",
"created": "Thu, 14 Jul 2011 13:26:07 GMT",
"pgfnum": "325",
"subs": {
"0": {
"text": "Number of hits per domain",
"created": "Thu, 14 Jul 2011 23:39:45 GMT",
"pgfnum": "347",
"type": "blogpost",
"subs": {
"0": {
"text": "Added a readout on the domains page that shows the number of hits each of your blorkmarks has gotten. There were some big surprises in mine, maybe there will be some for you too. Screen shot.",
"created": "Thu, 14 Jul 2011 23:39:52 GMT",
"pgfnum": "348"
}
}
},
"1": {
"text": "worldOutline.root dns prefs",
"created": "Thu, 14 Jul 2011 22:39:57 GMT",
"pgfnum": "333",
"type": "blogpost",
"subs": {
"0": {
"text": "New table, config.worldOutline.prefs.dns. Four values.",
"created": "Thu, 14 Jul 2011 22:40:05 GMT",
"pgfnum": "334",
"subs": {
"0": {
"text": "enabled -- default false.",
"created": "Thu, 14 Jul 2011 22:40:27 GMT",
"pgfnum": "335"
},
"1": {
"text": "dnsApiServer -- the server we call to allocate host names.",
"created": "Thu, 14 Jul 2011 22:40:32 GMT",
"pgfnum": "336"
},
"2": {
"text": "cname -- the canonical name for this server.",
"created": "Thu, 14 Jul 2011 22:40:57 GMT",
"pgfnum": "337"
},
"3": {
"text": "domain -- the domain we allocate from.",
"created": "Thu, 14 Jul 2011 22:41:10 GMT",
"pgfnum": "338"
}
}
},
"1": {
"text": "Obviously, nothing happens if enabled is false.",
"created": "Thu, 14 Jul 2011 22:41:39 GMT",
"pgfnum": "339"
},
"2": {
"text": "If it's true, when a new user is created, his domain attribute is set as follows. We take his username, and combine it with the domain, to form the domain. So if the domain pref is \"worldoutline.org\" and the user's name is \"fred\" -- it will be fred.worldoutline.org.",
"created": "Thu, 14 Jul 2011 22:41:53 GMT",
"pgfnum": "340"
},
"3": {
"text": "We call the indicated dnsApiServer to do the allocation. The format of the server spec is the same as the format used in the editor. xmlrpc://foo.myname.com/RPC2",
"created": "Thu, 14 Jul 2011 22:43:01 GMT",
"pgfnum": "341"
},
"4": {
"text": "Screen shot of my dns prefs table.",
"created": "Thu, 14 Jul 2011 23:27:10 GMT",
"pgfnum": "345",
"subs": {
"0": {
"text": "
",
"created": "Thu, 14 Jul 2011 23:27:17 GMT",
"pgfnum": "346"
}
}
},
"5": {
"text": "I tested it with the first group of outliner testers, and it worked great! :-)",
"created": "Thu, 14 Jul 2011 23:23:43 GMT",
"pgfnum": "342",
"subs": {
"0": {
"text": "http://russgum.worldoutline.org/"
},
"1": {
"text": "http://erikweese.worldoutline.org/"
},
"2": {
"text": "http://karlmay.worldoutline.org/"
},
"3": {
"text": "http://roland.worldoutline.org/"
},
"4": {
"text": "http://wludwick.worldoutline.org/"
}
}
},
"6": {
"text": "Parts",
"created": "Thu, 14 Jul 2011 23:24:46 GMT",
"pgfnum": "344",
"subs": {
"0": {
"text": "worldOutlineSuite.init"
},
"1": {
"text": "worldOutlineSuite.setUserDomain"
},
"2": {
"text": "worldOutlineSuite.viewNewUser"
}
}
}
}
},
"2": {
"text": "dnsApi2.root",
"created": "Thu, 14 Jul 2011 13:26:08 GMT",
"pgfnum": "326",
"type": "blogpost",
"subs": {
"0": {
"text": "Released and documented.",
"created": "Thu, 14 Jul 2011 13:26:12 GMT",
"pgfnum": "327"
},
"1": {
"text": "http://dnsapidocs.scripting.com/",
"created": "Thu, 14 Jul 2011 13:26:20 GMT",
"pgfnum": "328"
},
"2": {
"text": "One additional bit -- if you installed the Route 53 RPC handler earlier this week, you should uninstall it.",
"created": "Thu, 14 Jul 2011 13:27:42 GMT",
"pgfnum": "329"
},
"3": {
"text": "1. Set config.route53.prefs.flRpcEnabled to false.",
"created": "Thu, 14 Jul 2011 13:28:14 GMT",
"pgfnum": "330"
},
"4": {
"text": "That's really all you have to do. At some point I will remove the RPC handler code altogether.",
"created": "Thu, 14 Jul 2011 13:29:15 GMT",
"pgfnum": "331"
},
"5": {
"text": "dnsApi2.root is much better at this.",
"created": "Thu, 14 Jul 2011 13:29:32 GMT",
"pgfnum": "332"
}
}
}
}
},
"14": {
"text": "7/13/11 by DW",
"created": "Wed, 13 Jul 2011 13:36:11 GMT",
"pgfnum": "258",
"subs": {
"0": {
"text": "dnsApi2.root",
"created": "Wed, 13 Jul 2011 21:59:24 GMT",
"domain": "goody.blorkmark.net",
"pgfnum": "288",
"type": "blogpost",
"subs": {
"0": {
"text": "Started to work on the RPC handler in the route53 table and realized we're going to need all the services of a Tool. So I switched gears, and started dnsApi2.root. It runs off Amazon Route 53 only.",
"created": "Wed, 13 Jul 2011 22:54:50 GMT",
"pgfnum": "290"
}
}
},
"1": {
"text": "Viewing my Blork news in the World Outline",
"created": "Wed, 13 Jul 2011 15:48:59 GMT",
"pgfnum": "275",
"type": "blogpost",
"subs": {
"0": {
"text": "I wanted to include my linkblog in the world outline under \"My Sites\" but there was a missing bit of OPML.",
"created": "Wed, 13 Jul 2011 15:50:27 GMT",
"pgfnum": "277"
},
"1": {
"text": "Now, each feed has an OPML file that links into the feed archive. From there, you can view each feed in the world outline, just like any other feed.",
"created": "Wed, 13 Jul 2011 15:50:45 GMT",
"pgfnum": "278"
},
"2": {
"text": "This is where my OPML file is.",
"created": "Wed, 13 Jul 2011 16:43:27 GMT",
"pgfnum": "285"
},
"3": {
"text": "http://static.scripting.com/myReallySimple/linkblog.opml",
"created": "Wed, 13 Jul 2011 16:43:33 GMT",
"pgfnum": "286"
},
"4": {
"text": "Here's the archive for this month. I think it looks pretty cool. :-)",
"created": "Wed, 13 Jul 2011 15:54:53 GMT",
"pgfnum": "281"
},
"5": {
"text": "I've included my OPML, as promised, under My Sites. And of course given it a nice blorkmark.",
"created": "Wed, 13 Jul 2011 15:49:15 GMT",
"pgfnum": "276",
"type": "include",
"url": "http://static.scripting.com/myReallySimple/linkblog.opml",
"subs": {
"0": {
"text": "2010",
"subs": {
"0": {
"text": "December 2010",
"subs": {
"0": {
"text": "Saturday, December 25, 2010",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2010/12/25/linkblog.xml",
"#type": "feed",
"folder": "December 2010"
},
"1": {
"text": "Thursday, December 30, 2010",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2010/12/30/linkblog.xml",
"#type": "feed",
"folder": "December 2010"
}
}
}
}
},
"1": {
"text": "2011",
"subs": {
"0": {
"text": "January 2011",
"subs": {
"0": {
"text": "Tuesday, January 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/04/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"1": {
"text": "Friday, January 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/07/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"2": {
"text": "Saturday, January 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/08/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"3": {
"text": "Monday, January 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/10/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"4": {
"text": "Tuesday, January 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/11/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"5": {
"text": "Wednesday, January 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/12/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"6": {
"text": "Thursday, January 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/13/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"7": {
"text": "Friday, January 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/14/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"8": {
"text": "Saturday, January 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/15/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"9": {
"text": "Sunday, January 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/16/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"10": {
"text": "Tuesday, January 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/18/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"11": {
"text": "Wednesday, January 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/19/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"12": {
"text": "Thursday, January 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/20/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"13": {
"text": "Friday, January 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/21/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"14": {
"text": "Saturday, January 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/22/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"15": {
"text": "Monday, January 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/24/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"16": {
"text": "Tuesday, January 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/25/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"17": {
"text": "Wednesday, January 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/26/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"18": {
"text": "Thursday, January 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/27/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"19": {
"text": "Saturday, January 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/29/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"20": {
"text": "Sunday, January 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/30/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
},
"21": {
"text": "Monday, January 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/01/31/linkblog.xml",
"#type": "feed",
"folder": "January 2011"
}
}
},
"1": {
"text": "February 2011",
"subs": {
"0": {
"text": "Tuesday, February 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/01/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"1": {
"text": "Wednesday, February 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/02/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"2": {
"text": "Thursday, February 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/03/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"3": {
"text": "Friday, February 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/04/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"4": {
"text": "Saturday, February 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/05/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"5": {
"text": "Sunday, February 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/06/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"6": {
"text": "Monday, February 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/07/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"7": {
"text": "Tuesday, February 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/08/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"8": {
"text": "Wednesday, February 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/09/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"9": {
"text": "Thursday, February 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/10/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"10": {
"text": "Friday, February 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/11/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"11": {
"text": "Saturday, February 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/12/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"12": {
"text": "Sunday, February 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/13/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"13": {
"text": "Monday, February 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/14/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"14": {
"text": "Tuesday, February 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/15/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"15": {
"text": "Wednesday, February 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/16/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"16": {
"text": "Thursday, February 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/17/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"17": {
"text": "Friday, February 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/18/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"18": {
"text": "Saturday, February 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/19/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"19": {
"text": "Sunday, February 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/20/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"20": {
"text": "Monday, February 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/21/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"21": {
"text": "Tuesday, February 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/22/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"22": {
"text": "Wednesday, February 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/23/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"23": {
"text": "Thursday, February 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/24/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"24": {
"text": "Friday, February 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/25/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"25": {
"text": "Saturday, February 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/26/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"26": {
"text": "Sunday, February 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/27/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
},
"27": {
"text": "Monday, February 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/02/28/linkblog.xml",
"#type": "feed",
"folder": "February 2011"
}
}
},
"2": {
"text": "March 2011",
"subs": {
"0": {
"text": "Tuesday, March 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/01/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"1": {
"text": "Wednesday, March 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/02/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"2": {
"text": "Thursday, March 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/03/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"3": {
"text": "Friday, March 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/04/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"4": {
"text": "Saturday, March 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/05/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"5": {
"text": "Sunday, March 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/06/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"6": {
"text": "Monday, March 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/07/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"7": {
"text": "Tuesday, March 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/08/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"8": {
"text": "Wednesday, March 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/09/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"9": {
"text": "Thursday, March 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/10/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"10": {
"text": "Friday, March 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/11/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"11": {
"text": "Saturday, March 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/12/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"12": {
"text": "Sunday, March 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/13/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"13": {
"text": "Monday, March 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/14/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"14": {
"text": "Tuesday, March 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/15/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"15": {
"text": "Wednesday, March 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/16/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"16": {
"text": "Thursday, March 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/17/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"17": {
"text": "Friday, March 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/18/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"18": {
"text": "Saturday, March 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/19/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"19": {
"text": "Sunday, March 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/20/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"20": {
"text": "Monday, March 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/21/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"21": {
"text": "Tuesday, March 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/22/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"22": {
"text": "Wednesday, March 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/23/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"23": {
"text": "Thursday, March 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/24/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"24": {
"text": "Friday, March 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/25/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"25": {
"text": "Saturday, March 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/26/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"26": {
"text": "Sunday, March 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/27/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"27": {
"text": "Monday, March 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/28/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"28": {
"text": "Tuesday, March 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/29/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"29": {
"text": "Wednesday, March 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/30/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
},
"30": {
"text": "Thursday, March 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/03/31/linkblog.xml",
"#type": "feed",
"folder": "March 2011"
}
}
},
"3": {
"text": "April 2011",
"subs": {
"0": {
"text": "Friday, April 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/01/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"1": {
"text": "Saturday, April 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/02/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"2": {
"text": "Sunday, April 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/03/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"3": {
"text": "Monday, April 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/04/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"4": {
"text": "Tuesday, April 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/05/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"5": {
"text": "Wednesday, April 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/06/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"6": {
"text": "Thursday, April 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/07/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"7": {
"text": "Friday, April 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/08/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"8": {
"text": "Saturday, April 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/09/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"9": {
"text": "Sunday, April 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/10/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"10": {
"text": "Monday, April 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/11/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"11": {
"text": "Tuesday, April 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/12/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"12": {
"text": "Wednesday, April 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/13/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"13": {
"text": "Thursday, April 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/14/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"14": {
"text": "Friday, April 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/15/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"15": {
"text": "Saturday, April 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/16/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"16": {
"text": "Sunday, April 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/17/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"17": {
"text": "Monday, April 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/18/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"18": {
"text": "Tuesday, April 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/19/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"19": {
"text": "Wednesday, April 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/20/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"20": {
"text": "Thursday, April 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/21/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"21": {
"text": "Friday, April 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/22/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"22": {
"text": "Saturday, April 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/23/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"23": {
"text": "Sunday, April 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/24/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"24": {
"text": "Monday, April 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/25/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"25": {
"text": "Tuesday, April 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/26/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"26": {
"text": "Wednesday, April 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/27/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"27": {
"text": "Thursday, April 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/28/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"28": {
"text": "Friday, April 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/29/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
},
"29": {
"text": "Saturday, April 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/04/30/linkblog.xml",
"#type": "feed",
"folder": "April 2011"
}
}
},
"4": {
"text": "May 2011",
"subs": {
"0": {
"text": "Sunday, May 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/01/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"1": {
"text": "Monday, May 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/02/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"2": {
"text": "Tuesday, May 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/03/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"3": {
"text": "Wednesday, May 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/04/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"4": {
"text": "Thursday, May 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/05/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"5": {
"text": "Friday, May 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/06/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"6": {
"text": "Saturday, May 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/07/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"7": {
"text": "Sunday, May 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/08/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"8": {
"text": "Monday, May 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/09/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"9": {
"text": "Tuesday, May 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/10/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"10": {
"text": "Wednesday, May 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/11/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"11": {
"text": "Thursday, May 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/12/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"12": {
"text": "Friday, May 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/13/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"13": {
"text": "Saturday, May 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/14/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"14": {
"text": "Sunday, May 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/15/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"15": {
"text": "Monday, May 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/16/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"16": {
"text": "Tuesday, May 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/17/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"17": {
"text": "Wednesday, May 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/18/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"18": {
"text": "Thursday, May 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/19/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"19": {
"text": "Friday, May 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/20/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"20": {
"text": "Saturday, May 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/21/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"21": {
"text": "Sunday, May 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/22/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"22": {
"text": "Monday, May 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/23/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"23": {
"text": "Tuesday, May 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/24/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"24": {
"text": "Wednesday, May 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/25/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"25": {
"text": "Thursday, May 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/26/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"26": {
"text": "Friday, May 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/27/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"27": {
"text": "Saturday, May 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/28/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"28": {
"text": "Sunday, May 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/29/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"29": {
"text": "Monday, May 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/30/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
},
"30": {
"text": "Tuesday, May 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/05/31/linkblog.xml",
"#type": "feed",
"folder": "May 2011"
}
}
},
"5": {
"text": "June 2011",
"subs": {
"0": {
"text": "Wednesday, June 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/01/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"1": {
"text": "Thursday, June 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/02/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"2": {
"text": "Friday, June 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/03/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"3": {
"text": "Saturday, June 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/04/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"4": {
"text": "Sunday, June 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/05/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"5": {
"text": "Monday, June 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/06/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"6": {
"text": "Tuesday, June 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/07/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"7": {
"text": "Wednesday, June 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/08/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"8": {
"text": "Thursday, June 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/09/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"9": {
"text": "Friday, June 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/10/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"10": {
"text": "Saturday, June 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/11/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"11": {
"text": "Sunday, June 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/12/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"12": {
"text": "Monday, June 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/13/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"13": {
"text": "Tuesday, June 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/14/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"14": {
"text": "Wednesday, June 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/15/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"15": {
"text": "Thursday, June 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/16/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"16": {
"text": "Friday, June 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/17/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"17": {
"text": "Saturday, June 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/18/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"18": {
"text": "Sunday, June 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/19/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"19": {
"text": "Monday, June 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/20/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"20": {
"text": "Tuesday, June 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/21/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"21": {
"text": "Wednesday, June 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/22/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"22": {
"text": "Thursday, June 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/23/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"23": {
"text": "Friday, June 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/24/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"24": {
"text": "Saturday, June 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/25/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"25": {
"text": "Sunday, June 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/26/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"26": {
"text": "Monday, June 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/27/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"27": {
"text": "Tuesday, June 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/28/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"28": {
"text": "Wednesday, June 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/29/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
},
"29": {
"text": "Thursday, June 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/06/30/linkblog.xml",
"#type": "feed",
"folder": "June 2011"
}
}
},
"6": {
"text": "July 2011",
"subs": {
"0": {
"text": "Friday, July 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/01/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"1": {
"text": "Saturday, July 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/02/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"2": {
"text": "Sunday, July 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/03/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"3": {
"text": "Monday, July 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/04/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"4": {
"text": "Tuesday, July 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/05/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"5": {
"text": "Wednesday, July 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/06/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"6": {
"text": "Thursday, July 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/07/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"7": {
"text": "Friday, July 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/08/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"8": {
"text": "Saturday, July 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/09/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"9": {
"text": "Sunday, July 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/10/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"10": {
"text": "Monday, July 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/11/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"11": {
"text": "Tuesday, July 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/12/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"12": {
"text": "Wednesday, July 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/13/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"13": {
"text": "Thursday, July 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/14/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"14": {
"text": "Friday, July 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/15/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"15": {
"text": "Saturday, July 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/16/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"16": {
"text": "Sunday, July 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/17/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"17": {
"text": "Monday, July 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/18/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"18": {
"text": "Tuesday, July 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/19/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"19": {
"text": "Wednesday, July 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/20/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"20": {
"text": "Thursday, July 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/21/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"21": {
"text": "Friday, July 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/22/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"22": {
"text": "Saturday, July 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/23/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"23": {
"text": "Sunday, July 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/24/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"24": {
"text": "Monday, July 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/25/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"25": {
"text": "Tuesday, July 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/26/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"26": {
"text": "Wednesday, July 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/27/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"27": {
"text": "Thursday, July 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/28/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"28": {
"text": "Friday, July 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/29/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"29": {
"text": "Saturday, July 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/30/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
},
"30": {
"text": "Sunday, July 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/07/31/linkblog.xml",
"#type": "feed",
"folder": "July 2011"
}
}
},
"7": {
"text": "August 2011",
"subs": {
"0": {
"text": "Monday, August 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/01/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"1": {
"text": "Tuesday, August 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/02/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"2": {
"text": "Wednesday, August 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/03/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"3": {
"text": "Thursday, August 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/04/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"4": {
"text": "Friday, August 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/05/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"5": {
"text": "Saturday, August 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/06/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"6": {
"text": "Sunday, August 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/07/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"7": {
"text": "Monday, August 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/08/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"8": {
"text": "Tuesday, August 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/09/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"9": {
"text": "Wednesday, August 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/10/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"10": {
"text": "Thursday, August 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/11/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"11": {
"text": "Friday, August 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/12/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"12": {
"text": "Saturday, August 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/13/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"13": {
"text": "Sunday, August 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/14/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"14": {
"text": "Monday, August 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/15/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"15": {
"text": "Tuesday, August 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/16/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"16": {
"text": "Wednesday, August 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/17/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"17": {
"text": "Thursday, August 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/18/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"18": {
"text": "Friday, August 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/19/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"19": {
"text": "Saturday, August 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/20/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"20": {
"text": "Sunday, August 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/21/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"21": {
"text": "Monday, August 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/22/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"22": {
"text": "Tuesday, August 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/23/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"23": {
"text": "Wednesday, August 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/24/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"24": {
"text": "Thursday, August 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/25/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"25": {
"text": "Friday, August 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/26/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"26": {
"text": "Saturday, August 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/27/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"27": {
"text": "Sunday, August 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/28/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"28": {
"text": "Monday, August 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/29/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"29": {
"text": "Tuesday, August 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/30/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
},
"30": {
"text": "Wednesday, August 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/08/31/linkblog.xml",
"#type": "feed",
"folder": "August 2011"
}
}
},
"8": {
"text": "September 2011",
"subs": {
"0": {
"text": "Thursday, September 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/01/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"1": {
"text": "Friday, September 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/02/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"2": {
"text": "Saturday, September 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/03/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"3": {
"text": "Sunday, September 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/04/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"4": {
"text": "Monday, September 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/05/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"5": {
"text": "Tuesday, September 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/06/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"6": {
"text": "Wednesday, September 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/07/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"7": {
"text": "Thursday, September 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/08/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"8": {
"text": "Friday, September 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/09/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"9": {
"text": "Saturday, September 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/10/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"10": {
"text": "Sunday, September 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/11/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"11": {
"text": "Monday, September 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/12/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"12": {
"text": "Tuesday, September 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/13/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"13": {
"text": "Wednesday, September 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/14/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"14": {
"text": "Thursday, September 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/15/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"15": {
"text": "Friday, September 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/16/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"16": {
"text": "Saturday, September 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/17/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"17": {
"text": "Sunday, September 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/18/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"18": {
"text": "Monday, September 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/19/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"19": {
"text": "Tuesday, September 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/20/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"20": {
"text": "Wednesday, September 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/21/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"21": {
"text": "Thursday, September 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/22/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"22": {
"text": "Friday, September 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/23/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"23": {
"text": "Saturday, September 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/24/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"24": {
"text": "Sunday, September 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/25/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"25": {
"text": "Monday, September 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/26/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"26": {
"text": "Tuesday, September 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/27/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"27": {
"text": "Wednesday, September 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/28/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"28": {
"text": "Thursday, September 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/29/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
},
"29": {
"text": "Friday, September 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/09/30/linkblog.xml",
"#type": "feed",
"folder": "September 2011"
}
}
},
"9": {
"text": "October 2011",
"subs": {
"0": {
"text": "Saturday, October 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/01/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"1": {
"text": "Sunday, October 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/02/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"2": {
"text": "Monday, October 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/03/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"3": {
"text": "Tuesday, October 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/04/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"4": {
"text": "Wednesday, October 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/05/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"5": {
"text": "Thursday, October 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/06/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"6": {
"text": "Friday, October 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/07/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"7": {
"text": "Saturday, October 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/08/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"8": {
"text": "Sunday, October 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/09/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"9": {
"text": "Monday, October 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/10/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"10": {
"text": "Tuesday, October 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/11/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"11": {
"text": "Wednesday, October 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/12/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"12": {
"text": "Thursday, October 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/13/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"13": {
"text": "Friday, October 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/14/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"14": {
"text": "Saturday, October 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/15/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"15": {
"text": "Sunday, October 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/16/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"16": {
"text": "Monday, October 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/17/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"17": {
"text": "Tuesday, October 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/18/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"18": {
"text": "Wednesday, October 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/19/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"19": {
"text": "Thursday, October 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/20/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"20": {
"text": "Friday, October 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/21/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"21": {
"text": "Saturday, October 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/22/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"22": {
"text": "Sunday, October 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/23/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"23": {
"text": "Monday, October 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/24/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"24": {
"text": "Tuesday, October 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/25/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"25": {
"text": "Wednesday, October 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/26/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"26": {
"text": "Thursday, October 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/27/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"27": {
"text": "Friday, October 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/28/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"28": {
"text": "Saturday, October 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/29/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"29": {
"text": "Sunday, October 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/30/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
},
"30": {
"text": "Monday, October 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/10/31/linkblog.xml",
"#type": "feed",
"folder": "October 2011"
}
}
},
"10": {
"text": "November 2011",
"subs": {
"0": {
"text": "Tuesday, November 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/01/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"1": {
"text": "Wednesday, November 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/02/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"2": {
"text": "Thursday, November 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/03/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"3": {
"text": "Friday, November 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/04/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"4": {
"text": "Saturday, November 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/05/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"5": {
"text": "Sunday, November 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/06/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"6": {
"text": "Monday, November 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/07/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"7": {
"text": "Tuesday, November 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/08/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"8": {
"text": "Wednesday, November 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/09/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"9": {
"text": "Thursday, November 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/10/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"10": {
"text": "Friday, November 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/11/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"11": {
"text": "Saturday, November 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/12/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"12": {
"text": "Sunday, November 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/13/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"13": {
"text": "Monday, November 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/14/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"14": {
"text": "Tuesday, November 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/15/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"15": {
"text": "Wednesday, November 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/16/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"16": {
"text": "Thursday, November 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/17/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"17": {
"text": "Friday, November 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/18/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"18": {
"text": "Saturday, November 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/19/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"19": {
"text": "Sunday, November 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/20/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"20": {
"text": "Monday, November 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/21/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"21": {
"text": "Tuesday, November 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/22/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"22": {
"text": "Wednesday, November 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/23/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"23": {
"text": "Thursday, November 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/24/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"24": {
"text": "Friday, November 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/25/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"25": {
"text": "Saturday, November 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/26/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"26": {
"text": "Sunday, November 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/27/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"27": {
"text": "Monday, November 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/28/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"28": {
"text": "Tuesday, November 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/29/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
},
"29": {
"text": "Wednesday, November 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/11/30/linkblog.xml",
"#type": "feed",
"folder": "November 2011"
}
}
},
"11": {
"text": "December 2011",
"subs": {
"0": {
"text": "Thursday, December 1, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/01/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"1": {
"text": "Friday, December 2, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/02/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"2": {
"text": "Saturday, December 3, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/03/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"3": {
"text": "Sunday, December 4, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/04/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"4": {
"text": "Monday, December 5, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/05/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"5": {
"text": "Tuesday, December 6, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/06/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"6": {
"text": "Wednesday, December 7, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/07/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"7": {
"text": "Thursday, December 8, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/08/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"8": {
"text": "Friday, December 9, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/09/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"9": {
"text": "Saturday, December 10, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/10/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"10": {
"text": "Sunday, December 11, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/11/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"11": {
"text": "Monday, December 12, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/12/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"12": {
"text": "Tuesday, December 13, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/13/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"13": {
"text": "Wednesday, December 14, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/14/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"14": {
"text": "Thursday, December 15, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/15/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"15": {
"text": "Friday, December 16, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/16/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"16": {
"text": "Saturday, December 17, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/17/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"17": {
"text": "Sunday, December 18, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/18/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"18": {
"text": "Monday, December 19, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/19/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"19": {
"text": "Tuesday, December 20, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/20/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"20": {
"text": "Wednesday, December 21, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/21/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"21": {
"text": "Thursday, December 22, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/22/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"22": {
"text": "Friday, December 23, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/23/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"23": {
"text": "Saturday, December 24, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/24/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"24": {
"text": "Sunday, December 25, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/25/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"25": {
"text": "Monday, December 26, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/26/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"26": {
"text": "Tuesday, December 27, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/27/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"27": {
"text": "Wednesday, December 28, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/28/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"28": {
"text": "Thursday, December 29, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/29/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"29": {
"text": "Friday, December 30, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/30/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
},
"30": {
"text": "Saturday, December 31, 2011",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2011/12/31/linkblog.xml",
"#type": "feed",
"folder": "December 2011"
}
}
}
}
},
"2": {
"text": "2012",
"subs": {
"0": {
"text": "January 2012",
"subs": {
"0": {
"text": "Sunday, January 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/01/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"1": {
"text": "Monday, January 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/02/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"2": {
"text": "Tuesday, January 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/03/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"3": {
"text": "Wednesday, January 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/04/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"4": {
"text": "Thursday, January 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/05/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"5": {
"text": "Friday, January 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/06/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"6": {
"text": "Saturday, January 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/07/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"7": {
"text": "Sunday, January 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/08/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"8": {
"text": "Monday, January 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/09/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"9": {
"text": "Tuesday, January 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/10/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"10": {
"text": "Wednesday, January 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/11/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"11": {
"text": "Thursday, January 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/12/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"12": {
"text": "Friday, January 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/13/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"13": {
"text": "Saturday, January 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/14/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"14": {
"text": "Sunday, January 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/15/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"15": {
"text": "Monday, January 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/16/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"16": {
"text": "Tuesday, January 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/17/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"17": {
"text": "Wednesday, January 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/18/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"18": {
"text": "Thursday, January 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/19/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"19": {
"text": "Friday, January 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/20/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"20": {
"text": "Saturday, January 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/21/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"21": {
"text": "Sunday, January 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/22/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"22": {
"text": "Monday, January 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/23/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"23": {
"text": "Tuesday, January 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/24/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"24": {
"text": "Wednesday, January 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/25/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"25": {
"text": "Thursday, January 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/26/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"26": {
"text": "Friday, January 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/27/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"27": {
"text": "Saturday, January 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/28/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"28": {
"text": "Sunday, January 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/29/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"29": {
"text": "Monday, January 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/30/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
},
"30": {
"text": "Tuesday, January 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/01/31/linkblog.xml",
"#type": "feed",
"folder": "January 2012"
}
}
},
"1": {
"text": "February 2012",
"subs": {
"0": {
"text": "Wednesday, February 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/01/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"1": {
"text": "Thursday, February 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/02/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"2": {
"text": "Friday, February 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/03/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"3": {
"text": "Saturday, February 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/04/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"4": {
"text": "Sunday, February 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/05/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"5": {
"text": "Monday, February 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/06/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"6": {
"text": "Tuesday, February 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/07/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"7": {
"text": "Wednesday, February 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/08/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"8": {
"text": "Thursday, February 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/09/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"9": {
"text": "Friday, February 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/10/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"10": {
"text": "Saturday, February 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/11/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"11": {
"text": "Sunday, February 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/12/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"12": {
"text": "Monday, February 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/13/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"13": {
"text": "Tuesday, February 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/14/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"14": {
"text": "Wednesday, February 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/15/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"15": {
"text": "Thursday, February 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/16/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"16": {
"text": "Friday, February 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/17/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"17": {
"text": "Saturday, February 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/18/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"18": {
"text": "Sunday, February 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/19/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"19": {
"text": "Monday, February 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/20/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"20": {
"text": "Tuesday, February 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/21/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"21": {
"text": "Wednesday, February 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/22/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"22": {
"text": "Thursday, February 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/23/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"23": {
"text": "Friday, February 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/24/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"24": {
"text": "Saturday, February 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/25/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"25": {
"text": "Sunday, February 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/26/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"26": {
"text": "Monday, February 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/27/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"27": {
"text": "Tuesday, February 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/28/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
},
"28": {
"text": "Wednesday, February 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/02/29/linkblog.xml",
"#type": "feed",
"folder": "February 2012"
}
}
},
"2": {
"text": "March 2012",
"subs": {
"0": {
"text": "Thursday, March 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/01/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"1": {
"text": "Friday, March 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/02/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"2": {
"text": "Saturday, March 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/03/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"3": {
"text": "Sunday, March 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/04/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"4": {
"text": "Monday, March 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/05/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"5": {
"text": "Tuesday, March 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/06/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"6": {
"text": "Wednesday, March 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/07/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"7": {
"text": "Thursday, March 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/08/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"8": {
"text": "Friday, March 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/09/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"9": {
"text": "Saturday, March 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/10/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"10": {
"text": "Sunday, March 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/11/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"11": {
"text": "Monday, March 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/12/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"12": {
"text": "Tuesday, March 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/13/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"13": {
"text": "Wednesday, March 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/14/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"14": {
"text": "Thursday, March 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/15/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"15": {
"text": "Friday, March 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/16/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"16": {
"text": "Saturday, March 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/17/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"17": {
"text": "Sunday, March 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/18/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"18": {
"text": "Monday, March 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/19/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"19": {
"text": "Tuesday, March 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/20/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"20": {
"text": "Wednesday, March 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/21/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"21": {
"text": "Thursday, March 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/22/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"22": {
"text": "Friday, March 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/23/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"23": {
"text": "Saturday, March 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/24/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"24": {
"text": "Sunday, March 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/25/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"25": {
"text": "Monday, March 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/26/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"26": {
"text": "Tuesday, March 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/27/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"27": {
"text": "Wednesday, March 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/28/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"28": {
"text": "Thursday, March 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/29/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"29": {
"text": "Friday, March 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/30/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
},
"30": {
"text": "Saturday, March 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/03/31/linkblog.xml",
"#type": "feed",
"folder": "March 2012"
}
}
},
"3": {
"text": "April 2012",
"subs": {
"0": {
"text": "Sunday, April 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/01/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"1": {
"text": "Monday, April 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/02/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"2": {
"text": "Tuesday, April 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/03/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"3": {
"text": "Wednesday, April 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/04/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"4": {
"text": "Thursday, April 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/05/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"5": {
"text": "Friday, April 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/06/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"6": {
"text": "Saturday, April 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/07/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"7": {
"text": "Sunday, April 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/08/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"8": {
"text": "Monday, April 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/09/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"9": {
"text": "Tuesday, April 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/10/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"10": {
"text": "Wednesday, April 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/11/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"11": {
"text": "Thursday, April 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/12/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"12": {
"text": "Friday, April 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/13/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"13": {
"text": "Saturday, April 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/14/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"14": {
"text": "Sunday, April 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/15/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"15": {
"text": "Monday, April 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/16/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"16": {
"text": "Tuesday, April 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/17/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"17": {
"text": "Wednesday, April 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/18/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"18": {
"text": "Thursday, April 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/19/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"19": {
"text": "Friday, April 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/20/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"20": {
"text": "Saturday, April 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/21/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"21": {
"text": "Sunday, April 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/22/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"22": {
"text": "Monday, April 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/23/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"23": {
"text": "Tuesday, April 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/24/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"24": {
"text": "Wednesday, April 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/25/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"25": {
"text": "Thursday, April 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/26/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"26": {
"text": "Friday, April 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/27/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"27": {
"text": "Saturday, April 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/28/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"28": {
"text": "Sunday, April 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/29/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
},
"29": {
"text": "Monday, April 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/04/30/linkblog.xml",
"#type": "feed",
"folder": "April 2012"
}
}
},
"4": {
"text": "May 2012",
"subs": {
"0": {
"text": "Tuesday, May 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/01/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"1": {
"text": "Wednesday, May 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/02/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"2": {
"text": "Thursday, May 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/03/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"3": {
"text": "Friday, May 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/04/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"4": {
"text": "Saturday, May 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/05/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"5": {
"text": "Sunday, May 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/06/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"6": {
"text": "Monday, May 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/07/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"7": {
"text": "Tuesday, May 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/08/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"8": {
"text": "Wednesday, May 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/09/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"9": {
"text": "Thursday, May 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/10/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"10": {
"text": "Friday, May 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/11/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"11": {
"text": "Saturday, May 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/12/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"12": {
"text": "Sunday, May 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/13/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"13": {
"text": "Monday, May 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/14/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"14": {
"text": "Tuesday, May 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/15/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"15": {
"text": "Wednesday, May 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/16/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"16": {
"text": "Thursday, May 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/17/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"17": {
"text": "Friday, May 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/18/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"18": {
"text": "Saturday, May 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/19/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"19": {
"text": "Sunday, May 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/20/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"20": {
"text": "Monday, May 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/21/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"21": {
"text": "Tuesday, May 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/22/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"22": {
"text": "Wednesday, May 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/23/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"23": {
"text": "Thursday, May 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/24/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"24": {
"text": "Friday, May 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/25/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"25": {
"text": "Saturday, May 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/26/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"26": {
"text": "Sunday, May 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/27/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"27": {
"text": "Monday, May 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/28/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"28": {
"text": "Tuesday, May 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/29/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"29": {
"text": "Wednesday, May 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/30/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
},
"30": {
"text": "Thursday, May 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/05/31/linkblog.xml",
"#type": "feed",
"folder": "May 2012"
}
}
},
"5": {
"text": "June 2012",
"subs": {
"0": {
"text": "Friday, June 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/01/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"1": {
"text": "Saturday, June 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/02/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"2": {
"text": "Sunday, June 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/03/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"3": {
"text": "Monday, June 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/04/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"4": {
"text": "Tuesday, June 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/05/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"5": {
"text": "Wednesday, June 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/06/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"6": {
"text": "Thursday, June 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/07/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"7": {
"text": "Friday, June 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/08/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"8": {
"text": "Saturday, June 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/09/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"9": {
"text": "Sunday, June 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/10/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"10": {
"text": "Monday, June 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/11/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"11": {
"text": "Tuesday, June 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/12/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"12": {
"text": "Wednesday, June 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/13/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"13": {
"text": "Thursday, June 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/14/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"14": {
"text": "Friday, June 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/15/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"15": {
"text": "Saturday, June 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/16/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"16": {
"text": "Sunday, June 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/17/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"17": {
"text": "Monday, June 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/18/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"18": {
"text": "Tuesday, June 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/19/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"19": {
"text": "Wednesday, June 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/20/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"20": {
"text": "Thursday, June 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/21/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"21": {
"text": "Friday, June 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/22/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"22": {
"text": "Saturday, June 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/23/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"23": {
"text": "Sunday, June 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/24/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"24": {
"text": "Monday, June 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/25/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"25": {
"text": "Tuesday, June 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/26/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"26": {
"text": "Wednesday, June 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/27/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"27": {
"text": "Thursday, June 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/28/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"28": {
"text": "Friday, June 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/29/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
},
"29": {
"text": "Saturday, June 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/06/30/linkblog.xml",
"#type": "feed",
"folder": "June 2012"
}
}
},
"6": {
"text": "July 2012",
"subs": {
"0": {
"text": "Sunday, July 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/01/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"1": {
"text": "Monday, July 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/02/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"2": {
"text": "Tuesday, July 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/03/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"3": {
"text": "Wednesday, July 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/04/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"4": {
"text": "Thursday, July 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/05/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"5": {
"text": "Friday, July 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/06/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"6": {
"text": "Saturday, July 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/07/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"7": {
"text": "Sunday, July 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/08/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"8": {
"text": "Monday, July 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/09/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"9": {
"text": "Tuesday, July 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/10/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"10": {
"text": "Wednesday, July 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/11/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"11": {
"text": "Thursday, July 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/12/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"12": {
"text": "Friday, July 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/13/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"13": {
"text": "Saturday, July 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/14/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"14": {
"text": "Sunday, July 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/15/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"15": {
"text": "Monday, July 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/16/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"16": {
"text": "Tuesday, July 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/17/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"17": {
"text": "Wednesday, July 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/18/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"18": {
"text": "Thursday, July 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/19/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"19": {
"text": "Friday, July 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/20/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"20": {
"text": "Saturday, July 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/21/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"21": {
"text": "Sunday, July 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/22/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"22": {
"text": "Monday, July 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/23/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"23": {
"text": "Tuesday, July 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/24/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"24": {
"text": "Wednesday, July 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/25/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"25": {
"text": "Thursday, July 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/26/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"26": {
"text": "Friday, July 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/27/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"27": {
"text": "Saturday, July 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/28/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"28": {
"text": "Sunday, July 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/29/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"29": {
"text": "Monday, July 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/30/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
},
"30": {
"text": "Tuesday, July 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/07/31/linkblog.xml",
"#type": "feed",
"folder": "July 2012"
}
}
},
"7": {
"text": "August 2012",
"subs": {
"0": {
"text": "Wednesday, August 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/01/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"1": {
"text": "Thursday, August 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/02/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"2": {
"text": "Friday, August 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/03/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"3": {
"text": "Saturday, August 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/04/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"4": {
"text": "Sunday, August 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/05/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"5": {
"text": "Monday, August 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/06/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"6": {
"text": "Tuesday, August 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/07/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"7": {
"text": "Wednesday, August 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/08/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"8": {
"text": "Thursday, August 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/09/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"9": {
"text": "Friday, August 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/10/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"10": {
"text": "Saturday, August 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/11/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"11": {
"text": "Sunday, August 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/12/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"12": {
"text": "Monday, August 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/13/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"13": {
"text": "Tuesday, August 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/14/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"14": {
"text": "Wednesday, August 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/15/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"15": {
"text": "Thursday, August 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/16/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"16": {
"text": "Friday, August 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/17/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"17": {
"text": "Saturday, August 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/18/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"18": {
"text": "Sunday, August 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/19/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"19": {
"text": "Monday, August 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/20/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"20": {
"text": "Tuesday, August 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/21/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"21": {
"text": "Wednesday, August 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/22/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"22": {
"text": "Thursday, August 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/23/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"23": {
"text": "Friday, August 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/24/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"24": {
"text": "Saturday, August 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/25/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"25": {
"text": "Sunday, August 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/26/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"26": {
"text": "Monday, August 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/27/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"27": {
"text": "Tuesday, August 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/28/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"28": {
"text": "Wednesday, August 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/29/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"29": {
"text": "Thursday, August 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/30/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
},
"30": {
"text": "Friday, August 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/08/31/linkblog.xml",
"#type": "feed",
"folder": "August 2012"
}
}
},
"8": {
"text": "September 2012",
"subs": {
"0": {
"text": "Saturday, September 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/01/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"1": {
"text": "Sunday, September 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/02/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"2": {
"text": "Monday, September 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/03/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"3": {
"text": "Tuesday, September 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/04/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"4": {
"text": "Wednesday, September 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/05/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"5": {
"text": "Thursday, September 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/06/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"6": {
"text": "Friday, September 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/07/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"7": {
"text": "Saturday, September 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/08/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"8": {
"text": "Sunday, September 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/09/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"9": {
"text": "Monday, September 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/10/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"10": {
"text": "Tuesday, September 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/11/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"11": {
"text": "Wednesday, September 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/12/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"12": {
"text": "Thursday, September 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/13/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"13": {
"text": "Friday, September 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/14/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"14": {
"text": "Saturday, September 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/15/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"15": {
"text": "Sunday, September 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/16/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"16": {
"text": "Monday, September 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/17/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"17": {
"text": "Tuesday, September 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/18/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"18": {
"text": "Wednesday, September 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/19/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"19": {
"text": "Thursday, September 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/20/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"20": {
"text": "Friday, September 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/21/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"21": {
"text": "Saturday, September 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/22/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"22": {
"text": "Sunday, September 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/23/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"23": {
"text": "Monday, September 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/24/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"24": {
"text": "Tuesday, September 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/25/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"25": {
"text": "Wednesday, September 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/26/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"26": {
"text": "Thursday, September 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/27/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"27": {
"text": "Friday, September 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/28/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"28": {
"text": "Saturday, September 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/29/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
},
"29": {
"text": "Sunday, September 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/09/30/linkblog.xml",
"#type": "feed",
"folder": "September 2012"
}
}
},
"9": {
"text": "October 2012",
"subs": {
"0": {
"text": "Monday, October 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/01/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"1": {
"text": "Tuesday, October 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/02/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"2": {
"text": "Wednesday, October 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/03/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"3": {
"text": "Thursday, October 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/04/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"4": {
"text": "Friday, October 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/05/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"5": {
"text": "Saturday, October 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/06/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"6": {
"text": "Sunday, October 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/07/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"7": {
"text": "Monday, October 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/08/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"8": {
"text": "Tuesday, October 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/09/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"9": {
"text": "Wednesday, October 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/10/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"10": {
"text": "Thursday, October 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/11/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"11": {
"text": "Friday, October 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/12/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"12": {
"text": "Saturday, October 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/13/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"13": {
"text": "Sunday, October 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/14/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"14": {
"text": "Monday, October 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/15/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"15": {
"text": "Tuesday, October 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/16/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"16": {
"text": "Wednesday, October 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/17/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"17": {
"text": "Thursday, October 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/18/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"18": {
"text": "Friday, October 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/19/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"19": {
"text": "Saturday, October 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/20/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"20": {
"text": "Sunday, October 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/21/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"21": {
"text": "Monday, October 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/22/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"22": {
"text": "Tuesday, October 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/23/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"23": {
"text": "Wednesday, October 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/24/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"24": {
"text": "Thursday, October 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/25/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"25": {
"text": "Friday, October 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/26/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"26": {
"text": "Saturday, October 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/27/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"27": {
"text": "Sunday, October 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/28/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"28": {
"text": "Monday, October 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/29/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"29": {
"text": "Tuesday, October 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/30/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
},
"30": {
"text": "Wednesday, October 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/10/31/linkblog.xml",
"#type": "feed",
"folder": "October 2012"
}
}
},
"10": {
"text": "November 2012",
"subs": {
"0": {
"text": "Thursday, November 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/01/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"1": {
"text": "Friday, November 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/02/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"2": {
"text": "Saturday, November 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/03/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"3": {
"text": "Sunday, November 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/04/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"4": {
"text": "Monday, November 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/05/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"5": {
"text": "Tuesday, November 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/06/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"6": {
"text": "Wednesday, November 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/07/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"7": {
"text": "Thursday, November 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/08/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"8": {
"text": "Friday, November 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/09/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"9": {
"text": "Saturday, November 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/10/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"10": {
"text": "Sunday, November 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/11/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"11": {
"text": "Monday, November 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/12/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"12": {
"text": "Tuesday, November 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/13/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"13": {
"text": "Wednesday, November 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/14/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"14": {
"text": "Thursday, November 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/15/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"15": {
"text": "Friday, November 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/16/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"16": {
"text": "Saturday, November 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/17/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"17": {
"text": "Sunday, November 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/18/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"18": {
"text": "Monday, November 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/19/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"19": {
"text": "Tuesday, November 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/20/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"20": {
"text": "Wednesday, November 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/21/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"21": {
"text": "Thursday, November 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/22/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"22": {
"text": "Friday, November 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/23/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"23": {
"text": "Saturday, November 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/24/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"24": {
"text": "Sunday, November 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/25/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"25": {
"text": "Monday, November 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/26/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"26": {
"text": "Tuesday, November 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/27/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"27": {
"text": "Wednesday, November 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/28/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"28": {
"text": "Thursday, November 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/29/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
},
"29": {
"text": "Friday, November 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/11/30/linkblog.xml",
"#type": "feed",
"folder": "November 2012"
}
}
},
"11": {
"text": "December 2012",
"subs": {
"0": {
"text": "Saturday, December 1, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/01/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"1": {
"text": "Sunday, December 2, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/02/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"2": {
"text": "Monday, December 3, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/03/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"3": {
"text": "Tuesday, December 4, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/04/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"4": {
"text": "Wednesday, December 5, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/05/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"5": {
"text": "Thursday, December 6, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/06/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"6": {
"text": "Friday, December 7, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/07/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"7": {
"text": "Saturday, December 8, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/08/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"8": {
"text": "Sunday, December 9, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/09/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"9": {
"text": "Monday, December 10, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/10/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"10": {
"text": "Tuesday, December 11, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/11/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"11": {
"text": "Wednesday, December 12, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/12/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"12": {
"text": "Thursday, December 13, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/13/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"13": {
"text": "Friday, December 14, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/14/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"14": {
"text": "Saturday, December 15, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/15/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"15": {
"text": "Sunday, December 16, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/16/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"16": {
"text": "Monday, December 17, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/17/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"17": {
"text": "Tuesday, December 18, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/18/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"18": {
"text": "Wednesday, December 19, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/19/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"19": {
"text": "Thursday, December 20, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/20/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"20": {
"text": "Friday, December 21, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/21/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"21": {
"text": "Saturday, December 22, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/22/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"22": {
"text": "Sunday, December 23, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/23/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"23": {
"text": "Monday, December 24, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/24/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"24": {
"text": "Tuesday, December 25, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/25/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"25": {
"text": "Wednesday, December 26, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/26/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"26": {
"text": "Thursday, December 27, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/27/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"27": {
"text": "Friday, December 28, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/28/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"28": {
"text": "Saturday, December 29, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/29/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"29": {
"text": "Sunday, December 30, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/30/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
},
"30": {
"text": "Monday, December 31, 2012",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2012/12/31/linkblog.xml",
"#type": "feed",
"folder": "December 2012"
}
}
}
}
},
"3": {
"text": "2013",
"subs": {
"0": {
"text": "January 2013",
"subs": {
"0": {
"text": "Tuesday, January 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/01/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"1": {
"text": "Wednesday, January 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/02/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"2": {
"text": "Thursday, January 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/03/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"3": {
"text": "Friday, January 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/04/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"4": {
"text": "Saturday, January 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/05/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"5": {
"text": "Sunday, January 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/06/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"6": {
"text": "Monday, January 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/07/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"7": {
"text": "Tuesday, January 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/08/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"8": {
"text": "Wednesday, January 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/09/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"9": {
"text": "Thursday, January 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/10/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"10": {
"text": "Friday, January 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/11/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"11": {
"text": "Saturday, January 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/12/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"12": {
"text": "Sunday, January 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/13/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"13": {
"text": "Monday, January 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/14/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"14": {
"text": "Tuesday, January 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/15/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"15": {
"text": "Wednesday, January 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/16/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"16": {
"text": "Thursday, January 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/17/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"17": {
"text": "Friday, January 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/18/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"18": {
"text": "Saturday, January 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/19/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"19": {
"text": "Sunday, January 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/20/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"20": {
"text": "Monday, January 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/21/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"21": {
"text": "Tuesday, January 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/22/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"22": {
"text": "Wednesday, January 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/23/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"23": {
"text": "Thursday, January 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/24/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"24": {
"text": "Friday, January 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/25/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"25": {
"text": "Saturday, January 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/26/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"26": {
"text": "Sunday, January 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/27/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"27": {
"text": "Monday, January 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/28/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"28": {
"text": "Tuesday, January 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/29/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"29": {
"text": "Wednesday, January 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/30/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
},
"30": {
"text": "Thursday, January 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/01/31/linkblog.xml",
"#type": "feed",
"folder": "January 2013"
}
}
},
"1": {
"text": "February 2013",
"subs": {
"0": {
"text": "Friday, February 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/01/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"1": {
"text": "Saturday, February 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/02/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"2": {
"text": "Sunday, February 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/03/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"3": {
"text": "Monday, February 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/04/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"4": {
"text": "Tuesday, February 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/05/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"5": {
"text": "Wednesday, February 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/06/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"6": {
"text": "Thursday, February 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/07/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"7": {
"text": "Friday, February 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/08/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"8": {
"text": "Saturday, February 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/09/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"9": {
"text": "Sunday, February 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/10/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"10": {
"text": "Monday, February 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/11/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"11": {
"text": "Tuesday, February 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/12/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"12": {
"text": "Wednesday, February 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/13/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"13": {
"text": "Thursday, February 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/14/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"14": {
"text": "Friday, February 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/15/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"15": {
"text": "Saturday, February 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/16/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"16": {
"text": "Sunday, February 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/17/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"17": {
"text": "Monday, February 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/18/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"18": {
"text": "Tuesday, February 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/19/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"19": {
"text": "Wednesday, February 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/20/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"20": {
"text": "Thursday, February 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/21/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"21": {
"text": "Friday, February 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/22/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"22": {
"text": "Saturday, February 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/23/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"23": {
"text": "Sunday, February 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/24/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"24": {
"text": "Monday, February 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/25/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"25": {
"text": "Tuesday, February 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/26/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"26": {
"text": "Wednesday, February 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/27/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
},
"27": {
"text": "Thursday, February 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/02/28/linkblog.xml",
"#type": "feed",
"folder": "February 2013"
}
}
},
"2": {
"text": "March 2013",
"subs": {
"0": {
"text": "Friday, March 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/01/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"1": {
"text": "Saturday, March 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/02/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"2": {
"text": "Sunday, March 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/03/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"3": {
"text": "Monday, March 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/04/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"4": {
"text": "Tuesday, March 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/05/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"5": {
"text": "Wednesday, March 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/06/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"6": {
"text": "Thursday, March 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/07/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"7": {
"text": "Friday, March 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/08/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"8": {
"text": "Saturday, March 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/09/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"9": {
"text": "Sunday, March 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/10/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"10": {
"text": "Monday, March 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/11/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"11": {
"text": "Tuesday, March 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/12/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"12": {
"text": "Wednesday, March 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/13/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"13": {
"text": "Thursday, March 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/14/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"14": {
"text": "Friday, March 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/15/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"15": {
"text": "Saturday, March 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/16/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"16": {
"text": "Sunday, March 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/17/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"17": {
"text": "Monday, March 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/18/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"18": {
"text": "Tuesday, March 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/19/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"19": {
"text": "Wednesday, March 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/20/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"20": {
"text": "Thursday, March 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/21/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"21": {
"text": "Friday, March 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/22/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"22": {
"text": "Saturday, March 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/23/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"23": {
"text": "Sunday, March 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/24/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"24": {
"text": "Monday, March 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/25/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"25": {
"text": "Tuesday, March 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/26/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"26": {
"text": "Wednesday, March 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/27/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"27": {
"text": "Thursday, March 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/28/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"28": {
"text": "Friday, March 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/29/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"29": {
"text": "Saturday, March 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/30/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
},
"30": {
"text": "Sunday, March 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/03/31/linkblog.xml",
"#type": "feed",
"folder": "March 2013"
}
}
},
"3": {
"text": "April 2013",
"subs": {
"0": {
"text": "Monday, April 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/01/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"1": {
"text": "Tuesday, April 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/02/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"2": {
"text": "Wednesday, April 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/03/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"3": {
"text": "Thursday, April 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/04/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"4": {
"text": "Friday, April 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/05/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"5": {
"text": "Saturday, April 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/06/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"6": {
"text": "Sunday, April 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/07/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"7": {
"text": "Monday, April 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/08/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"8": {
"text": "Tuesday, April 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/09/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"9": {
"text": "Wednesday, April 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/10/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"10": {
"text": "Thursday, April 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/11/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"11": {
"text": "Friday, April 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/12/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"12": {
"text": "Saturday, April 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/13/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"13": {
"text": "Sunday, April 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/14/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"14": {
"text": "Monday, April 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/15/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"15": {
"text": "Tuesday, April 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/16/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"16": {
"text": "Wednesday, April 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/17/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"17": {
"text": "Thursday, April 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/18/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"18": {
"text": "Friday, April 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/19/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"19": {
"text": "Saturday, April 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/20/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"20": {
"text": "Sunday, April 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/21/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"21": {
"text": "Monday, April 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/22/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"22": {
"text": "Tuesday, April 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/23/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"23": {
"text": "Wednesday, April 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/24/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"24": {
"text": "Thursday, April 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/25/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"25": {
"text": "Friday, April 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/26/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"26": {
"text": "Saturday, April 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/27/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"27": {
"text": "Sunday, April 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/28/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"28": {
"text": "Monday, April 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/29/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
},
"29": {
"text": "Tuesday, April 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/04/30/linkblog.xml",
"#type": "feed",
"folder": "April 2013"
}
}
},
"4": {
"text": "May 2013",
"subs": {
"0": {
"text": "Wednesday, May 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/01/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"1": {
"text": "Thursday, May 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/02/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"2": {
"text": "Friday, May 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/03/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"3": {
"text": "Saturday, May 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/04/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"4": {
"text": "Sunday, May 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/05/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"5": {
"text": "Monday, May 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/06/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"6": {
"text": "Tuesday, May 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/07/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"7": {
"text": "Wednesday, May 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/08/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"8": {
"text": "Thursday, May 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/09/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"9": {
"text": "Friday, May 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/10/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"10": {
"text": "Saturday, May 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/11/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"11": {
"text": "Sunday, May 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/12/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"12": {
"text": "Monday, May 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/13/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"13": {
"text": "Tuesday, May 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/14/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"14": {
"text": "Wednesday, May 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/15/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"15": {
"text": "Thursday, May 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/16/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"16": {
"text": "Friday, May 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/17/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"17": {
"text": "Saturday, May 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/18/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"18": {
"text": "Sunday, May 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/19/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"19": {
"text": "Monday, May 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/20/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"20": {
"text": "Tuesday, May 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/21/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"21": {
"text": "Wednesday, May 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/22/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"22": {
"text": "Thursday, May 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/23/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"23": {
"text": "Friday, May 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/24/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"24": {
"text": "Saturday, May 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/25/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"25": {
"text": "Sunday, May 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/26/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"26": {
"text": "Monday, May 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/27/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"27": {
"text": "Tuesday, May 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/28/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"28": {
"text": "Wednesday, May 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/29/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"29": {
"text": "Thursday, May 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/30/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
},
"30": {
"text": "Friday, May 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/05/31/linkblog.xml",
"#type": "feed",
"folder": "May 2013"
}
}
},
"5": {
"text": "June 2013",
"subs": {
"0": {
"text": "Saturday, June 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/01/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"1": {
"text": "Sunday, June 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/02/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"2": {
"text": "Monday, June 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/03/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"3": {
"text": "Tuesday, June 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/04/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"4": {
"text": "Wednesday, June 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/05/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"5": {
"text": "Thursday, June 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/06/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"6": {
"text": "Friday, June 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/07/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"7": {
"text": "Saturday, June 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/08/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"8": {
"text": "Sunday, June 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/09/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"9": {
"text": "Monday, June 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/10/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"10": {
"text": "Tuesday, June 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/11/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"11": {
"text": "Wednesday, June 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/12/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"12": {
"text": "Thursday, June 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/13/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"13": {
"text": "Friday, June 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/14/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"14": {
"text": "Saturday, June 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/15/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"15": {
"text": "Sunday, June 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/16/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"16": {
"text": "Monday, June 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/17/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"17": {
"text": "Tuesday, June 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/18/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"18": {
"text": "Wednesday, June 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/19/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"19": {
"text": "Thursday, June 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/20/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"20": {
"text": "Friday, June 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/21/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"21": {
"text": "Saturday, June 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/22/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"22": {
"text": "Sunday, June 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/23/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"23": {
"text": "Monday, June 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/24/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"24": {
"text": "Tuesday, June 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/25/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"25": {
"text": "Wednesday, June 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/26/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"26": {
"text": "Thursday, June 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/27/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"27": {
"text": "Friday, June 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/28/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"28": {
"text": "Saturday, June 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/29/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
},
"29": {
"text": "Sunday, June 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/06/30/linkblog.xml",
"#type": "feed",
"folder": "June 2013"
}
}
},
"6": {
"text": "July 2013",
"subs": {
"0": {
"text": "Monday, July 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/01/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"1": {
"text": "Tuesday, July 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/02/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"2": {
"text": "Wednesday, July 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/03/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"3": {
"text": "Thursday, July 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/04/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"4": {
"text": "Friday, July 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/05/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"5": {
"text": "Saturday, July 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/06/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"6": {
"text": "Sunday, July 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/07/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"7": {
"text": "Monday, July 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/08/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"8": {
"text": "Tuesday, July 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/09/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"9": {
"text": "Wednesday, July 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/10/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"10": {
"text": "Thursday, July 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/11/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"11": {
"text": "Friday, July 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/12/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"12": {
"text": "Saturday, July 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/13/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"13": {
"text": "Sunday, July 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/14/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"14": {
"text": "Monday, July 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/15/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"15": {
"text": "Tuesday, July 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/16/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"16": {
"text": "Wednesday, July 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/17/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"17": {
"text": "Thursday, July 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/18/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"18": {
"text": "Friday, July 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/19/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"19": {
"text": "Saturday, July 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/20/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"20": {
"text": "Sunday, July 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/21/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"21": {
"text": "Monday, July 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/22/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"22": {
"text": "Tuesday, July 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/23/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"23": {
"text": "Wednesday, July 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/24/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"24": {
"text": "Thursday, July 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/25/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"25": {
"text": "Friday, July 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/26/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"26": {
"text": "Saturday, July 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/27/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"27": {
"text": "Sunday, July 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/28/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"28": {
"text": "Monday, July 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/29/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"29": {
"text": "Tuesday, July 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/30/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
},
"30": {
"text": "Wednesday, July 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/07/31/linkblog.xml",
"#type": "feed",
"folder": "July 2013"
}
}
},
"7": {
"text": "August 2013",
"subs": {
"0": {
"text": "Thursday, August 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/01/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"1": {
"text": "Friday, August 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/02/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"2": {
"text": "Saturday, August 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/03/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"3": {
"text": "Sunday, August 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/04/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"4": {
"text": "Monday, August 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/05/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"5": {
"text": "Tuesday, August 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/06/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"6": {
"text": "Wednesday, August 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/07/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"7": {
"text": "Thursday, August 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/08/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"8": {
"text": "Friday, August 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/09/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"9": {
"text": "Saturday, August 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/10/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"10": {
"text": "Sunday, August 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/11/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"11": {
"text": "Monday, August 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/12/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"12": {
"text": "Tuesday, August 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/13/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"13": {
"text": "Wednesday, August 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/14/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"14": {
"text": "Thursday, August 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/15/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"15": {
"text": "Friday, August 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/16/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"16": {
"text": "Saturday, August 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/17/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"17": {
"text": "Sunday, August 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/18/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"18": {
"text": "Monday, August 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/19/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"19": {
"text": "Tuesday, August 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/20/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"20": {
"text": "Wednesday, August 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/21/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"21": {
"text": "Thursday, August 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/22/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"22": {
"text": "Friday, August 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/23/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"23": {
"text": "Saturday, August 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/24/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"24": {
"text": "Sunday, August 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/25/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"25": {
"text": "Monday, August 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/26/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"26": {
"text": "Tuesday, August 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/27/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"27": {
"text": "Wednesday, August 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/28/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"28": {
"text": "Thursday, August 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/29/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"29": {
"text": "Friday, August 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/30/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
},
"30": {
"text": "Saturday, August 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/08/31/linkblog.xml",
"#type": "feed",
"folder": "August 2013"
}
}
},
"8": {
"text": "September 2013",
"subs": {
"0": {
"text": "Sunday, September 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/01/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"1": {
"text": "Monday, September 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/02/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"2": {
"text": "Tuesday, September 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/03/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"3": {
"text": "Wednesday, September 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/04/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"4": {
"text": "Thursday, September 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/05/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"5": {
"text": "Friday, September 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/06/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"6": {
"text": "Saturday, September 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/07/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"7": {
"text": "Sunday, September 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/08/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"8": {
"text": "Monday, September 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/09/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"9": {
"text": "Tuesday, September 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/10/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"10": {
"text": "Wednesday, September 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/11/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"11": {
"text": "Thursday, September 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/12/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"12": {
"text": "Friday, September 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/13/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"13": {
"text": "Saturday, September 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/14/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"14": {
"text": "Sunday, September 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/15/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"15": {
"text": "Monday, September 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/16/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"16": {
"text": "Tuesday, September 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/17/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"17": {
"text": "Wednesday, September 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/18/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"18": {
"text": "Thursday, September 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/19/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"19": {
"text": "Friday, September 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/20/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"20": {
"text": "Saturday, September 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/21/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"21": {
"text": "Sunday, September 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/22/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"22": {
"text": "Monday, September 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/23/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"23": {
"text": "Tuesday, September 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/24/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"24": {
"text": "Wednesday, September 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/25/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"25": {
"text": "Thursday, September 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/26/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"26": {
"text": "Friday, September 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/27/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"27": {
"text": "Saturday, September 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/28/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"28": {
"text": "Sunday, September 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/29/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
},
"29": {
"text": "Monday, September 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/09/30/linkblog.xml",
"#type": "feed",
"folder": "September 2013"
}
}
},
"9": {
"text": "October 2013",
"subs": {
"0": {
"text": "Tuesday, October 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/01/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"1": {
"text": "Wednesday, October 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/02/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"2": {
"text": "Thursday, October 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/03/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"3": {
"text": "Friday, October 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/04/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"4": {
"text": "Saturday, October 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/05/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"5": {
"text": "Sunday, October 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/06/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"6": {
"text": "Monday, October 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/07/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"7": {
"text": "Tuesday, October 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/08/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"8": {
"text": "Wednesday, October 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/09/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"9": {
"text": "Thursday, October 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/10/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"10": {
"text": "Friday, October 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/11/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"11": {
"text": "Saturday, October 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/12/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"12": {
"text": "Sunday, October 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/13/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"13": {
"text": "Monday, October 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/14/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"14": {
"text": "Tuesday, October 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/15/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"15": {
"text": "Wednesday, October 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/16/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"16": {
"text": "Thursday, October 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/17/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"17": {
"text": "Friday, October 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/18/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"18": {
"text": "Saturday, October 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/19/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"19": {
"text": "Sunday, October 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/20/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"20": {
"text": "Monday, October 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/21/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"21": {
"text": "Tuesday, October 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/22/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"22": {
"text": "Wednesday, October 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/23/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"23": {
"text": "Thursday, October 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/24/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"24": {
"text": "Friday, October 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/25/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"25": {
"text": "Saturday, October 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/26/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"26": {
"text": "Sunday, October 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/27/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"27": {
"text": "Monday, October 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/28/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"28": {
"text": "Tuesday, October 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/29/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"29": {
"text": "Wednesday, October 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/30/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
},
"30": {
"text": "Thursday, October 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/10/31/linkblog.xml",
"#type": "feed",
"folder": "October 2013"
}
}
},
"10": {
"text": "November 2013",
"subs": {
"0": {
"text": "Friday, November 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/01/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"1": {
"text": "Saturday, November 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/02/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"2": {
"text": "Sunday, November 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/03/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"3": {
"text": "Monday, November 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/04/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"4": {
"text": "Tuesday, November 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/05/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"5": {
"text": "Wednesday, November 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/06/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"6": {
"text": "Thursday, November 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/07/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"7": {
"text": "Friday, November 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/08/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"8": {
"text": "Saturday, November 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/09/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"9": {
"text": "Sunday, November 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/10/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"10": {
"text": "Monday, November 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/11/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"11": {
"text": "Tuesday, November 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/12/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"12": {
"text": "Wednesday, November 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/13/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"13": {
"text": "Thursday, November 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/14/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"14": {
"text": "Friday, November 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/15/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"15": {
"text": "Saturday, November 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/16/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"16": {
"text": "Sunday, November 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/17/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"17": {
"text": "Monday, November 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/18/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"18": {
"text": "Tuesday, November 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/19/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"19": {
"text": "Wednesday, November 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/20/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"20": {
"text": "Thursday, November 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/21/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"21": {
"text": "Friday, November 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/22/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"22": {
"text": "Saturday, November 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/23/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"23": {
"text": "Sunday, November 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/24/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"24": {
"text": "Monday, November 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/25/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"25": {
"text": "Tuesday, November 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/26/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"26": {
"text": "Wednesday, November 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/27/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"27": {
"text": "Thursday, November 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/28/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"28": {
"text": "Friday, November 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/29/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
},
"29": {
"text": "Saturday, November 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/11/30/linkblog.xml",
"#type": "feed",
"folder": "November 2013"
}
}
},
"11": {
"text": "December 2013",
"subs": {
"0": {
"text": "Sunday, December 1, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/01/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"1": {
"text": "Monday, December 2, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/02/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"2": {
"text": "Tuesday, December 3, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/03/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"3": {
"text": "Wednesday, December 4, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/04/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"4": {
"text": "Thursday, December 5, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/05/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"5": {
"text": "Friday, December 6, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/06/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"6": {
"text": "Saturday, December 7, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/07/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"7": {
"text": "Sunday, December 8, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/08/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"8": {
"text": "Monday, December 9, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/09/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"9": {
"text": "Tuesday, December 10, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/10/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"10": {
"text": "Wednesday, December 11, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/11/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"11": {
"text": "Thursday, December 12, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/12/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"12": {
"text": "Friday, December 13, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/13/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"13": {
"text": "Saturday, December 14, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/14/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"14": {
"text": "Sunday, December 15, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/15/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"15": {
"text": "Monday, December 16, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/16/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"16": {
"text": "Tuesday, December 17, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/17/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"17": {
"text": "Wednesday, December 18, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/18/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"18": {
"text": "Thursday, December 19, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/19/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"19": {
"text": "Friday, December 20, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/20/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"20": {
"text": "Saturday, December 21, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/21/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"21": {
"text": "Sunday, December 22, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/22/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"22": {
"text": "Monday, December 23, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/23/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"23": {
"text": "Tuesday, December 24, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/24/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"24": {
"text": "Wednesday, December 25, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/25/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"25": {
"text": "Thursday, December 26, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/26/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"26": {
"text": "Friday, December 27, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/27/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"27": {
"text": "Saturday, December 28, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/28/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"28": {
"text": "Sunday, December 29, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/29/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"29": {
"text": "Monday, December 30, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/30/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
},
"30": {
"text": "Tuesday, December 31, 2013",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2013/12/31/linkblog.xml",
"#type": "feed",
"folder": "December 2013"
}
}
}
}
},
"4": {
"text": "2014",
"subs": {
"0": {
"text": "January 2014",
"subs": {
"0": {
"text": "Wednesday, January 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/01/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"1": {
"text": "Thursday, January 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/02/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"2": {
"text": "Friday, January 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/03/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"3": {
"text": "Saturday, January 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/04/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"4": {
"text": "Sunday, January 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/05/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"5": {
"text": "Monday, January 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/06/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"6": {
"text": "Tuesday, January 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/07/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"7": {
"text": "Wednesday, January 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/08/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"8": {
"text": "Thursday, January 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/09/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"9": {
"text": "Friday, January 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/10/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"10": {
"text": "Saturday, January 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/11/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"11": {
"text": "Sunday, January 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/12/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"12": {
"text": "Monday, January 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/13/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"13": {
"text": "Tuesday, January 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/14/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"14": {
"text": "Wednesday, January 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/15/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"15": {
"text": "Thursday, January 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/16/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"16": {
"text": "Friday, January 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/17/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"17": {
"text": "Saturday, January 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/18/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"18": {
"text": "Sunday, January 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/19/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"19": {
"text": "Monday, January 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/20/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"20": {
"text": "Tuesday, January 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/21/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"21": {
"text": "Wednesday, January 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/22/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"22": {
"text": "Thursday, January 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/23/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"23": {
"text": "Friday, January 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/24/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"24": {
"text": "Saturday, January 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/25/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"25": {
"text": "Sunday, January 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/26/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"26": {
"text": "Monday, January 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/27/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"27": {
"text": "Tuesday, January 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/28/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"28": {
"text": "Wednesday, January 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/29/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"29": {
"text": "Thursday, January 30, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/30/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
},
"30": {
"text": "Friday, January 31, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/01/31/linkblog.xml",
"#type": "feed",
"folder": "January 2014"
}
}
},
"1": {
"text": "February 2014",
"subs": {
"0": {
"text": "Saturday, February 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/01/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"1": {
"text": "Sunday, February 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/02/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"2": {
"text": "Monday, February 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/03/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"3": {
"text": "Tuesday, February 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/04/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"4": {
"text": "Wednesday, February 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/05/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"5": {
"text": "Thursday, February 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/06/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"6": {
"text": "Friday, February 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/07/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"7": {
"text": "Saturday, February 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/08/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"8": {
"text": "Sunday, February 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/09/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"9": {
"text": "Monday, February 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/10/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"10": {
"text": "Tuesday, February 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/11/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"11": {
"text": "Wednesday, February 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/12/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"12": {
"text": "Thursday, February 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/13/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"13": {
"text": "Friday, February 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/14/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"14": {
"text": "Saturday, February 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/15/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"15": {
"text": "Monday, February 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/17/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"16": {
"text": "Tuesday, February 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/18/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"17": {
"text": "Wednesday, February 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/19/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"18": {
"text": "Thursday, February 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/20/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"19": {
"text": "Friday, February 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/21/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"20": {
"text": "Saturday, February 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/22/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"21": {
"text": "Sunday, February 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/23/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"22": {
"text": "Monday, February 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/24/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"23": {
"text": "Tuesday, February 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/25/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"24": {
"text": "Wednesday, February 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/26/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"25": {
"text": "Thursday, February 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/27/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
},
"26": {
"text": "Friday, February 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/02/28/linkblog.xml",
"#type": "feed",
"folder": "February 2014"
}
}
},
"2": {
"text": "March 2014",
"subs": {
"0": {
"text": "Saturday, March 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/01/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"1": {
"text": "Sunday, March 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/02/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"2": {
"text": "Monday, March 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/03/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"3": {
"text": "Tuesday, March 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/04/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"4": {
"text": "Wednesday, March 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/05/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"5": {
"text": "Thursday, March 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/06/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"6": {
"text": "Friday, March 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/07/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"7": {
"text": "Saturday, March 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/08/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"8": {
"text": "Sunday, March 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/09/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"9": {
"text": "Monday, March 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/10/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"10": {
"text": "Tuesday, March 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/11/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"11": {
"text": "Wednesday, March 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/12/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"12": {
"text": "Thursday, March 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/13/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"13": {
"text": "Friday, March 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/14/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"14": {
"text": "Saturday, March 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/15/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"15": {
"text": "Sunday, March 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/16/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"16": {
"text": "Monday, March 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/17/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"17": {
"text": "Tuesday, March 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/18/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"18": {
"text": "Wednesday, March 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/19/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"19": {
"text": "Thursday, March 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/20/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"20": {
"text": "Friday, March 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/21/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"21": {
"text": "Saturday, March 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/22/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"22": {
"text": "Sunday, March 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/23/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"23": {
"text": "Monday, March 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/24/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"24": {
"text": "Tuesday, March 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/25/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"25": {
"text": "Wednesday, March 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/26/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"26": {
"text": "Thursday, March 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/27/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"27": {
"text": "Friday, March 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/28/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"28": {
"text": "Saturday, March 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/29/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"29": {
"text": "Sunday, March 30, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/30/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
},
"30": {
"text": "Monday, March 31, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/03/31/linkblog.xml",
"#type": "feed",
"folder": "March 2014"
}
}
},
"3": {
"text": "April 2014",
"subs": {
"0": {
"text": "Tuesday, April 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/01/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"1": {
"text": "Wednesday, April 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/02/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"2": {
"text": "Thursday, April 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/03/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"3": {
"text": "Friday, April 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/04/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"4": {
"text": "Saturday, April 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/05/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"5": {
"text": "Sunday, April 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/06/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"6": {
"text": "Monday, April 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/07/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"7": {
"text": "Tuesday, April 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/08/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"8": {
"text": "Wednesday, April 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/09/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"9": {
"text": "Thursday, April 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/10/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"10": {
"text": "Friday, April 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/11/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"11": {
"text": "Saturday, April 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/12/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"12": {
"text": "Sunday, April 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/13/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"13": {
"text": "Monday, April 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/14/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"14": {
"text": "Tuesday, April 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/15/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"15": {
"text": "Wednesday, April 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/16/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"16": {
"text": "Thursday, April 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/17/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"17": {
"text": "Friday, April 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/18/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"18": {
"text": "Saturday, April 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/19/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"19": {
"text": "Sunday, April 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/20/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"20": {
"text": "Monday, April 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/21/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"21": {
"text": "Tuesday, April 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/22/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"22": {
"text": "Wednesday, April 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/23/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"23": {
"text": "Thursday, April 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/24/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"24": {
"text": "Friday, April 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/25/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"25": {
"text": "Saturday, April 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/26/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"26": {
"text": "Sunday, April 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/27/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"27": {
"text": "Monday, April 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/28/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"28": {
"text": "Tuesday, April 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/29/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
},
"29": {
"text": "Wednesday, April 30, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/04/30/linkblog.xml",
"#type": "feed",
"folder": "April 2014"
}
}
},
"4": {
"text": "May 2014",
"subs": {
"0": {
"text": "Thursday, May 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/01/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"1": {
"text": "Friday, May 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/02/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"2": {
"text": "Saturday, May 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/03/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"3": {
"text": "Sunday, May 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/04/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"4": {
"text": "Monday, May 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/05/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"5": {
"text": "Tuesday, May 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/06/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"6": {
"text": "Wednesday, May 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/07/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"7": {
"text": "Thursday, May 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/08/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"8": {
"text": "Friday, May 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/09/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"9": {
"text": "Saturday, May 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/10/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"10": {
"text": "Sunday, May 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/11/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"11": {
"text": "Monday, May 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/12/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"12": {
"text": "Tuesday, May 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/13/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"13": {
"text": "Wednesday, May 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/14/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"14": {
"text": "Thursday, May 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/15/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"15": {
"text": "Friday, May 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/16/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"16": {
"text": "Saturday, May 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/17/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"17": {
"text": "Sunday, May 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/18/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"18": {
"text": "Monday, May 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/19/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"19": {
"text": "Tuesday, May 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/20/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"20": {
"text": "Wednesday, May 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/21/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"21": {
"text": "Thursday, May 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/22/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"22": {
"text": "Friday, May 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/23/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"23": {
"text": "Saturday, May 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/24/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"24": {
"text": "Sunday, May 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/25/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"25": {
"text": "Monday, May 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/26/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"26": {
"text": "Tuesday, May 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/27/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"27": {
"text": "Wednesday, May 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/28/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"28": {
"text": "Thursday, May 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/29/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"29": {
"text": "Friday, May 30, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/30/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
},
"30": {
"text": "Saturday, May 31, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/05/31/linkblog.xml",
"#type": "feed",
"folder": "May 2014"
}
}
},
"5": {
"text": "June 2014",
"subs": {
"0": {
"text": "Sunday, June 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/01/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"1": {
"text": "Monday, June 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/02/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"2": {
"text": "Tuesday, June 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/03/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"3": {
"text": "Wednesday, June 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/04/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"4": {
"text": "Thursday, June 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/05/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"5": {
"text": "Friday, June 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/06/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"6": {
"text": "Saturday, June 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/07/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"7": {
"text": "Sunday, June 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/08/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"8": {
"text": "Monday, June 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/09/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"9": {
"text": "Tuesday, June 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/10/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"10": {
"text": "Wednesday, June 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/11/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"11": {
"text": "Thursday, June 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/12/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"12": {
"text": "Friday, June 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/13/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"13": {
"text": "Saturday, June 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/14/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"14": {
"text": "Sunday, June 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/15/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"15": {
"text": "Monday, June 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/16/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"16": {
"text": "Tuesday, June 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/17/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"17": {
"text": "Wednesday, June 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/18/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"18": {
"text": "Thursday, June 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/19/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"19": {
"text": "Friday, June 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/20/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"20": {
"text": "Saturday, June 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/21/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"21": {
"text": "Sunday, June 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/22/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"22": {
"text": "Monday, June 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/23/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"23": {
"text": "Tuesday, June 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/24/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"24": {
"text": "Wednesday, June 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/25/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"25": {
"text": "Thursday, June 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/26/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"26": {
"text": "Friday, June 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/27/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"27": {
"text": "Saturday, June 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/28/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"28": {
"text": "Sunday, June 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/29/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
},
"29": {
"text": "Monday, June 30, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/06/30/linkblog.xml",
"#type": "feed",
"folder": "June 2014"
}
}
},
"6": {
"text": "July 2014",
"subs": {
"0": {
"text": "Tuesday, July 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/01/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"1": {
"text": "Wednesday, July 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/02/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"2": {
"text": "Thursday, July 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/03/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"3": {
"text": "Friday, July 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/04/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"4": {
"text": "Saturday, July 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/05/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"5": {
"text": "Sunday, July 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/06/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"6": {
"text": "Monday, July 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/07/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"7": {
"text": "Tuesday, July 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/08/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"8": {
"text": "Wednesday, July 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/09/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"9": {
"text": "Thursday, July 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/10/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"10": {
"text": "Friday, July 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/11/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"11": {
"text": "Saturday, July 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/12/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"12": {
"text": "Sunday, July 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/13/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"13": {
"text": "Monday, July 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/14/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"14": {
"text": "Tuesday, July 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/15/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"15": {
"text": "Wednesday, July 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/16/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"16": {
"text": "Thursday, July 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/17/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"17": {
"text": "Friday, July 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/18/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"18": {
"text": "Saturday, July 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/19/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"19": {
"text": "Sunday, July 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/20/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"20": {
"text": "Monday, July 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/21/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"21": {
"text": "Tuesday, July 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/22/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"22": {
"text": "Wednesday, July 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/23/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"23": {
"text": "Thursday, July 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/24/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"24": {
"text": "Friday, July 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/25/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"25": {
"text": "Saturday, July 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/26/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"26": {
"text": "Sunday, July 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/27/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"27": {
"text": "Monday, July 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/28/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"28": {
"text": "Tuesday, July 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/29/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"29": {
"text": "Wednesday, July 30, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/30/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
},
"30": {
"text": "Thursday, July 31, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/07/31/linkblog.xml",
"#type": "feed",
"folder": "July 2014"
}
}
},
"7": {
"text": "August 2014",
"subs": {
"0": {
"text": "Friday, August 1, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/01/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"1": {
"text": "Saturday, August 2, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/02/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"2": {
"text": "Sunday, August 3, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/03/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"3": {
"text": "Monday, August 4, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/04/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"4": {
"text": "Tuesday, August 5, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/05/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"5": {
"text": "Wednesday, August 6, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/06/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"6": {
"text": "Thursday, August 7, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/07/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"7": {
"text": "Friday, August 8, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/08/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"8": {
"text": "Saturday, August 9, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/09/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"9": {
"text": "Sunday, August 10, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/10/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"10": {
"text": "Monday, August 11, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/11/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"11": {
"text": "Tuesday, August 12, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/12/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"12": {
"text": "Wednesday, August 13, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/13/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"13": {
"text": "Thursday, August 14, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/14/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"14": {
"text": "Friday, August 15, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/15/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"15": {
"text": "Saturday, August 16, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/16/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"16": {
"text": "Sunday, August 17, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/17/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"17": {
"text": "Monday, August 18, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/18/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"18": {
"text": "Tuesday, August 19, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/19/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"19": {
"text": "Wednesday, August 20, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/20/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"20": {
"text": "Thursday, August 21, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/21/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"21": {
"text": "Friday, August 22, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/22/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"22": {
"text": "Saturday, August 23, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/23/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"23": {
"text": "Sunday, August 24, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/24/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"24": {
"text": "Monday, August 25, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/25/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"25": {
"text": "Tuesday, August 26, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/26/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"26": {
"text": "Wednesday, August 27, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/27/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"27": {
"text": "Thursday, August 28, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/28/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
},
"28": {
"text": "Friday, August 29, 2014",
"type": "rss",
"version": "RSS2",
"xmlurl": "http://static.scripting.com/myReallySimple/2014/08/29/linkblog.xml",
"#type": "feed",
"folder": "August 2014"
}
}
}
}
}
}
},
"6": {
"text": "Where is yours? If the address of your feed's RSS is http://mysite.com/mylinks.xml, the address of your OPML is at http://mysite.com/mylinks.opml. Easy enough to figure out, I hope.",
"created": "Wed, 13 Jul 2011 15:58:07 GMT",
"pgfnum": "282"
},
"7": {
"text": "The OPML is rebuilt in the overnight script and when you post the first new item in a day.",
"created": "Wed, 13 Jul 2011 15:52:11 GMT",
"pgfnum": "280"
},
"8": {
"text": "Parts: radio2Suite.initFeed, radio2Suite.buildArchiveOpml, radio2Suite.buildRss, radio2Suite.background.everyNight.",
"created": "Wed, 13 Jul 2011 16:40:04 GMT",
"pgfnum": "283"
}
}
},
"2": {
"text": "radio2.root and your RSS archive",
"created": "Wed, 13 Jul 2011 13:36:13 GMT",
"pgfnum": "259",
"type": "blogpost",
"subs": {
"0": {
"text": "Looking at my RSS archive today and found that it wasn't updating.",
"created": "Wed, 13 Jul 2011 13:36:28 GMT",
"pgfnum": "260"
},
"1": {
"text": "Simple explanation, the code that saved the archive RSS was commented-out.",
"created": "Wed, 13 Jul 2011 14:14:05 GMT",
"pgfnum": "266"
},
"2": {
"text": "This was a mistake I made, on 3/30 of this year. Which explains why my archive stops at that point.",
"created": "Wed, 13 Jul 2011 14:14:20 GMT",
"pgfnum": "267"
},
"3": {
"text": "After this update to radio2.root, they should start updating again.",
"created": "Wed, 13 Jul 2011 14:14:45 GMT",
"pgfnum": "268"
},
"4": {
"text": "Next I have to release a maintenence script to fix all the old archives. Still diggin!",
"created": "Wed, 13 Jul 2011 14:17:41 GMT",
"pgfnum": "271"
},
"5": {
"text": "Parts",
"created": "Wed, 13 Jul 2011 14:15:14 GMT",
"pgfnum": "269",
"subs": {
"0": {
"text": "radio2Suite.publishThread",
"created": "Wed, 13 Jul 2011 14:15:15 GMT",
"pgfnum": "270"
},
"1": {
"text": "radio2Suite.background.everyMinute"
},
"2": {
"text": "radio2Suite.utilities.rebuildArchiveMarch30"
}
}
}
}
}
}
},
"15": {
"text": "7/12/11 by DW",
"created": "Tue, 12 Jul 2011 13:17:38 GMT",
"pgfnum": "233",
"subs": {
"0": {
"text": "XML-RPC interface for Amazon Route 53",
"created": "Tue, 12 Jul 2011 13:47:51 GMT",
"domain": "bigbutt.blorkosphere.com",
"pgfnum": "238",
"type": "blogpost",
"subs": {
"0": {
"text": "On the server you want to handle your Route 53 calls...",
"created": "Tue, 12 Jul 2011 16:09:02 GMT",
"pgfnum": "240",
"subs": {
"0": {
"text": "1. Update opml.root.",
"created": "Tue, 12 Jul 2011 16:09:16 GMT",
"pgfnum": "241"
},
"1": {
"text": "2. Wait till the top of the minute.",
"created": "Tue, 12 Jul 2011 16:09:21 GMT",
"pgfnum": "242"
},
"2": {
"text": "3. Go to config.route53.prefs. Set flRpcEnabled to true.",
"created": "Tue, 12 Jul 2011 16:09:30 GMT",
"pgfnum": "243"
},
"3": {
"text": "4. Wait till the top of the minute again.",
"created": "Tue, 12 Jul 2011 16:10:09 GMT",
"pgfnum": "244"
},
"4": {
"text": "Your server should now be ready to handle calls.",
"created": "Tue, 12 Jul 2011 16:10:18 GMT",
"pgfnum": "245"
}
}
},
"1": {
"text": "On the workstation",
"created": "Tue, 12 Jul 2011 16:10:42 GMT",
"pgfnum": "246",
"subs": {
"0": {
"text": "If you're happy with the domains I provide for anyone to use at no charge, you don't have to do anything. I'll provide a list here, when it's ready, and will find a place where you can get the current list from the OPML Editor you're running.",
"created": "Tue, 12 Jul 2011 16:10:50 GMT",
"pgfnum": "247"
},
"1": {
"text": "If you want to add to the list of the domains provided, you have to hand-edit the user.opmlEditor.blorkmark.domains table to add the domains you want to add. We may provide a more elegant way to do this as we bootstrap this process.",
"created": "Tue, 12 Jul 2011 16:11:38 GMT",
"pgfnum": "248"
}
}
},
"2": {
"text": "For every domain you want to serve",
"created": "Tue, 12 Jul 2011 17:10:49 GMT",
"pgfnum": "253",
"subs": {
"0": {
"text": "In whatever app you use to manage your Route 53 account, get the list of nameservers Amazon has allocated for the domain. Then tell your DNS provider to use those nameservers instead of the ones they were using.",
"created": "Tue, 12 Jul 2011 17:10:54 GMT",
"pgfnum": "254"
},
"1": {
"text": "I use Interstate 53. Very straightforward, easy to use.",
"created": "Tue, 12 Jul 2011 17:21:46 GMT",
"pgfnum": "255"
}
}
},
"3": {
"text": "Default domain list",
"created": "Tue, 12 Jul 2011 17:09:06 GMT",
"pgfnum": "249",
"subs": {
"0": {
"text": "blorkmark.net",
"created": "Tue, 12 Jul 2011 17:09:17 GMT",
"pgfnum": "250"
},
"1": {
"text": "blorkosphere.com",
"created": "Tue, 12 Jul 2011 17:10:05 GMT",
"pgfnum": "251"
},
"2": {
"text": "mageddon.org",
"created": "Tue, 12 Jul 2011 17:10:09 GMT",
"pgfnum": "252"
}
}
},
"4": {
"text": "Parts",
"created": "Tue, 12 Jul 2011 21:25:19 GMT",
"pgfnum": "256",
"subs": {
"0": {
"text": "s3.route53.init"
},
"1": {
"text": "s3.route53.rpcHandlers"
},
"2": {
"text": "s3.init"
},
"3": {
"text": "opmlEditor.init"
},
"4": {
"text": "opmlEditor.blorkmark.init"
},
"5": {
"text": "opmlEditor.blorkmark.add"
},
"6": {
"text": "opmlEditor.worldOutline.markHeadline"
}
}
}
}
},
"1": {
"text": "New verb, tcp.httpsClient",
"created": "Tue, 12 Jul 2011 13:17:39 GMT",
"pgfnum": "234",
"type": "blogpost",
"subs": {
"0": {
"text": "Mac only. Uses sys.unixShellCommand to construct a call to CURL.",
"created": "Tue, 12 Jul 2011 13:17:55 GMT",
"pgfnum": "235"
},
"1": {
"text": "Thanks to Ted Howard for putting this together.",
"created": "Tue, 12 Jul 2011 13:18:24 GMT",
"pgfnum": "236"
},
"2": {
"text": "Called from s3.route53.httpClient, which now works on both Windows and Mac.",
"created": "Tue, 12 Jul 2011 13:18:51 GMT",
"pgfnum": "237"
}
}
}
}
},
"16": {
"text": "7/11/11 by DW",
"created": "Mon, 11 Jul 2011 14:10:24 GMT",
"pgfnum": "192",
"subs": {
"0": {
"text": "Reviewing blorkmarks code",
"created": "Mon, 11 Jul 2011 16:13:04 GMT",
"pgfnum": "201",
"type": "blogpost",
"subs": {
"0": {
"text": "As a test, I've created a howto that has this domain mapped to it:",
"created": "Mon, 11 Jul 2011 16:13:10 GMT",
"pgfnum": "202"
},
"1": {
"text": "http://disposable.blorkmark.com/",
"created": "Mon, 11 Jul 2011 16:34:45 GMT",
"pgfnum": "208"
},
"2": {
"text": "The only thing I didn't like about the implementation is that it took a few seconds for the blorkmark to be established, and in those few seconds I clicked on the View button, and got confused.",
"created": "Mon, 11 Jul 2011 16:34:54 GMT",
"pgfnum": "209"
},
"3": {
"text": "I would like to make it so that my API server knows about all the domains I have available to be used.",
"created": "Mon, 11 Jul 2011 16:35:56 GMT",
"pgfnum": "210"
},
"4": {
"text": "Somehow this has to be communicated to the user. \"These are your choices.\"",
"created": "Mon, 11 Jul 2011 16:36:14 GMT",
"pgfnum": "211"
},
"5": {
"text": "However Adam thinks people will know what their choices are because they will be using their own domains.",
"created": "Mon, 11 Jul 2011 16:36:32 GMT",
"pgfnum": "212"
},
"6": {
"text": "Which suggests they will be using their own DNS API servers, but I highly doubt that.",
"created": "Mon, 11 Jul 2011 16:36:48 GMT",
"pgfnum": "213"
},
"7": {
"text": "Not sure how to proceed, and that's usually a bad sign, because anything I do now is likely to feel 100 percent incorrect six months from now.",
"created": "Mon, 11 Jul 2011 16:37:07 GMT",
"pgfnum": "214"
}
}
},
"1": {
"text": "scheduler2 callbacks",
"created": "Mon, 11 Jul 2011 14:10:25 GMT",
"pgfnum": "193",
"type": "blogpost",
"subs": {
"0": {
"text": "I wanted the ability to replace the scheduler2 status message in the About window, so I added the callbacks for this.",
"created": "Mon, 11 Jul 2011 14:10:36 GMT",
"pgfnum": "194"
},
"1": {
"text": "The callback scripts go in user.scheduler2.callbacks.statusMessage.",
"created": "Mon, 11 Jul 2011 14:11:18 GMT",
"pgfnum": "195"
},
"2": {
"text": "The scripts are called in order. They take a single parameter, the address of a string, which is initialized to the empty string.",
"created": "Mon, 11 Jul 2011 14:11:35 GMT",
"pgfnum": "197"
},
"3": {
"text": "Any of the callbacks can set the string to something other than the empty string. If one does, that becomes the status message.",
"created": "Mon, 11 Jul 2011 14:11:57 GMT",
"pgfnum": "198"
},
"4": {
"text": "I'm using it to help see what attributes are on nodes in the world outline, but I can imagine that there are other applications.",
"created": "Mon, 11 Jul 2011 14:12:36 GMT",
"pgfnum": "199"
},
"5": {
"text": "Parts",
"created": "Mon, 11 Jul 2011 14:11:26 GMT",
"pgfnum": "196",
"subs": {
"0": {
"text": "scheduler2.init"
},
"1": {
"text": "scheduler2.thread.script"
}
}
}
}
}
}
},
"17": {
"text": "7/10/11 by DW",
"created": "Sun, 10 Jul 2011 16:21:14 GMT",
"pgfnum": "180",
"subs": {
"0": {
"text": "Archiving sub-outlines",
"created": "Sun, 10 Jul 2011 16:21:15 GMT",
"pgfnum": "181",
"type": "blogpost",
"subs": {
"0": {
"text": "This feature is very similar to the one in the Instant Outliner.",
"created": "Sun, 10 Jul 2011 16:21:25 GMT",
"pgfnum": "182"
},
"1": {
"text": "Say your world outline is getting fat, and you have a lot of stuff under one headline that isn't going to change in the future. It's something you want to have around for reference, but it will never change. It's very important that it not change, because after archiving a sub-outline, you will not be able to edit it.",
"created": "Sun, 10 Jul 2011 16:21:41 GMT",
"pgfnum": "183"
},
"2": {
"text": "Put the cursor on the headline containing the material to be archived.",
"created": "Sun, 10 Jul 2011 16:22:40 GMT",
"pgfnum": "184"
},
"3": {
"text": "Choose Archive sub-outline from the World Outline sub-menu of the Outliner menu.",
"created": "Sun, 10 Jul 2011 16:23:01 GMT",
"pgfnum": "185"
},
"4": {
"text": "You'll get a confirmation prompt. Click OK.",
"created": "Sun, 10 Jul 2011 16:23:10 GMT",
"pgfnum": "186"
},
"5": {
"text": "After a few seconds the headline will collapse if it was expanded, and will become an inclusion pointing to the archive outline. When you expand it or visit it in the World Outline it will appear unchanged. But it will not be editable in the outline.",
"created": "Sun, 10 Jul 2011 16:23:25 GMT",
"pgfnum": "187"
},
"6": {
"text": "Update opml.root on both the server and workstation, and worldOutline.root on the server.",
"created": "Sun, 10 Jul 2011 16:24:44 GMT",
"pgfnum": "188"
},
"7": {
"text": "Parts",
"created": "Sun, 10 Jul 2011 16:25:05 GMT",
"pgfnum": "189",
"subs": {
"0": {
"text": "worldOutlineRpcHandlers.archiveOutline"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "opmlEditor.worldOutline.archiveSubOutline"
},
"3": {
"text": "system.menus.menubar",
"created": "Sun, 10 Jul 2011 16:25:24 GMT",
"pgfnum": "191"
}
}
}
}
}
}
},
"18": {
"text": "7/7/11 by DW",
"created": "Thu, 07 Jul 2011 23:57:04 GMT",
"pgfnum": "152",
"subs": {
"0": {
"text": "Viewing someone else's outline",
"created": "Thu, 07 Jul 2011 23:58:10 GMT",
"pgfnum": "155",
"type": "blogpost",
"subs": {
"0": {
"text": "A friend who has an account on my server reports that when he tries to get to my worknotes section, using the URL I provided him with, he gets a 500 error saying there is no worknotes section.",
"created": "Thu, 07 Jul 2011 23:58:29 GMT",
"pgfnum": "156"
},
"1": {
"text": "The problem is that the server is trying to locate the section in his outline. That's a mistake.",
"created": "Thu, 07 Jul 2011 23:59:05 GMT",
"pgfnum": "157"
},
"2": {
"text": "We're using pta^.worldoutline.adruser for two things, and it really should be used for one.",
"created": "Fri, 08 Jul 2011 00:14:01 GMT",
"pgfnum": "158",
"subs": {
"0": {
"text": "1. It's the user whose outline is being displayed.",
"created": "Fri, 08 Jul 2011 00:14:32 GMT",
"pgfnum": "159"
},
"1": {
"text": "2. It's the user who is logged in.",
"created": "Fri, 08 Jul 2011 00:14:49 GMT",
"pgfnum": "160"
}
}
},
"3": {
"text": "Obviously they can at times be different, and that's why we're having the problem here.",
"created": "Fri, 08 Jul 2011 00:14:56 GMT",
"pgfnum": "161"
},
"4": {
"text": "So we're going to call the first one pta^.worldOutline.adrOutlineOwner.",
"created": "Fri, 08 Jul 2011 00:26:39 GMT",
"pgfnum": "162"
},
"5": {
"text": "Made the necessary changes, and it works here. Going to release the parts shortly.",
"created": "Fri, 08 Jul 2011 00:57:28 GMT",
"pgfnum": "165"
},
"6": {
"text": "Parts",
"created": "Fri, 08 Jul 2011 00:51:16 GMT",
"pgfnum": "163",
"subs": {
"0": {
"text": "worldOutlineSuite.getRootOutlineUrl"
},
"1": {
"text": "worldOutlineSuite.main"
},
"2": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"3": {
"text": "worldOutlineSuite.userDefinedHostCallback"
},
"4": {
"text": "worldOutlineWebsite.[\"#filters\"].firstFilter"
}
}
}
}
},
"1": {
"text": "Getting started doc",
"created": "Thu, 07 Jul 2011 23:57:06 GMT",
"pgfnum": "153",
"subs": {
"0": {
"text": "Wrote a getting started doc for world outline authors.",
"created": "Thu, 07 Jul 2011 23:57:12 GMT",
"pgfnum": "154"
}
}
}
}
},
"19": {
"text": "7/5/11 by DW",
"created": "Tue, 05 Jul 2011 16:17:07 GMT",
"pgfnum": "102",
"subs": {
"0": {
"text": "JSON version of my world outline",
"created": "Tue, 05 Jul 2011 23:40:57 GMT",
"pgfnum": "124",
"type": "blogpost",
"subs": {
"0": {
"text": "Just trying something out to see how it performs.",
"created": "Tue, 05 Jul 2011 23:41:12 GMT",
"pgfnum": "125"
},
"1": {
"text": "There's a new pref, config.worldOutline.prefs.flSaveOutlinesAsJson, defaults false.",
"created": "Tue, 05 Jul 2011 23:41:22 GMT",
"pgfnum": "126"
},
"2": {
"text": "If it's true, when you save your outline, a JSON version is also saved.",
"created": "Tue, 05 Jul 2011 23:42:03 GMT",
"pgfnum": "127"
},
"3": {
"text": "Here's the latest version of mine. Not sure if I'm going to leave it turned on. It takes a long time to do the conversion. It's not kernel code. For my current outline it took a whopping 27 seconds.",
"created": "Tue, 05 Jul 2011 23:42:15 GMT",
"pgfnum": "128"
},
"4": {
"text": "Of course my outline is fairly large. But also of course, it's not getting any smaller. :-)",
"created": "Tue, 05 Jul 2011 23:43:23 GMT",
"pgfnum": "130"
},
"5": {
"text": "Parts",
"created": "Tue, 05 Jul 2011 23:43:40 GMT",
"pgfnum": "131",
"subs": {
"0": {
"text": "worldOutlineSuite.init"
},
"1": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"1": {
"text": "Enclosures in radio2.root",
"created": "Tue, 05 Jul 2011 16:17:14 GMT",
"pgfnum": "103",
"type": "blogpost",
"subs": {
"0": {
"text": "When uploading enclosures, if content type is binary/octet-stream, try to set it to something more specific. For example, with an MP3 the type should be audio/mpeg.",
"created": "Tue, 05 Jul 2011 16:17:20 GMT",
"pgfnum": "104"
}
}
}
}
},
"20": {
"text": "7/4/11 by DW",
"created": "Mon, 04 Jul 2011 12:47:19 GMT",
"pgfnum": "39",
"subs": {
"0": {
"text": "domains.opml",
"created": "Tue, 05 Jul 2011 00:07:04 GMT",
"pgfnum": "94",
"type": "blogpost",
"subs": {
"0": {
"text": "Makes sense that we should produce this data in OPML format.",
"created": "Tue, 05 Jul 2011 00:07:08 GMT",
"pgfnum": "95"
},
"1": {
"text": "I've linked my domains.opml into my outline.",
"created": "Tue, 05 Jul 2011 00:07:28 GMT",
"pgfnum": "96"
},
"2": {
"text": "Kind of like hooking the exhaust into the intake. :-)",
"created": "Tue, 05 Jul 2011 00:07:42 GMT",
"pgfnum": "97",
"subs": {
"0": {
"text": "There's a lot of that with OPML, it seems.",
"created": "Tue, 05 Jul 2011 00:16:01 GMT",
"pgfnum": "101"
}
}
},
"3": {
"text": "To get your domains.opml to build, save your world outline.",
"created": "Tue, 05 Jul 2011 00:10:21 GMT",
"pgfnum": "100"
},
"4": {
"text": "Parts",
"created": "Tue, 05 Jul 2011 00:09:07 GMT",
"pgfnum": "98",
"subs": {
"0": {
"text": "worldOutlineSuite.buildDomainsOpml"
},
"1": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"1": {
"text": "Rivers in the World Outline",
"created": "Mon, 04 Jul 2011 18:18:55 GMT",
"pgfnum": "78",
"type": "blogpost",
"subs": {
"0": {
"text": "I've been working up to this for a while, and when it came time to finally do it, it took about 20 minutes, and most of that was spent thinking about how to do it.",
"created": "Mon, 04 Jul 2011 18:19:04 GMT",
"pgfnum": "79"
},
"1": {
"text": "There's a new nodetype, river. It has one required attribute, url, which points to the JSON file containing the river data. The JSON for my personal river is here.",
"created": "Mon, 04 Jul 2011 18:19:29 GMT",
"pgfnum": "80"
},
"2": {
"text": "You can find yours by doing a view-source on your static river.",
"created": "Mon, 04 Jul 2011 18:27:59 GMT",
"pgfnum": "89"
},
"3": {
"text": "The result is very nice! :-)",
"created": "Mon, 04 Jul 2011 18:20:33 GMT",
"pgfnum": "82"
},
"4": {
"text": "You might have to stare at it for a minute to figure out what it is.",
"created": "Mon, 04 Jul 2011 18:21:24 GMT",
"pgfnum": "83"
},
"5": {
"text": "There is some CSS collision, the CSS for the river defines styles for a navMenu. Ooops, that happens to be what we call the menu in the World Outline. That suggests we're going to have to come up with an abbreviated CSS for rivers.",
"created": "Mon, 04 Jul 2011 18:21:36 GMT",
"pgfnum": "84"
},
"6": {
"text": "Also, I'd like to see the river flush with the left edge, and indented by <%leftIndent%> pixels.",
"created": "Mon, 04 Jul 2011 18:22:33 GMT",
"pgfnum": "85"
},
"7": {
"text": "Anyway, here are the rivers I have working here.",
"created": "Mon, 04 Jul 2011 18:23:39 GMT",
"pgfnum": "86"
},
"8": {
"text": "To get the code, update beaut.root. It has to be running on the same machine as worldOutline.root, but it just needs code. You don't have to have your blork server running there. Just install beaut.root.",
"created": "Mon, 04 Jul 2011 18:23:55 GMT",
"pgfnum": "87",
"subs": {
"0": {
"text": "beautSuite.init"
},
"1": {
"text": "beautSuite.viewRiverInWorldOutline"
}
}
}
}
},
"2": {
"text": "Indentation in blogposts",
"created": "Mon, 04 Jul 2011 15:03:25 GMT",
"pgfnum": "64",
"type": "blogpost",
"subs": {
"0": {
"text": "I thought I might do the same expand-collapse that's in Scripting2, but on the way to doing that, I sort of liked the version where you don't expand and collapse.",
"created": "Mon, 04 Jul 2011 15:03:26 GMT",
"pgfnum": "65"
},
"1": {
"text": "Perhaps it's better if it's all visible. Let's try it that way.",
"created": "Mon, 04 Jul 2011 15:06:14 GMT",
"pgfnum": "73"
},
"2": {
"text": "So here's the deal.",
"created": "Mon, 04 Jul 2011 15:04:29 GMT",
"pgfnum": "66",
"subs": {
"0": {
"text": "You can now indent items underneath each other.",
"created": "Mon, 04 Jul 2011 15:04:32 GMT",
"pgfnum": "67",
"subs": {
"0": {
"text": "Achieving a hierarchic display.",
"created": "Mon, 04 Jul 2011 15:04:42 GMT",
"pgfnum": "68",
"subs": {
"0": {
"text": "That doesn't require.",
"created": "Mon, 04 Jul 2011 15:04:49 GMT",
"pgfnum": "69",
"subs": {
"0": {
"text": "The user to navigate.",
"created": "Mon, 04 Jul 2011 15:04:53 GMT",
"pgfnum": "70",
"subs": {
"0": {
"text": "Screen shot.",
"created": "Mon, 04 Jul 2011 15:07:39 GMT",
"pgfnum": "74"
}
}
}
}
}
}
}
}
}
}
},
"3": {
"text": "Could be useful. :-)",
"created": "Mon, 04 Jul 2011 15:04:58 GMT",
"pgfnum": "71",
"subs": {
"0": {
"text": "\"dorothy\"",
"created": "Mon, 04 Jul 2011 15:05:03 GMT",
"pgfnum": "72"
}
}
}
}
},
"3": {
"text": "Paragraph-level permalinks",
"created": "Mon, 04 Jul 2011 14:13:35 GMT",
"pgfnum": "52",
"type": "blogpost",
"subs": {
"0": {
"text": "We can optionally add permalinks at the end of every paragraph, exactly as in Scripting2 blogs.",
"created": "Mon, 04 Jul 2011 14:13:56 GMT",
"pgfnum": "54"
},
"1": {
"text": "That's why I released new code yesterday that adds a pgfnum attribute on new worldoutline nodes. Just in case at some point they end up in blogpost nodes, we'll be able to generate a unique permalink.",
"created": "Mon, 04 Jul 2011 14:14:29 GMT",
"pgfnum": "55"
},
"2": {
"text": "There's a prefs page for this feature.",
"created": "Mon, 04 Jul 2011 14:15:11 GMT",
"pgfnum": "56"
},
"3": {
"text": "Three parts changed.",
"created": "Mon, 04 Jul 2011 14:58:31 GMT",
"pgfnum": "60",
"subs": {
"0": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "worldOutlineSuite.viewBlogPostCallback"
}
}
},
"4": {
"text": "There's also an attribute so you can turn them on or off on a per-node basis, or in any branch of any outline. The attribute is flPgfPermalinks.",
"created": "Mon, 04 Jul 2011 14:15:53 GMT",
"pgfnum": "58"
},
"5": {
"text": "I reorganized the prefs into three categories: Appearance, Navigation and Community. Previously there was one category: Basic Stuff.",
"created": "Mon, 04 Jul 2011 14:15:18 GMT",
"pgfnum": "57"
}
}
},
"4": {
"text": "Sharing glossaries",
"created": "Mon, 04 Jul 2011 12:47:23 GMT",
"pgfnum": "40",
"type": "blogpost",
"subs": {
"0": {
"text": "A simple addition to the save routine, in the OPML Editor, makes it possible for you to include my glossary in your world outline. So if I add a term you can pick it up. It also means your server can make sense of glossary refs in my content when it's viewed through your outline.",
"created": "Mon, 04 Jul 2011 12:47:33 GMT",
"pgfnum": "41"
},
"1": {
"text": "Here's how you do it.",
"created": "Mon, 04 Jul 2011 12:48:32 GMT",
"pgfnum": "42"
},
"2": {
"text": "1. Update opml.root on your workstation.",
"created": "Mon, 04 Jul 2011 13:08:10 GMT",
"pgfnum": "51"
},
"3": {
"text": "2. The URL of my glossary: http://dropbox.scripting.com/dave/worldOutline/glossary.opml. Copy it to the clipboard.",
"created": "Mon, 04 Jul 2011 12:48:42 GMT",
"pgfnum": "43"
},
"4": {
"text": "3. Create a new headline anywhere in your world outline, called glossary. Right-click. Choose Add inclusion. Paste that URL and click OK.",
"created": "Mon, 04 Jul 2011 12:49:11 GMT",
"pgfnum": "44"
},
"5": {
"text": "4. Save.",
"created": "Mon, 04 Jul 2011 12:49:51 GMT",
"pgfnum": "45"
},
"6": {
"text": "Now if you put the name dorothy into your outline in double quotes, you'll get an image of Judy Garland in the Wizard of Oz, singing Somewhere Over the Rainbow. Ain't that cool! :-)",
"created": "Mon, 04 Jul 2011 12:49:54 GMT",
"pgfnum": "46"
},
"7": {
"text": "\"dorothy\"",
"created": "Mon, 04 Jul 2011 12:50:34 GMT",
"pgfnum": "47"
},
"8": {
"text": "PS: For ideas about glossary entries, check out the global glossary we created at UserLand, many years ago. Thanks to Jake Savin, it's still on the web.",
"created": "Mon, 04 Jul 2011 12:51:07 GMT",
"pgfnum": "48"
}
}
}
}
},
"21": {
"text": "7/3/11 by DW",
"created": "Mon, 04 Jul 2011 00:49:06 GMT",
"subs": {
"0": {
"text": "Glossary release",
"alllevels": "true",
"created": "Mon, 04 Jul 2011 03:35:48 GMT",
"pgfnum": "25",
"subs": {
"0": {
"text": "How to update",
"created": "Mon, 04 Jul 2011 03:39:01 GMT",
"pgfnum": "30",
"subs": {
"0": {
"text": "On your server: Update opml.root and worldOutline.root.",
"created": "Mon, 04 Jul 2011 03:39:03 GMT",
"pgfnum": "31"
},
"1": {
"text": "On your workstation: Update opml.root.",
"created": "Mon, 04 Jul 2011 03:39:18 GMT",
"pgfnum": "32"
}
}
},
"1": {
"text": "How to test",
"created": "Mon, 04 Jul 2011 03:39:25 GMT",
"pgfnum": "33",
"subs": {
"0": {
"text": "Add a glossary section somewhere in your outline.",
"created": "Mon, 04 Jul 2011 03:39:28 GMT",
"pgfnum": "34"
},
"1": {
"text": "Save it.",
"created": "Mon, 04 Jul 2011 03:39:47 GMT",
"pgfnum": "35"
},
"2": {
"text": "Use one of the terms anywhere in your outline.",
"created": "Mon, 04 Jul 2011 03:39:49 GMT",
"pgfnum": "36"
},
"3": {
"text": "View it through the web.",
"created": "Mon, 04 Jul 2011 03:39:59 GMT",
"pgfnum": "37"
}
}
},
"2": {
"text": "Parts",
"created": "Mon, 04 Jul 2011 03:35:51 GMT",
"pgfnum": "26",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.opInsertCallback"
},
"1": {
"text": "opmlEditor.worldOutline.init"
},
"2": {
"text": "opmlEditor.worldOutline.saveWorkspace"
},
"3": {
"text": "html.directory.getCanonicalName"
},
"4": {
"text": "worldOutlineSuite.initUser"
},
"5": {
"text": "worldOutlineRpcHandlers.saveUserRoot"
},
"6": {
"text": "worldOutlineSuite.main"
},
"7": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"1": {
"text": "Glossary :-)",
"created": "Mon, 04 Jul 2011 02:10:22 GMT",
"pgfnum": "10",
"type": "blogpost",
"subs": {
"0": {
"text": "One of the things that's been on my todo list for a while is a glossary for the world outline.",
"created": "Mon, 04 Jul 2011 02:10:24 GMT",
"pgfnum": "11"
},
"1": {
"text": "Naturally, I wanted to do it in an outline-ish way. Turned out to be remarkably simple to implement, and it seems to work nicely at a user level too.",
"created": "Mon, 04 Jul 2011 02:10:42 GMT",
"pgfnum": "12"
},
"2": {
"text": "Basically you can have as many glossaries as you like, and you can put them anywhere in the outline you like. They are additive. Each must have the name \"glossary\" exactly (however it is not case-sensitive).",
"created": "Mon, 04 Jul 2011 02:11:19 GMT",
"pgfnum": "13"
},
"3": {
"text": "Each item under the glossary is a string of characters that will be replaced, where ever it occurs, with the text underneath it.",
"created": "Mon, 04 Jul 2011 02:12:25 GMT",
"pgfnum": "14"
},
"4": {
"text": "So the first-level subs are the terms, and the second-level form the definitions.",
"created": "Mon, 04 Jul 2011 02:12:56 GMT",
"pgfnum": "15"
},
"5": {
"text": "Note this topic has the name \"Glossary\" but it doesn't contain any valid definitions. None of the items have subs.",
"created": "Mon, 04 Jul 2011 02:13:15 GMT",
"pgfnum": "16"
},
"6": {
"text": "I put my glossary in the My sites section. That's where all the mechanical stuff seems to be gravitating. But it doesn't matter where it is, as I said earlier.",
"created": "Mon, 04 Jul 2011 02:14:12 GMT",
"pgfnum": "17"
},
"7": {
"text": "Each user has their own glossary. It's built from the outline as the outline is saved. So the work to gather the glossary is done by the author's computer, and when the pages are rendered, the substitutions are super-fast (using string.multiplereplaceall).",
"created": "Mon, 04 Jul 2011 02:20:08 GMT",
"pgfnum": "20"
},
"8": {
"text": "The upshot of this is that now when I put the name of my blog in \"double quotes\" -- it's hotlinked to the blog, \"scripting news\".",
"created": "Mon, 04 Jul 2011 02:21:09 GMT",
"pgfnum": "21"
},
"9": {
"text": "And when I put a colon followed by a hyphen followed by a right paren in the text, I get a smiley. :-)",
"created": "Mon, 04 Jul 2011 02:21:37 GMT",
"pgfnum": "22"
},
"10": {
"text": "And when I type in cheesecake in double-quotes -- I get a nice piece of cheesecake.",
"created": "Mon, 04 Jul 2011 02:22:08 GMT",
"pgfnum": "23"
},
"11": {
"text": "\"cheesecake\"",
"created": "Mon, 04 Jul 2011 02:22:24 GMT",
"pgfnum": "24"
}
}
},
"2": {
"text": "Attributes on new worldOutline headlines",
"created": "Mon, 04 Jul 2011 00:52:42 GMT",
"pgfnum": "1",
"subs": {
"0": {
"text": "I'm now adding a created attribute and a pgfnum attribute on every headline created in the worldOutline workspace window.",
"created": "Mon, 04 Jul 2011 00:49:25 GMT"
},
"1": {
"text": "This will make it possible to put paragraph-level permalinks in blogpost nodes.",
"created": "Mon, 04 Jul 2011 00:49:51 GMT"
},
"2": {
"text": "In general it's a good idea to know when nodes are created.",
"created": "Mon, 04 Jul 2011 00:50:23 GMT"
}
}
}
}
},
"22": {
"text": "7/1/11 by DW",
"subs": {
"0": {
"text": "Cleaning up two bloated tables",
"type": "blogpost",
"subs": {
"0": {
"text": "The glossary at the top level of worldOutlineWebsite was filling up for no good reason, so we zeroed it out."
},
"1": {
"text": "Before the rewrite of html.directory.viewDirectory, we were tracking all hits, even if they were errors. There are lots of crawlers out there looking for vulnerabilities in PHP servers, and wordpress, and whatnot, so there's a lot of extra crap in there. In the new rewrite a hit only counts if there is content at that address."
},
"2": {
"text": "So we're going through the hits table and deleting all stats for pages with 3 or fewer hits. This dramatically reduced the size of the hits table on my server, and should make the server perform better. And they won't accumulate with the new way of doing things."
},
"3": {
"text": "The hits table is at config.htmldirectory.hits."
}
}
},
"1": {
"text": "redirect nodetype",
"type": "blogpost",
"subs": {
"0": {
"text": "An example. Roll your mouse over the link to see that it points into this site. But when you click on it, it takes you to a Doc Searls piece about flying."
},
"1": {
"text": "The type is redirect, it has a url attribute that points to the page we redirect to."
},
"2": {
"text": "When you're browsing through the directory, it feels like a link, but when you point to it from outside, it's a redirect. Does the same thing in either case, but the effect is different."
},
"3": {
"text": "The use-case is this: I want to move something to a different branch but don't want to break incoming links. So, after moving the content to its new location, I put a redirect node in the old location, pointing to the new one. Voila."
},
"4": {
"text": "Changes to two routines: html.directory.walk and html.directory.viewDirectory."
}
}
},
"2": {
"text": "An HTTP puzzle",
"domain": "jy_thanks.blorkmark.com",
"fldisquscomments": "true",
"type": "blogpost",
"subs": {
"0": {
"text": "I noticed the other day that the new server I'm working on was behaving oddly."
},
"1": {
"text": "Every time I'd access a page, the hit counter for the page would go up by two instead of one. I was sure the counter must be being incremented twice. Decided to look for it later."
},
"2": {
"text": "When I finally got around to looking, nope -- there was only one place the counter was being incremented."
},
"3": {
"text": "Looked further, and found there were two distinct requests coming in."
},
"4": {
"text": "So there's something about the page that is causing my browser to request it twice?"
},
"5": {
"text": "I asked Adam to check it out, he uses Chrome (I use Firefox) and we saw the same thing."
},
"6": {
"text": "I notice however that some people are coming in and not making the doubled-up requests."
},
"7": {
"text": "I've never seen anything like this. Before I go much further, I wanted to ask if you guys had any ideas."
},
"8": {
"text": "BTW, this is the server. The page you're looking at is being served by it. Just by reading the page you're helping. :-)"
},
"9": {
"text": "Update: Thanks to JY Stervinou for solving the puzzle! :-) My HTML had a pretty bad error in it, it was referring to a stylesheet whose url was the empty string. The CMS should have been smarter and looked to see if the URL was empty before generating the link element. Once I added the check, the double-hits went away. "
}
}
},
"3": {
"text": "Released new responder parts",
"type": "blogpost",
"subs": {
"0": {
"text": "You shouldn't see any differences at all. It might be a bit faster, there's a lot less code executing on each hit. But it should do exactlly what the previous setup did."
},
"1": {
"text": "I installed the new stuff on Mendota, my virgin setup, booted up yesterday. Seems to work, but there's not much there to test. :-)"
},
"2": {
"text": "Important: In order for the new responder to kick in, you have to: 1. Bring worldOutline.root to the front. 2. Choose Re-install Front Tool from the Tools menu. If it's running you should see new stats in config.worldoutline.stats, such as ctBytesLastResponse and ctResponderHits and they should be non-zero. You can also quit and restart OPML for the same effect."
},
"3": {
"text": "1. worldOutlineSuite.background.everyMinute"
},
"4": {
"text": "2. worldOutlineSuite.init"
},
"5": {
"text": "3. worldOutlineSuite.responder"
},
"6": {
"text": "4. worldOutlineResponder"
}
}
},
"4": {
"text": "worldOutlineSuite.viewFeedCallback",
"subs": {
"0": {
"text": "Handled case where feed has one or more items with no descriptions."
}
}
},
"5": {
"text": "A grand experiment",
"domain": "responder2.blorkmark.com",
"type": "blogpost",
"subs": {
"0": {
"text": "I had two monstrous pieces of code I was grappling with: html.directory.viewDirectory and mainResponder.respond. It was so onerous I even wrote it up in a Scripting News blog post. It has to be a huge weight to get that kind of treatment."
},
"1": {
"text": "I've completed the first grapple, now it's time to do the second. But I'm going to approach it in a different manner."
},
"2": {
"text": "I'm not going to gut my adversary, instead I'm going to create a minimal responder. Instead of the kitchen sink approach, which is what MRR is, I'm going to create a bare bones responder just for worldOutline.root. Because it's singularly not in need of the machinery of MRR, what it needs is so simple, that I think I can write it in a couple of days. So I'm willing to risk the couple of days, and see if it's right. If it works out, it could change the course of development at this level in Frontier. If not, I've lost a couple of days. But probably will learn a bunch and be ready to do some work on MRR. Let's see what happens."
},
"3": {
"text": "BTW, in 1998, the kitchen sink approach was the correct one. We needed a package that moved all that stuff out of the way, behind an interface -- so we could build the next layer up, which was Manila. But by the time we got to Radio, just a couple of years later, we were already writing a new responder."
},
"4": {
"text": "Update: It worked. I cut out not only mainResponder.respond, but also html.buildObject. Neither of them were doing anything for me, since the directory structure already mimics the \"walk\" that MRR does. And I wasn't using the website framework at all, having completely converted to string.multipleReplaceAll. We get a fresh start! Ha!"
}
}
},
"6": {
"text": "Rendering feeds",
"subs": {
"0": {
"text": "Cleaned up the callback for processing feeds, worldOutlineSuite.viewFeedCallback."
},
"1": {
"text": "Commented debugging code."
},
"2": {
"text": "Added code to display descriptions."
},
"3": {
"text": "Example",
"htmlurl": "http://scripting.com/",
"title": "Scripting News",
"type": "rss",
"xmlurl": "http://static.scripting.com/rss.xml",
"#type": "feed",
"folder": "Rendering feeds"
}
}
}
}
}
}
},
"23": {
"text": "June 2011",
"subs": {
"0": {
"text": "6/30/11 by DW",
"subs": {
"0": {
"text": "Fixed up links",
"subs": {
"0": {
"text": "Cleaned up the display of link nodes as much as I could. Could use a review by someone more fluent in CSS. As I branch out to other things, I'm losing the confidence I had."
},
"1": {
"text": "Also got rid of valign=\"top\" in the code we generate. It seems that belongs in the stylesheet not in the source."
}
}
},
"1": {
"text": "Completely fresh install",
"type": "blogpost",
"subs": {
"0": {
"text": "I'm now installing worldOutline.root on a completely virgin EC2 instance, booted up for just this purpose."
},
"1": {
"text": "http://mendota.worldoutline.org/"
},
"2": {
"text": "It will only be up for a little bit, probably just a few hours."
},
"3": {
"text": "A little later -- it all worked except there's a problem with Disqus comments. Even though they are not enabled it's trying to include them. Not surprising since that part of the app is basically not put back together from the template upheaving."
},
"4": {
"text": "Here's a screen shot showing all the basic pieces working, with the Disqus erro."
},
"5": {
"text": "Update: Fixed the problem with Disqus comments. Update worldOutline.root to get the fix."
}
}
},
"2": {
"alllevels": "true",
"text": "worldOutline.root v0.31",
"subs": {
"0": {
"text": "There's a lot of cleanup, and the directory code is now maintainable and will be completely plug-in-ready. As with any release involving a lot of change, there's a serious chance of breakage."
},
"1": {
"text": "Parts",
"subs": {
"0": {
"text": "html.directory.getBreadcrumbString"
},
"1": {
"text": "html.directory.walk"
},
"2": {
"text": "html.directory.viewDirectory"
},
"3": {
"text": "worldOutlineSuite.main"
},
"4": {
"text": "worldOutlineWebsite.[\"#filters\"].pagefilter"
}
}
}
}
},
"3": {
"text": "1. Bing! 2. Bing!",
"type": "blogpost",
"subs": {
"0": {
"text": "Gotta report I just completed my gutting and de-crudding of html.directory.viewDirectory."
},
"1": {
"text": "The code is now 100 percent 2011-Dave-Certified Maintainable."
},
"2": {
"text": "And an extra bonus, the cause for the 2nd Bing, it is also certified as Enjoyable. :-)"
},
"3": {
"text": "In my next programming session I will carve out a spot for callbacks, and nodetypes will be open architecture."
},
"4": {
"text": "After that, I have to write another bit of code I've been waiting to get to, a miniResponder to replace mainResponder, which is too cumbersome for the tasks we're putting it to these days."
},
"5": {
"text": "Onward! :-)"
},
"6": {
"text": "PS: I left one little teeny bit of crud in there, for old time's sake. :-)"
},
"7": {
"text": "PPS: However, I did comment it saying that's why it's there. :-)"
}
}
},
"4": {
"text": "View button in edit window",
"subs": {
"0": {
"text": "Dan MacTough reports a problem with the View button in the world outline editing window, when the cursor points to a headline that is not within a mapped domain. I've seen the problem myself, but it had not risen to the top of my todo list. Happy to get a chance to fix this."
}
}
}
}
},
"1": {
"text": "6/29/11 by DW",
"subs": {
"0": {
"text": "If the first sub is a comment",
"subs": {
"0": {
"text": "Then, when the parent is displayed in its list, the comment appears as the title attribute of the link."
},
"1": {
"text": "So you can control the tool tip, when a reader is trying to decide which sub to look at."
},
"2": {
"text": "Nice little touch that was always there, but broken. Now it's fixed."
}
}
},
"1": {
"alllevels": "true",
"text": "More gutting",
"type": "blogpost",
"subs": {
"0": {
"text": "Another day gutting html.directory.viewDirectory."
},
"1": {
"text": "However, I think today is payday. I'm finally in the core of the core. Having removed 3/4 of it already, the remainder is getting close to the stuff we actually use. The rest of it was optional stuff for software that's been retired long ago."
},
"2": {
"text": "After this is done, I'm going to take what remains and put it in worldOutlineSuite, and then go back to an archive and restore the original html.directory, so in case anyone someday wants to reboot the directories we had in 2000, they can. This is vastly simpler than what was there."
},
"3": {
"text": "The lesson of this exercise is that it's a good idea to factor your code before you start adding a myriad of features. That way it's always clear how the core stuff works."
}
}
}
}
},
"2": {
"text": "6/28/11 by DW",
"subs": {
"0": {
"text": "Gutting html.directory.viewDirectory",
"type": "blogpost",
"subs": {
"0": {
"text": "Last night I posted a plan on the world-outline list. I'm working toward opening up the directory rendering process to plug-ins. I chose this time to get rid of all the history that we're not taking forward with us. Really breaking with the past implementations of the World Outline."
}
}
}
}
},
"3": {
"text": "6/27/11 by DW",
"subs": {
"0": {
"text": "What about \"double quotes\" in titles?",
"type": "blogpost",
"subs": {
"0": {
"text": "Do they still screw things up??"
},
"1": {
"text": "Apparently not no mo!"
},
"2": {
"text": "Hello??"
}
}
},
"1": {
"text": "Macro to help with debugging",
"subs": {
"0": {
"text": "Added a macro, <%nodeAttsDebug%>."
},
"1": {
"text": "It lists all the attributes of the node that's being displayed."
},
"2": {
"text": "This helps with debugging so you can tell for sure what the inputs are to the nodetype renderer."
},
"3": {
"text": "Already helped me nail the bug with blogpost nodetypes (below)."
}
}
},
"2": {
"text": "blogpost nodetypes",
"subs": {
"0": {
"text": "Fixed typo that prevented include-style blogpost nodes from rendering properly."
}
}
},
"3": {
"text": "New section in templates howto",
"subs": {
"0": {
"text": "Added a section that explains how styles come into templates."
}
}
}
}
},
"4": {
"text": "6/26/11 by DW",
"subs": {
"0": {
"text": "Google web fonts",
"type": "blogpost",
"subs": {
"0": {
"text": "Hey I'm using Google Web Fonts on my World Outline."
},
"1": {
"text": "Just for the header now, let's see where this goes. I think they're really sweet."
},
"2": {
"text": "View source to see how it's done."
},
"3": {
"text": "Don Loeb says I should use Typekit too. I will if they're as easy. :-)"
},
"4": {
"text": "Update: I had to bring back the graphic header because it was used in too many places. We'll find a way to get fancy new web fonts into this software. Promise! :-)"
}
}
},
"1": {
"text": "Closing a hole",
"subs": {
"0": {
"text": "Creating a new user"
},
"1": {
"text": "Accessing prefs"
},
"2": {
"text": "Viewing domains"
},
"3": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.userDefinedHostCallback"
},
"1": {
"text": "worldOutlineSuite.viewNewUser"
},
"2": {
"text": "worldOutlineWebsite.[\"#filters\"].firstFilter"
},
"3": {
"text": "worldOutlineWebsite.domains"
},
"4": {
"text": "worldOutlineWebsite.prefs"
},
"5": {
"text": "worldOutlineSuite.utilities.fixTemplates2"
}
}
}
}
},
"2": {
"text": "Making the dust settle",
"subs": {
"0": {
"text": "I made some mistakes. Oy."
},
"1": {
"text": "Like I had tweaked up the settings in my database, but not in the initUser script."
},
"2": {
"text": "Should be possible to fix without having to re-tweak."
},
"3": {
"text": "Things that need changing",
"subs": {
"0": {
"text": "directoryFontSize becomes 15"
},
"1": {
"text": "directoryLineHeight becomes 18"
}
}
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "xxx"
}
}
}
}
},
"3": {
"mybff": "Eddie Cantor",
"text": "The new template stuff",
"type": "blogpost",
"subs": {
"0": {
"text": "Okay the changes are all out."
},
"1": {
"text": "To install the changes, on your server, update opml.root and worldOutline.root."
},
"2": {
"text": "On your desktop, update opml.root."
},
"3": {
"text": "In the browser, tool around your site. Everything look okay? Probably some of the styles don't look right."
},
"4": {
"text": "On your desktop, do the setup called for in the howto. Edit your template."
},
"5": {
"text": "The styles are coming from three different places, your custom CSS, any linked stylesheets you have, and the styles that are in your template. What's new is that there are now a lot of styles in your template. Have a look. Think about how you want to approach. The order they appear in is very important, it determines who has the final say in how things look. The way it's set, the template goes first, the linked stylesheets second, the custom CSS third and finally the outline has the last word. This may still change. But that's the way it is now."
},
"6": {
"text": "In doing the upgrade there's a saved copy of your old template in your members.root table. It's in worldoutline.prefs.defaultatts."
},
"7": {
"text": "Report any problems on the mail list"
}
}
},
"4": {
"text": "The big release",
"subs": {
"0": {
"text": "We're going to call this version 0.30."
},
"1": {
"text": "I have a fresh system to test this against. So if there's going to be breakage, I should be able to be among the first to detect."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.init"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"3": {
"text": "worldOutlineSuite.data.virgin.template"
},
"4": {
"text": "worldOutlineSuite.removeBlockMacro"
},
"5": {
"text": "worldOutlineSuite.viewBlogPostCallback"
},
"6": {
"text": "worldOutlineSuite.viewCodeCallback"
},
"7": {
"text": "html.directory.viewDirectory"
},
"8": {
"text": "html.directory.walk"
},
"9": {
"text": "worldOutlineRpcHandlers.saveUserTemplate"
},
"10": {
"text": "worldOutlineSuite.main"
},
"11": {
"text": "worldOutlineSuite.saveUserRoot"
},
"12": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"13": {
"text": "worldOutlineSuite.viewMenu"
},
"14": {
"text": "worldOutlineSuite.viewPageInTemplate"
},
"15": {
"text": "opmlEditor.worldOutline.saveTemplate"
}
}
}
}
},
"5": {
"text": "Template howto",
"subs": {
"0": {
"text": "Wrote first draft of the howto for templates in the world outline."
}
}
}
}
},
"5": {
"text": "6/25/11 by DW",
"subs": {
"0": {
"text": "Ready to talk corner-turn",
"subs": {
"0": {
"text": "Posted a request for a conf call to update asap."
},
"1": {
"text": "The big change -- new template conventions."
},
"2": {
"text": "Old templates will barely work in the new system."
}
}
},
"1": {
"text": "Fonts & color prefs",
"subs": {
"0": {
"text": "New Prefs page for setting the myriad fonts and colors that are now supported."
},
"1": {
"text": "The Directory template prefs page goes away."
}
}
},
"2": {
"text": "block:directory",
"type": "blogpost",
"subs": {
"0": {
"text": "When I deprecated the directoryTemplate feature, I broke Prefs, Domains, the login screen. Basically anything that didn't display a directory was fucked."
},
"1": {
"text": "Now it's time to make them work again."
},
"2": {
"text": "How you tell us where the directory-rendering HTML is: wrap it in a <%block:directory%> macro."
},
"3": {
"text": "Before we process your directory page, we'll find it and remove the <%block:directory%> and </%block:directory%>."
},
"4": {
"text": "If we're processing a page that doesn't have a directory on it, for example a Prefs page, we'll not only remove the <%block:directory%> macro text but we'll remove everything in-between them."
}
}
},
"3": {
"text": "Creating a code type",
"subs": {
"0": {
"text": "When Ted first heard about the code nodetype, he got excited, but this was based on a misunderstanding of how it worked. When I understood what he thought it did, I added that functionality to the todo list."
},
"1": {
"text": "The hard part of this was converting a sub-outline to a script, but that's done with a new builtin script, script.subOutlineToScript."
},
"2": {
"text": "Here are listings of two example scripts produced this way."
}
}
},
"4": {
"text": "Creating a blogpost type",
"type": "blogpost",
"subs": {
"0": {
"text": "I want to be able to create a blogpost nodetype in the World Outline editing window."
},
"1": {
"text": "The parent of this node is of type blogpost."
},
"2": {
"text": "I made a very simple little change to the blogpost callback, if there is no url attribute, then we display the subs of the node."
},
"3": {
"text": "So the procedure for creating a blogpost is as follows:"
},
"4": {
"text": "1. Create a new headline in the OPML Editor."
},
"5": {
"text": "2. Choose Set nodetype from the World Outline sub-menu of the Outliner menu."
},
"6": {
"text": "3. Enter blogpost"
},
"7": {
"text": "4. Save."
},
"8": {
"text": "Obviously the blogpost renderer must be smarter. But for that I'm just going to copy the factor out the code from scripting2.root. We shouldn't have two big bits of code to render a blog post."
}
}
}
}
},
"6": {
"text": "6/24/11 by DW",
"subs": {
"0": {
"alllevels": "true",
"text": "Colors and fonts",
"subs": {
"0": {
"text": "Some random notes about the work I'm doing."
},
"1": {
"text": "First, the font of the directory and the crumb trail should be the same. They are the same objects, so creating that association visually, feels comfortable."
},
"2": {
"text": "After getting rid of the left indent totally, it's time to bring it back. It's a parameter."
},
"3": {
"text": "The terminology of outlines, which is even older than terminology of the web, is starting to fit into this. We have a layout language too."
},
"4": {
"text": "I think the header graphic idea may be phased out."
},
"5": {
"text": "Need to have nodetypes in worldoutline totally pluggable. They are not yet."
},
"6": {
"text": "We have a blogpost nodetype, I need to be able to create one of those by hand. For example, why shouldn't this text have a pubDate, an author, a byline? WinerLinks?"
},
"7": {
"text": "Perhaps this is similar to what Ted was thinking a code nodetype would be. Right-indent, and enter some code. Back up to the parent and set the nodes type to code. What could be easier? (I bet it fits right into the architecture.)"
},
"8": {
"text": "See how colors are starting to work for us now? Two colors, the author's color, and the system's color. There is not a strict division, it's just that system text tends to be in a shade of blue, and my text tends to be black. This idea was stolen from Nicolas, and I assume he stole it from Facebook. I think everyone is. This is the blue-and-black on white era in the web. Luckily these are all parameters so you can change them without editing any HTML or CSS."
},
"9": {
"text": "Need to get comments working here again."
},
"10": {
"text": "I'm finally having fun! :-)"
},
"11": {
"text": "PS: Here's today's podcast."
}
}
},
"1": {
"text": "Lots of fussing",
"subs": {
"0": {
"text": "I finally have the ability to tweak up the display of the worldoutline."
},
"1": {
"text": "I've spent some time fussing over it, trying things out in different places, but ended up back largely where we were before."
},
"2": {
"text": "But now it's a three-column layout so there's room to add the things I want to be able to add, like a blogroll, an About section, etc."
},
"3": {
"text": "Not ready to release parts yet because I've broken some things in the process."
}
}
}
}
},
"7": {
"text": "6/23/11 by DW",
"subs": {
"0": {
"alllevels": "true",
"text": "Blorking items with enclosures",
"subs": {
"0": {
"text": "Blork knows how to do podcasts, but the Twitter gateway, radioReallySimple.root, had no code to look for enclosures. I fixed that in time to send out today's DaveCast."
},
"1": {
"text": "Parts",
"subs": {
"0": {
"text": "radioReallySimpleSuite.newItemCallback"
}
}
}
}
},
"1": {
"text": "Macros in CSS",
"subs": {
"0": {
"text": "I'm ready to define my first macro, and start building a way to specifiy them."
},
"1": {
"text": "The macro is <%textFont%>. I set the default to Georgia."
},
"2": {
"text": "It will be used in places where written text is being viewed."
},
"3": {
"text": "For example, the text you're reading right now."
},
"4": {
"text": "In our internal parlance, this is a directoryComment."
},
"5": {
"text": "It's in a serif font, which is good for reading."
},
"6": {
"text": "There will be a Prefs page where you can enter a different value for the font."
},
"7": {
"text": "Next one: <%textFontSize%>. I set the default to 16px."
},
"8": {
"text": "Finally: <%textLineHeight%>, default 20px."
}
}
},
"2": {
"text": "Left indent",
"subs": {
"0": {
"text": "I finally got the the left-indent of the directory to zero, so we're no longer wasting a huge amount of horizontal space. And more important if I want to tweak it up, I now know where to go."
},
"1": {
"text": "I had to read about ten articles about CSS and ULs, turns out if you set these two attributes on the UL element, you get the desired result: margin-left: 0; padding-left: 0;"
},
"2": {
"text": "Whew!"
}
}
},
"3": {
"text": "Page title",
"subs": {
"0": {
"text": "Previously the title of the page was the crumbtrail, something like: Top > My sites > Specs."
},
"1": {
"text": "Now it's just the last item in the crumb list."
},
"2": {
"text": "If you think about it, this is the title of the thing you're looking at. And it makes it possible for us to include the title immediately above the contents."
}
}
},
"4": {
"alllevels": "true",
"domain": "ugly.blorkmark.com",
"text": "Select-all, delete",
"subs": {
"0": {
"text": "Isn't this page ugly?"
},
"1": {
"text": "But then again -- isn't it beautiful? :-)"
},
"2": {
"text": "I did four things:",
"subs": {
"0": {
"text": "1. I wiped out the template, reducing it to a section and an empty . The just had a
Their API works very much like the connection to dnsimple.com. There are a bunch of tools provided by developers that allow you to interactively manage your domains the same way it works on GoDaddy or any other registrar. I'm using a service called Interstate 53. The first thing you have to do is give it a domain to work with. They give you four nameservers, and you tell your registrar about those servers. I chose one of my many blork.xxx domains -- blorkmark.net."
},
"2": {
"text": "Then I had to figure out how to call them. Unlike other Amazon services this one requires HTTPS. Luckily we have that debugged now on Windows with TLS. Then I read through the docs about how to construct an authentication string. Yet another variant of the usual dance. But after a bit of trial and error -- boom! -- I got through."
},
"3": {
"text": "Then I had to do some more head-scratching, because as always it's ten times more complicated than you need it to be. Their interface can do a billion things that I have no clue about. I just want to add and maybe occasionally delete CNAMEs."
},
"4": {
"text": "I had some fun with this part, I was pretty sure I had it figured out, and at about 6:30PM, I got my first blorkmark working through this interface. Yah! All right."
},
"5": {
"text": "Still have a bunch more work to do to even be sure this performs, but I have some pretty high hopes for it. Meanwhile my dnssimple test app is doing a request every hour with not-acceptable results. I will benchmark Amazon the same way."
}
}
},
"1": {
"text": "Testing dnsApi",
"subs": {
"0": {
"text": "I still don't get a good response from dnsimple.com."
},
"1": {
"text": "I've written a test app that monitors its performance."
},
"2": {
"text": "Every hour it allocates a CNAME then loops until its defined, recording the number of seconds it took to be defined."
},
"3": {
"text": "I'll publish the results after running it for a while..."
}
}
},
"2": {
"text": "code nodetype",
"subs": {
"0": {
"text": "It's another kind of include."
},
"1": {
"text": "The URL points to an OPML file."
},
"2": {
"text": "Which we render as code."
},
"3": {
"text": "Examples."
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.utilities.uploadCode"
},
"1": {
"text": "worldOutlineSuite.viewCodeCallback"
},
"2": {
"text": "worldOutlineSuite.init"
},
"3": {
"text": "html.directory.viewDirectory"
},
"4": {
"text": "html.directory.walk"
}
}
}
}
}
}
},
"11": {
"text": "6/18/11 by DW",
"subs": {
"0": {
"alllevels": "true",
"text": "Edit template in outliner",
"subs": {
"0": {
"text": "It was driving me crazy having to go back and forth to the Prefs page to edit the template for my worldoutline site. So I added the ability to edit the template in the outliner."
},
"1": {
"text": "Changed the icon on links in the directory display to use the favicon code we use in radio2.root. Example."
},
"2": {
"text": "Minor reorg of the world outline table."
},
"3": {
"text": "New command in the World Outline sub-menu of the Outliner menu: Open Template."
},
"4": {
"text": "New command in the World Outline sub-menu of the Outliner menu: Set allLevels."
},
"5": {
"text": "Parts",
"subs": {
"0": {
"text": "system.menus.menubar"
},
"1": {
"text": "opmlEditor.menuCommands.outlinerSetAllLevels"
},
"2": {
"text": "html.directory.viewDirectory"
},
"3": {
"text": "worldOutlineRpcHandlers.getUserRoot"
},
"4": {
"text": "worldOutlineRpcHandlers.getUserTemplate"
},
"5": {
"text": "worldOutlineRpcHandlers.saveUserTemplate"
}
}
}
}
}
}
},
"12": {
"text": "6/17/11 by DW",
"subs": {
"0": {
"alllevels": "true",
"text": "View button",
"subs": {
"0": {
"text": "The View button in World Outline windows now takes you to the page the bar cursor is pointing to."
},
"1": {
"text": "For example, if I have the cursor on the line you're reading right now, it will take me to the page that documents the View button."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "opmlEditor.worldOutline.viewHeadline"
}
}
}
}
}
}
},
"13": {
"text": "6/16/11 by DW",
"subs": {
"0": {
"alllevels": "true",
"domain": "alllevels.blorkmark.com",
"text": "allLevels attribute",
"subs": {
"0": {
"text": "When I'm writing docs, I like to indent stuff, to keep everything organized, but don't want to make the reader click in a level to read the sub-text."
},
"1": {
"text": "The directory displayer already ahd the ability to do this, it was just a matter of coming up with a way to trigger it from attributes."
},
"2": {
"text": "I don't know how it will deal with all the possible nodetypes, but I know it works nicely for the kinds of stuff I'm doing with docs."
},
"3": {
"text": "Right now there is no user interface in the OPML Editor for setting this attribute, but you can do it from the Quick Script window.",
"subs": {
"0": {
"text": "1. Place the cursor top line of the document."
},
"1": {
"text": "2. Press Cmd-; to open the Quick Script window."
},
"2": {
"text": "3. Enter: op.attributes.setone (\"allLevels\", true) and press Enter."
},
"3": {
"text": "4. Click the Save button."
}
}
},
"4": {
"text": "Obviously I'm using it here. :-)"
},
"5": {
"text": "Parts",
"subs": {
"0": {
"text": "html.directory.viewDirectory"
}
}
}
}
},
"1": {
"alllevels": "true",
"domain": "outlinebackupdocs.blorkmark.com",
"levels": "10",
"text": "Outline backups",
"subs": {
"0": {
"text": "I had an unpleasant thought as I was switching between my real account and a test account on my world outline server."
},
"1": {
"text": "What if I get confused, or if the software should have a bug, and somehow I lost my entire world outline. I could just picture it."
},
"2": {
"text": "I've had failures like that quite a few times over the years. And inevitably you have to try to type it all back in from memory. But as the outline develops, that becomes more of a problem."
},
"3": {
"text": "So I decided now, before it happens, let's get a solid backup flow coming out of worldOutline.root."
},
"4": {
"text": "There's a new global pref, in config.worldOutline.prefs.flBackupOutlines, defaults true."
},
"5": {
"text": "If it's true, we maintain a folder for each user, in the S3 archive, organized by year, month and date, with snapshots of their outline each time it's saved. The backups are named 001.opml, 002.opml and so on."
},
"6": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.init"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "worldOutlineSuite.saveUserRoot"
}
}
}
}
},
"2": {
"text": "Problem fixed in dnsimple.com",
"subs": {
"0": {
"text": "I reported a problem to Anthony Eden at dnsimple.com, that domains created through their API were taking a very long time to become valid."
},
"1": {
"text": "They looked into it, found a problem."
},
"2": {
"text": "Now the Blorkmark button in the World Outline editor window works. No fixes required on my end. :-)"
},
"3": {
"text": "
"
}
}
},
"3": {
"text": "New user command",
"subs": {
"0": {
"text": "Added a command to the menu in worldOutline, for the \"master user\" that allows you to create a new user entirely through the web."
},
"1": {
"text": "You are prompted for a username and password for the new user."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.data.html"
},
"1": {
"text": "worldOutlineSuite.viewMenu"
},
"2": {
"text": "worldOutlineSuite.viewNewUser"
},
"3": {
"text": "worldOutlineWebsite.newUser"
}
}
}
}
}
}
},
"14": {
"text": "6/15/11 by DW",
"subs": {
"0": {
"domain": "woup1.blorkmark.com",
"text": "worldOutline.root",
"subs": {
"0": {
"text": "Updated parts in worldOutline.root and html.directory so that we can display blogpost nodes."
},
"1": {
"text": "html.directory.walk displays the error string when there's a problem rendering a nodetype."
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineWebsite.stylesheet"
},
"1": {
"text": "worldOutlineSuite.viewBlogPostCallback"
},
"2": {
"text": "worldOutlineSuite.init"
},
"3": {
"text": "html.directory.viewDirectory"
},
"4": {
"text": "html.directory.walk"
}
}
}
}
},
"1": {
"text": "scripting2.root",
"subs": {
"0": {
"text": "In the upcoming release, we maintain an OPML table of contents for each Scripting2 site."
},
"1": {
"text": "If the url of the site is http://scripting.com/, then the OPML toc is at http://scripting.com/toc.opml."
},
"2": {
"text": "You can include it like any other OPML file. For example:"
},
"3": {
"text": "Scripting News",
"type": "include",
"url": "http://scripting.com/toc.opml",
"subs": {
"0": {
"text": "2012",
"subs": {
"0": {
"text": "January",
"type": "include",
"url": "http://scripting.com/2012/01.opml",
"subs": {
"0": {
"text": "More ideas for Hollywood",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/31/moreIdeasForHollywood.opml"
},
"1": {
"text": "Widget wars!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/30/widgetConflict.opml"
},
"2": {
"text": "Google's age-hate",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/30/googleAndAgeDiscrimination.opml"
},
"3": {
"text": "Passive vs active news reading",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/30/passiveVsActiveNewsReading.opml"
},
"4": {
"text": "Haiku street sign",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/29/haikuStreetSign.opml"
},
"5": {
"text": "Get the tech back in tech",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/29/getTheTechBackInTech.opml"
},
"6": {
"text": "Macros in the worldoutline",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/28/macrosInTheWorldoutline.opml"
},
"7": {
"text": "Ask not what the Internet...",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/27/onTwittersNewFiltering.opml"
},
"8": {
"text": "EC2 for Poets in 2012",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/25/ec2ForPoetsIn2012.opml"
},
"9": {
"text": "What could Nancy Pelosi know?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/25/whatCouldNancyPelosiKnow.opml"
},
"10": {
"text": "Ideas for movie moguls",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/25/ideasForMovieMoguls.opml"
},
"11": {
"text": "Can we buy your search engine?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/24/canWeBuyYourSearchEngine.opml"
},
"12": {
"text": "We need an exit from Google",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/23/weNeedAnExitFromGoogle.opml"
},
"13": {
"text": "Code nodetypes in World Outline",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/23/codeNodetypesInWorldOutlin.opml"
},
"14": {
"text": "Newt the dog whistler",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/22/watchingFootballNotes.opml"
},
"15": {
"text": "Snowy Central Park today",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/21/snowyCentralParkToday.opml"
},
"16": {
"text": "The disneyfication of tech",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/21/theDisneyficationOfTech.opml"
},
"17": {
"text": "Setting up an iPad in 2012",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/21/settingUpAnIpadIn2012.opml"
},
"18": {
"text": "Wordpress.com's new RSS aggregator",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/19/wordpresscomsNewRssAggrega.opml"
},
"19": {
"text": "Matt Waite's excellent post",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/19/mattWaitesExcellentPost.opml"
},
"20": {
"text": "No movies this weekend",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/19/noMoviesThisWeekend.opml"
},
"21": {
"text": "No movies this weekend",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/19/noMoviesThisWeekend.opml"
},
"22": {
"text": "Back in the saddle again",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/18/unblackened.opml"
},
"23": {
"text": "SOPA's other message: decentralize",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/17/sopasOtherMessageDecentral.opml"
},
"24": {
"text": "Why black out on Wednesday?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/16/whyBlackOutOnWednesday.opml"
},
"25": {
"text": "Windows server for a year free on EC2",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/16/windowsServerForAYearFreeO.opml"
},
"26": {
"text": "Solution to the Apple design problem",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/15/solutionToTheAppleDesignPr.opml"
},
"27": {
"text": "I'll miss the Republican debates",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/15/illMissTheRepublicanDebate.opml"
},
"28": {
"text": "Apple design vs \"It Just Works\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/15/appleDesignVsItJustWorks.opml"
},
"29": {
"text": "Tabs are happening",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/13/tabsAreHappening.opml"
},
"30": {
"text": "Will I have to pay for the NYT?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/13/willIHaveToPayForTheNyt.opml"
},
"31": {
"text": "Why I like Words With Friends",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/13/whyILikeWordsWithFriends.opml"
},
"32": {
"text": "An anti-SOPA browser plug-in?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/12/anAntisopaBrowserPlugin.opml"
},
"33": {
"text": "Did the Times apologize for Judith Miller?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/12/didTheTimesEverApologizeFo.opml"
},
"34": {
"text": "Could Bing seriously challenge Google?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/12/couldBingSeriouslyChalleng.opml"
},
"35": {
"text": "Hey you did a good job there!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/12/heyYouDidAGoodJobThere.opml"
},
"36": {
"text": "Why we're vulnerable to SOPA",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/12/whyWereVulnerableToSopa.opml"
},
"37": {
"text": "Bootstrap Modal Demo",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/11/bootstrapModalDemo.opml"
},
"38": {
"text": "Chutzpah?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/11/chutzpah.opml"
},
"39": {
"text": "Notes about blog comments",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/10/notesAboutBlogComments.opml"
},
"40": {
"text": "Google's new search is creepy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/10/googlesNewSearchIsCreepy.opml"
},
"41": {
"text": "morningcoffenotes.com is back",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/10/morningcoffenotescomIsBack.opml"
},
"42": {
"text": "Learning Bootstrap modals",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/10/learningBootstrapModals.opml"
},
"43": {
"text": "Call for UWS blogs",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/09/callForUwsBlogs.opml"
},
"44": {
"text": "The bosses do everything better",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/09/theBossesDoEverythingBette.opml"
},
"45": {
"text": "State Dept and SOPA",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/08/stateDeptAndSopa.opml"
},
"46": {
"text": "Worldoutline/New Hampshire",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/07/worldoutlinenewHampshire.opml"
},
"47": {
"text": "What if?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/06/whatIf.opml"
},
"48": {
"text": "Is SOPA perfect for OWS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/06/isSopaPerfectForOws.opml"
},
"49": {
"text": "Forced upgrades",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/05/forcedUpgrades.opml"
},
"50": {
"text": "What I worked on over the holidays",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/05/whatIveBeenWorkingOnOverTh.opml"
},
"51": {
"text": "The Internet needs us to listen",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/04/theInternetNeedsUsToListen.opml"
},
"52": {
"text": "The internet will reboot",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/03/theInternetWillReboot.opml"
},
"53": {
"text": "The internet is realistic",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/03/theInternetIsRealistic.opml"
},
"54": {
"text": "How CSS works against software",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/03/howCssWorksAgainstSoftware.opml"
},
"55": {
"text": "\"We're right and that's it.\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/02/toStateTheObvious.opml"
},
"56": {
"text": "NYPD is huge",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/01/nypdIsHuge.opml"
},
"57": {
"text": "I will buy a year's worth of digital NY Times",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/01/01/iWillBuyAYearsWorthOfDigit.opml"
}
}
},
"1": {
"text": "February",
"type": "include",
"url": "http://scripting.com/2012/02.opml",
"subs": {
"0": {
"text": "What comes after the Post-PC?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/29/rebootingThePcIndustry.opml"
},
"1": {
"text": "Blogmark",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/29/bookmark.opml"
},
"2": {
"text": "Another look at Dropbox",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/27/dropboxRevisit.opml"
},
"3": {
"text": "Everything is scaffolding",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/26/theWorldoutlineIsComingAlo.opml"
},
"4": {
"text": "Podcast with Adam Curry",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/25/podcastWithAdamCurry.opml"
},
"5": {
"text": "What news must do",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/24/whatNewsMustDo.opml"
},
"6": {
"text": "Contraception vs the death penalty",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/24/contraceptionVsTheDeathPen.opml"
},
"7": {
"text": "Everyone's talking basketball!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/23/everyonesTalkingBasketball.opml"
},
"8": {
"text": "Thinking out loud: DNS as ID",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/23/thinkingOutLoudDnsAsId.opml"
},
"9": {
"text": "What I learned by turning off comments",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/23/whatILearnedByTurningOffCo.opml"
},
"10": {
"text": "Why I have never been to SXSW",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/22/whyIHaveNeverBeenToSxsw.opml"
},
"11": {
"text": "Macroeconomics",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/22/macroeconomics.opml"
},
"12": {
"text": "New twist, FreshAir podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/22/newTwistFreshairPodcast.opml"
},
"13": {
"text": "I love \"As Good As It Gets\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/21/iLoveAsGoodAsItGets.opml"
},
"14": {
"text": "What is Relative Writing?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/21/whatIsRelativeWriting.opml"
},
"15": {
"text": "What about the other Jeremy Lins?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/20/whatAboutTheOtherJeremyLin.opml"
},
"16": {
"text": "What Jeremy Lin teaches us",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/19/whatJeremyLinTeachesUs.opml"
},
"17": {
"text": "No comment",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/19/noComment.opml"
},
"18": {
"text": "Hackathons are nonsense",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/19/hackathonsAreNonsense.opml"
},
"19": {
"text": "What if Jackson Pollock had comments?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/19/whatIfJacksonPollockHadCom.opml"
},
"20": {
"text": "Use the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/19/useTheWeb.opml"
},
"21": {
"text": "Schadenfreude and Mitt Romney",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/18/schadenfreudeAndMittRomney.opml"
},
"22": {
"text": "Samsung is wrong about TV",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/18/samsungIsWrongAboutTv.opml"
},
"23": {
"text": "How to fork a format",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/17/whenAndWhyToForkAFormat.opml"
},
"24": {
"text": "So good to have Apple watch out for us",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/16/appleIsSoFullOfIt.opml"
},
"25": {
"text": "Most cool Jeremy Lin moment",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/16/mostCoolJeremyLinMoment.opml"
},
"26": {
"text": "Benchmark",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/16/benchmark.opml"
},
"27": {
"text": "We're going to Disneyland!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/16/wereGoingToDisneyland.opml"
},
"28": {
"text": "iPhones and unprotected sex",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/15/iphonesAndUnprotectedSex.opml"
},
"29": {
"text": "Did blogspot's Atom feeds change?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/15/blogspotsAtomFeedsChanged.opml"
},
"30": {
"text": "The tech press is alive!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/14/theTechPressIsAlive.opml"
},
"31": {
"text": "What info can iOS apps access?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/14/whatInfoCanIosAppsAccess.opml"
},
"32": {
"text": "Silicon Valley's narcissism",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/13/siliconValleysNarcissism.opml"
},
"33": {
"text": "How industries react to crises",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/13/howIndustriesReactToCrises.opml"
},
"34": {
"text": "The bigger question Path raises",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/13/theBiggerQuestionPathRaise.opml"
},
"35": {
"text": "A reporter's address book",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/12/aReportersAddressBook.opml"
},
"36": {
"text": "Ebert is right",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/12/ebertIsRight.opml"
},
"37": {
"text": "Facebook didn't do what Path does",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/10/facebookDidntDoWhatPathDoe.opml"
},
"38": {
"text": "What you think matters",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/10/whatYouThinkMatters.opml"
},
"39": {
"text": "A core feature of MORE, on the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/09/aCoreFeatureOfMoreOnTheWeb.opml"
},
"40": {
"text": "JavaScript is nice, but weird",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/09/javascriptIsNiceButWeird.opml"
},
"41": {
"text": "Take 3",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/08/take3.opml"
},
"42": {
"text": "I don't like my last post",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/08/iDontLikeMyLastPost.opml"
},
"43": {
"text": "Glad I don't use Path",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/08/gladIDontUsePath.opml"
},
"44": {
"text": "Free lunches often have a price",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/07/whyICareAboutTheOpenWeb.opml"
},
"45": {
"text": "What a wonderful game!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/06/whatAWonderfulGame.opml"
},
"46": {
"text": "Scoble: I'll go down with the ship",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/05/toScobleImGoingDownWithThe.opml"
},
"47": {
"text": "NYT growing the wrong way",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/04/nytGrowingTheWrongWay.opml"
},
"48": {
"text": "Rediscovering the Beatles",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/04/rediscoveringTheBeatles.opml"
},
"49": {
"text": "A standard for RT'ing?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/03/aStandardForRting.opml"
},
"50": {
"text": "I don't love Google but...",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/03/iDontLoveGoogleBut.opml"
},
"51": {
"text": "A non-stop blast of tech news!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/03/aNonstopBlastOfTechNews.opml"
},
"52": {
"text": "Advice for new Facebook millionaires",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/02/adviceForNewFacebookMillio.opml"
},
"53": {
"text": "Florida campaign commercials?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/02/01/floridaCampaignCommercials.opml"
}
}
},
"2": {
"text": "March",
"type": "include",
"url": "http://scripting.com/2012/03.opml",
"subs": {
"0": {
"text": "Mom's TV",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/31/momsTv.opml"
},
"1": {
"text": "Paul McCartney",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/31/paulMccartney.opml"
},
"2": {
"text": "Republican hyperbole",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/31/republicanHyperbole.opml"
},
"3": {
"text": "Republican philosophy, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/30/republicanPhilosophyDay2.opml"
},
"4": {
"text": "The Republican philosophy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/29/theRepublicanPhilosophy.opml"
},
"5": {
"text": "How long a story are you telling?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/29/howLongAStoryAreYouTelling.opml"
},
"6": {
"text": "Every news org should have a river",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/29/everyNewsOrgShouldHaveARiv.opml"
},
"7": {
"text": "RSS for microblogging",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/27/rssForMicroblogging.opml"
},
"8": {
"text": "Grouping and alignment and the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/26/groupingAndAlignmentAndThe.opml"
},
"9": {
"text": "I'm glad I went to college",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/25/shouldYouSkipCollege.opml"
},
"10": {
"text": "Blogging newness is goodness",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/24/bloggingCompetitionIsGoodn.opml"
},
"11": {
"text": "NYC cops and NYC people",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/24/nycCopsAndNycPeople.opml"
},
"12": {
"text": "Studying icons",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/24/studyingIcons.opml"
},
"13": {
"text": "World Outline Podcast #8",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/24/worldOutlinePodcast8.opml"
},
"14": {
"text": "A repeat of Wednesday's ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/23/aRepeatOfWednesdaysRide.opml"
},
"15": {
"text": "No-Knicks ride up the Hudson",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/22/noknicksRideUpTheHudson.opml"
},
"16": {
"text": "Pre-Knicks ride in the park",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/21/preknicksGameRideInThePark.opml"
},
"17": {
"text": "Many ways to be a Knicks fan",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/21/aKnicksUpdate.opml"
},
"18": {
"text": "Not a proud moment for T-A-L",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/19/notAProudMomentForTal.opml"
},
"19": {
"text": "World Outline Podcast #7",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/19/worldOutlinePodcast7.opml"
},
"20": {
"text": "My first iPad 3 report",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/17/myFirstIpad3Report.opml"
},
"21": {
"text": "Before I use Branch",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/16/beforeIUseBranch.opml"
},
"22": {
"text": "Why the JOBS act?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/16/whyTheJobsAct.opml"
},
"23": {
"text": "Knicks did the wrong, predictable thing",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/14/knicksDidTheWrongPredictab.opml"
},
"24": {
"text": "How I organize with my outliner",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/14/howIOrganizeWithOutliner.opml"
},
"25": {
"text": "Moving to Bootstrap 2.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/14/movingToBootstrap20.opml"
},
"26": {
"text": "A heretofore untold Steve Jobs story",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/13/aHeretoforeUntoldSteveJobs.opml"
},
"27": {
"text": "It's all bubble gas",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/13/itsAllBubbleGas.opml"
},
"28": {
"text": "Goodbye Posterous",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/12/goodbyePosterous.opml"
},
"29": {
"text": "Some news is slow",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/12/someNewsIsSlow.opml"
},
"30": {
"text": "How to sell ObamaCare",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/11/theDemsDontSell.opml"
},
"31": {
"text": "Twitter rake in big bucks during SXSW",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/10/twitterCouldRakeInBigBucks.opml"
},
"32": {
"text": "Frictionless expectations of privacy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/10/frictionlessExpectationsOf.opml"
},
"33": {
"text": "If I were Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/09/ifIWereTwitter.opml"
},
"34": {
"text": "Scifi plot",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/08/scifiPlot.opml"
},
"35": {
"text": "Obama's biggest mistake",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/08/obamasBiggestMistake.opml"
},
"36": {
"text": "The bug in our process",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/08/theBugInOurProcess.opml"
},
"37": {
"text": "Death penalty and contraception",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/08/howTheDeathPenaltyIsLikeCo.opml"
},
"38": {
"text": "Why Bootstrap might be *very* important",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/07/whyBootstrapMightBeVeryImp.opml"
},
"39": {
"text": "What I work on",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/06/whatIWorkOn.opml"
},
"40": {
"text": "podcast.worldoutline.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/05/yetAnotherPodcastFeed.opml"
},
"41": {
"text": "What kind of blogging do we want?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/05/futureBlogging.opml"
},
"42": {
"text": "What kind of Knicks do we want?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/04/whatKindOfKnicksDoWeWant.opml"
},
"43": {
"text": "Ever-shorter urls",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/03/evershorterUrlshorteners.opml"
},
"44": {
"text": "What Sandra Fluke is saying",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/03/whatSandraFlukeIsSaying.opml"
},
"45": {
"text": "An open challenge to PandoDaily",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/02/anOpenChallengeToPandodail.opml"
},
"46": {
"text": "15 years of Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/02/15YearsOfMakingFun.opml"
},
"47": {
"text": "Repubs and male sex",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/01/republicansAndMaleSex.opml"
},
"48": {
"text": "iPhones and your photos",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/03/01/iphonesAndPhotos.opml"
}
}
},
"3": {
"text": "April",
"type": "include",
"url": "http://scripting.com/2012/04.opml",
"subs": {
"0": {
"text": "Twitter's change is unfortunate",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/30/twittersChangeIsUnfortunat.opml"
},
"1": {
"text": "Melo is the last man standing",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/30/meloIsTheLastManStanding.opml"
},
"2": {
"text": "News on the Internet is stuck",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/30/theProblemIsOnlyPartlyTwit.opml"
},
"3": {
"text": "Yes, it's a bubble, of course",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/29/yesItsABubbleOfCourse.opml"
},
"4": {
"text": "We shot our wad on SOPA",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/27/weShotOurWadOnSopa.opml"
},
"5": {
"text": "What is the truth?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/27/whatIsTheTruth.opml"
},
"6": {
"text": "Why I loved the Apple II",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/26/whyILovedTheAppleIi.opml"
},
"7": {
"text": "Twitter is my Read-It-Later app",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/26/twitterIsMyReaditlaterApp.opml"
},
"8": {
"text": "Hacking society notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/24/hackingSociety.opml"
},
"9": {
"text": "Trying out Google Drive",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/24/googleDriveVsDropbox.opml"
},
"10": {
"text": "McLuhan was as prescient as Postel",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/24/mcluhanWasAsPrescientAsPos.opml"
},
"11": {
"text": "It's not just about sex",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/24/itsNotJustAboutSex.opml"
},
"12": {
"text": "Study English and Computer Science",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/23/studyEnglishAndComputerSci.opml"
},
"13": {
"text": "Where is VolksMail?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/23/whereIsVolksmail.opml"
},
"14": {
"text": "Nick Denton's idea?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/22/whatsNickDentonsIdea.opml"
},
"15": {
"text": "Free rent?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/21/freeRent.opml"
},
"16": {
"text": "Not TV shows, rock bands",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/21/notTvShowsRockBands.opml"
},
"17": {
"text": "It's definitely a bubble",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/19/itsDefinitelyABubble.opml"
},
"18": {
"text": "On stockpiling defensive patents",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/19/onStockpilingDefensivePate.opml"
},
"19": {
"text": "Time's hundred most influential",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/19/timesHundredMostInfluentia.opml"
},
"20": {
"text": "Rebooting the Internet dev process",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/18/rebootingTheInternetDevPro.opml"
},
"21": {
"text": "CNN's View-From-Somewhere Anchor",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/17/cnnsViewfromsomewhereAncho.opml"
},
"22": {
"text": "Hudson River ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/16/hudsonRiverRide.opml"
},
"23": {
"text": "Protocol for disarmament",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/16/oneMoreThing.opml"
},
"24": {
"text": "A big thing Google could do",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/16/aBigThingGoogleCouldDo.opml"
},
"25": {
"text": "In defense of the open web",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/16/inDefenseOfTheOpenWeb.opml"
},
"26": {
"text": "Knicks vs Heat on my second monitor",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/15/knicksVsHeatOnMySecondMoni.opml"
},
"27": {
"text": "Early Sunday morning ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/15/earlySundayMorningRide.opml"
},
"28": {
"text": "A little tip for Google on upgrades",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/14/aLittleTipForGoogleOnUpgra.opml"
},
"29": {
"text": "Chris Lydon and Jay Rosen",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/14/chrisLydonAndJayRosen.opml"
},
"30": {
"text": "The state of DNS APIs",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/12/theStateOfDnsApis.opml"
},
"31": {
"text": "I do love DNS",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/12/iDoLoveDns.opml"
},
"32": {
"text": "rss-apps mail list",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/10/rssappsMailList.opml"
},
"33": {
"text": "Give em hell Obama!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/10/giveEmHellHarry.opml"
},
"34": {
"text": "The Darwinism of the tech food chain",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/09/theDarwinismOfTheTechFoodC.opml"
},
"35": {
"text": "Why \"Social Darwinism\" is just right",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/09/whySocialDarwinismIsJustRi.opml"
},
"36": {
"text": "Websites have to get better",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/07/websitesHaveToGetBetter.opml"
},
"37": {
"text": "A Doc Searls irony",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/07/aDocSearlsIrony.opml"
},
"38": {
"text": "A tale of the grass being greener",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/07/aTaleOfTheGrassBeingGreene.opml"
},
"39": {
"text": "American individualism is a myth",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/05/americanIndividualismIsAMy.opml"
},
"40": {
"text": "Mac has a trojan botnet",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/05/macHasATrojanBotnet.opml"
},
"41": {
"text": "Talk with competitors",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/03/talkToCompetitors.opml"
},
"42": {
"text": "Depravity and CNN",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/03/depravityAndCnn.opml"
},
"43": {
"text": "Instability vs Readapaper",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/02/instabilityVsReadapaper.opml"
},
"44": {
"text": "The OMGPOP CEO",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/01/theOmgpopCeo.opml"
},
"45": {
"text": "People want to learn to code?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/04/01/peopleWantToLearnToCode.opml"
}
}
},
"4": {
"text": "May",
"type": "include",
"url": "http://scripting.com/2012/05.opml",
"subs": {
"0": {
"text": "Readlists have feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/31/readlistsHaveFeeds.opml"
},
"1": {
"text": "A little free advice for Bitly",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/30/aLittleFreeAdviceForBitly.opml"
},
"2": {
"text": "Not enough places to post",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/29/notEnoughPlacesToPost.opml"
},
"3": {
"text": "What if Facebook's phone is really a camera?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/28/whatIfFacebooksPhoneIsReal.opml"
},
"4": {
"text": "Wikipedia and explainers",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/27/wikipediaAndExplainers.opml"
},
"5": {
"text": "It's not all mobile",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/27/itsNotAllMobile.opml"
},
"6": {
"text": "A simple proposal for discussion software makers",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/26/simpleProposalToDiscussion.opml"
},
"7": {
"text": "New York tech",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/26/newYorkTech.opml"
},
"8": {
"text": "No deference from me",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/26/noDeferenceFromMe.opml"
},
"9": {
"text": "Tagging offensive drivers",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/26/taggingOffensiveDrivers.opml"
},
"10": {
"text": "Buffet is brilliant",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/21/buffetIsBrilliant.opml"
},
"11": {
"text": "We *can* do better than Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/21/weCanDoBetterThanFacebook.opml"
},
"12": {
"text": "What is a blorkmark?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/20/whatIsABlorkmark.opml"
},
"13": {
"text": "Riding round the Meer",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/20/ridingRoundTheMeer.opml"
},
"14": {
"text": "Outlining and my father",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/19/outliningAndMyFather.opml"
},
"15": {
"text": "Bubble frenzy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/19/bubbleFrenzy.opml"
},
"16": {
"text": "Test post. Please ignore.",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/18/testPostPleaseIgnore.opml"
},
"17": {
"text": "Should you learn to code?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/16/shouldYouLearnToCode.opml"
},
"18": {
"text": "Quick idea for Quora",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/16/quickIdeaForQuora.opml"
},
"19": {
"text": "Chrome is better, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/16/chromeIsBetterDay2.opml"
},
"20": {
"text": "Run against the Republican Party",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/15/runAgainstTheRepublicanPar.opml"
},
"21": {
"text": "Which iPad is better, continued",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/14/whichIpadIsBetterContinued.opml"
},
"22": {
"text": "An offer to universities",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/14/anOfferToUniversities.opml"
},
"23": {
"text": "Switched to Chrome",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/14/switchedToChrome.opml"
},
"24": {
"text": "Paywalls are backward-looking",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/12/paywallsAreLookingBackward.opml"
},
"25": {
"text": "User's review of Dark Shadows",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/11/usersReviewOfDarkShadows.opml"
},
"26": {
"text": "Blogging and Kickstarter go together",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/11/bloggingAndKickstarterGoTo.opml"
},
"27": {
"text": "Which iPad is better?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/11/whichIpadIsBetter.opml"
},
"28": {
"text": "Gmail on the move",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/10/googleInMyUnderwear.opml"
},
"29": {
"text": "The 2012 Knicks are over",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/10/the2012KnicksAreOver.opml"
},
"30": {
"text": "When carpetbaggers rule",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/10/whenCarpetbaggersRule.opml"
},
"31": {
"text": "Finally, a spring bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/09/finallyASpringBikeRide.opml"
},
"32": {
"text": "Can you tell if a company is crazy?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/09/canYouTellIfACompanyIsCraz.opml"
},
"33": {
"text": "Is Twitter right?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/09/isTwitterRight.opml"
},
"34": {
"text": "Death in the news",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/09/deathInTheNews.opml"
},
"35": {
"text": "Menus everywhere",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/08/menusEverywhere.opml"
},
"36": {
"text": "River of News -- FTW!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/07/riverOfNewsFtw.opml"
},
"37": {
"text": "It matters that Yahoo's CEO lied",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/05/itMattersThatYahoosCeoLied.opml"
},
"38": {
"text": "Politics is not a sport",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/05/politicsAndSports.opml"
},
"39": {
"text": "The Knicks season ended last night",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/04/theKnicksSeasonEndedLastNi.opml"
},
"40": {
"text": "How a wifi camera should work",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/03/letsDoSomeTechJournalism.opml"
},
"41": {
"text": "A back-handed compliment",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/02/aBackhandedCompliment.opml"
},
"42": {
"text": "Punching glass in a locker room",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/02/punchingGlassInALockerRoom.opml"
},
"43": {
"text": "They still want to make me a CEO",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/01/theyStillWantToMakeMeACeo.opml"
},
"44": {
"text": "Being a First User",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/05/01/havingFunWithBootstrap.opml"
}
}
},
"5": {
"text": "June",
"type": "include",
"url": "http://scripting.com/2012/06.opml",
"subs": {
"0": {
"text": "My epic rant on health reform",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/30/myEpicRantOnHealthReform.opml"
},
"1": {
"text": "Two suggestions for podcast clients",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/29/twoSuggestionsForPodcastCl.opml"
},
"2": {
"text": "The story of podcasting",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/28/theStoryOfPodcasting.opml"
},
"3": {
"text": "Obama's failure is a web failure",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/28/obamasFailure.opml"
},
"4": {
"text": "Google Glasses on the street in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/27/googleGlassesOnTheStreetIn.opml"
},
"5": {
"text": "CNN really sucks",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/27/cnnReallySucks.opml"
},
"6": {
"text": "Google's killing aspiration",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/27/googlesKillingAspiration.opml"
},
"7": {
"text": "Arizona sovereign? NFW",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/27/arizonaIsSovereignDontMake.opml"
},
"8": {
"text": "I should patent this idea",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/27/iShouldPatentThisIdea.opml"
},
"9": {
"text": "Why Bootstrap is significant, part 12",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/27/whyBootstrapIsSignificantP.opml"
},
"10": {
"text": "What sucks about Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/26/whatSucksAboutTwitter.opml"
},
"11": {
"text": "ICANN follow-up",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/26/icannFollowup.opml"
},
"12": {
"text": "My ideal circumstance",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/25/myIdealCircumstance.opml"
},
"13": {
"text": "ICANN and the Supreme Court",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/25/icannAndTheSupremeCourt.opml"
},
"14": {
"text": "Two case studies in feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/25/aCaseStudyInFeeds.opml"
},
"15": {
"text": "#1 feature request for iPad",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/25/1FeatureForIpad.opml"
},
"16": {
"text": "NYT subscribers come to Flipboard",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/25/nytPaywallComesToFlipboard.opml"
},
"17": {
"text": "A message from developers to users",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/24/aMessageFromDevelopersToUs.opml"
},
"18": {
"text": "A nice Chrome plug-in",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/23/aNiceChromePlugin.opml"
},
"19": {
"text": "What comes after blogging?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/22/whatComesAfterBlogging.opml"
},
"20": {
"text": "Unfilterable emails from Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/22/unwelcomeEmailsFromTwitter.opml"
},
"21": {
"text": "Creating a site with the worldoutline",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/21/creatingASiteWithTheWorldo.opml"
},
"22": {
"text": "World Outline for Designers",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/20/worldOutlineForDesigners.opml"
},
"23": {
"text": "ICANN is wrong",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/20/icannIsWrong.opml"
},
"24": {
"text": "Next \"poets\" piece",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/19/nextPoetsPiece.opml"
},
"25": {
"text": "Disrupting education",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/18/disruptingJournalismEducat.opml"
},
"26": {
"text": "Be a revolutionary, turn off the TV",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/18/beARevolutionaryTurnOffThe.opml"
},
"27": {
"text": "News industry watches as Twitter moves toward the news system of the future",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/17/whatsNextForTwitter.opml"
},
"28": {
"text": "Vectors on parade",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/16/vectorsOnParade.opml"
},
"29": {
"text": "Tech press misses Google/Amazon name grab",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/15/theTechPressIsOutToLunch.opml"
},
"30": {
"text": "Podcast on Thursday",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/15/podcastOnThursday.opml"
},
"31": {
"text": "10 years no smoking Dave",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/14/10YearsNoSmokingDave.opml"
},
"32": {
"text": "Corporate Everything",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/13/corporateEverything.opml"
},
"33": {
"text": "Twitter's (not) level playing field",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/13/twittersLevelPlayingField.opml"
},
"34": {
"text": "The 2012 election should be a referendum on stimulus",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/12/the2012ElectionShouldBeARe.opml"
},
"35": {
"text": "Vector Sports",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/11/vectorSports.opml"
},
"36": {
"text": "If 140 chars isn't enough",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/11/if140CharsIsntEnough.opml"
},
"37": {
"text": "Damn right I have an RSS feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/10/damnRightIHaveAnRssFeed.opml"
},
"38": {
"text": "Prometheus mini-review",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/10/prometheusMinireview.opml"
},
"39": {
"text": "Offer to #ONA12",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/10/offerToOna12.opml"
},
"40": {
"text": "12-steps for abused children",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/10/12stepsForAbusedChildren.opml"
},
"41": {
"text": "It's safe to ignore political news",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/09/itsSafeToIgnorePoliticalNe.opml"
},
"42": {
"text": "No bug reports on Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/08/noBugReportsOnTwitter.opml"
},
"43": {
"text": "Show your feed visibly",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/08/showYourFeedVisibly.opml"
},
"44": {
"text": "New discussion paradigm",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/08/newDiscussionParadigms.opml"
},
"45": {
"text": "Woz",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/08/woz.opml"
},
"46": {
"text": "Banking reform will be good for business",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/08/whyBankingReformWillBeGood.opml"
},
"47": {
"text": "What Jobs left untouched",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/07/notSayingJobsWasWrong.opml"
},
"48": {
"text": "News guys -- Twitter is not your friend",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/07/newsGuysTwitterIsNotYourFr.opml"
},
"49": {
"text": "Today's screencast",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/06/todaysScreencast.opml"
},
"50": {
"text": "Twitter's new bird logo",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/06/twittersNewBirdLogo.opml"
},
"51": {
"text": "The many lives of Frontier",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/06/theManyLivesOfFrontier.opml"
},
"52": {
"text": "When bubbles burst...",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/05/whenBubblesBurst.opml"
},
"53": {
"text": "An array of items for discussion",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/04/anArrayOfItemsForDiscussio.opml"
},
"54": {
"text": "I'm still here",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/03/imStillHere.opml"
},
"55": {
"text": "NY Times is more than sexist",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/03/nyTimesIsMoreThanSexist.opml"
},
"56": {
"text": "Blogging tools should archive in RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/03/bloggingToolsShouldArchive.opml"
},
"57": {
"text": "Sexist body slamming goes both ways",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/02/itGoesBothWays.opml"
},
"58": {
"text": "How to end junk news",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/02/howToEndJunkNews.opml"
},
"59": {
"text": "After X years programming",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/06/01/afterXYearsProgramming.opml"
}
}
},
"6": {
"text": "July",
"type": "include",
"url": "http://scripting.com/2012/07.opml",
"subs": {
"0": {
"text": "One foot on the platform...",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/31/oneFootOnThePlatform.opml"
},
"1": {
"text": "Can you do journalism on Twitter?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/30/canYouDoJournalismOnTwitte.opml"
},
"2": {
"text": "Twitter bans NBC critic",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/30/twitterBansNbcCritic.opml"
},
"3": {
"text": "NBC looks at Twitter and sees hamsters",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/29/nbcSeesTwitterAsABunchOfHa.opml"
},
"4": {
"text": "I'm \"self-made\" except...",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/28/imSelfmadeExcept.opml"
},
"5": {
"text": "Don't let some plutocrat ruin your life",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/28/dontLetSomePlutocratRunYou.opml"
},
"6": {
"text": "Meanwhile RSS is some powerful shit",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/27/meanwhileRssIsSomePowerful.opml"
},
"7": {
"text": "Do I care what Apple does with RSS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/27/doICareWhatAppleDoesWithRs.opml"
},
"8": {
"text": "Why politics stops at the water's edge",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/26/whyPoliticsStopsAtTheWater.opml"
},
"9": {
"text": "A historic document",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/26/aHistoricDocument.opml"
},
"10": {
"text": "OAuth 1 is fine",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/26/oauth1IsFine.opml"
},
"11": {
"text": "Speaker for the Dead",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/25/speakerForTheDead.opml"
},
"12": {
"text": "Not blaming anyone",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/25/notBlamingAnyone.opml"
},
"13": {
"text": "An open Twitter-like ecosystem",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/25/anOpenTwitterlikeEcosystem.opml"
},
"14": {
"text": "Next thing for Twitter... a CMS",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/25/nextThingFromTwitterACms.opml"
},
"15": {
"text": "VC out on a limb",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/24/vcOutOnALimb.opml"
},
"16": {
"text": "Half of America is crazy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/24/halfOfAmericaIsCrazy.opml"
},
"17": {
"text": "Ruggedized content",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/24/ruggedizedContent.opml"
},
"18": {
"text": "Busy people who want help",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/24/busyPeopleWhoWantHelp.opml"
},
"19": {
"text": "I am not busy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/22/iAmNotBusy.opml"
},
"20": {
"text": "Manton Reece on permanence",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/21/mantonReeceOnPermanence.opml"
},
"21": {
"text": "Users will take control",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/21/usersWillTakeControl.opml"
},
"22": {
"text": "More on the Library of Congress and Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/20/moreOnLocAndTwitter.opml"
},
"23": {
"text": "Goodbye Jeremy Lin",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/18/goodbyeJeremyLin.opml"
},
"24": {
"text": "TIJABP",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/18/tijabp.opml"
},
"25": {
"text": "Why does Google ignore the RSS spec?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/18/whyDoesGoogleIgnoreTheRssS.opml"
},
"26": {
"text": "Speaker for the Dead",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/17/speakerForTheDead.opml"
},
"27": {
"text": "Why the Library of Congress is wrong to archive Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/17/whyTheLocArchivingTwitterI.opml"
},
"28": {
"text": "What is a Public Editor?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/17/whatIsAPublicEditor.opml"
},
"29": {
"text": "iPad with LTE is POTY",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/17/ipadWithLteIsPoty.opml"
},
"30": {
"text": "How blogging came to be",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/16/howBloggingCameToBe.opml"
},
"31": {
"text": "For-pay services",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/15/forpayServices.opml"
},
"32": {
"text": "The twilight of the User/VC",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/15/dontTalkAboutVcs.opml"
},
"33": {
"text": "Podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/13/podcast.opml"
},
"34": {
"text": "Witless Mitt",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/13/witlessMitt.opml"
},
"35": {
"text": "Un-patents",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/13/unpatents.opml"
},
"36": {
"text": "Following a #tag",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/13/followingATag.opml"
},
"37": {
"text": "US govt picks on UK youth",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/13/usGovtPicksOnUkYouth.opml"
},
"38": {
"text": "West Wing for News, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/13/westWingForNewsPartIi.opml"
},
"39": {
"text": "The West Wing for News",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/12/theWestWingForNews.opml"
},
"40": {
"text": "A simple standard for RT",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/12/aSimpleStandardForLinkblog.opml"
},
"41": {
"text": "Do you think government is bad?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/12/doYouThinkGovernmentIsBad.opml"
},
"42": {
"text": "More Twitter awfulness",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/11/moreTwitterAwfulness.opml"
},
"43": {
"text": "Repubs are Keynsian when it suits them",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/11/repubsAreKeynsian.opml"
},
"44": {
"text": "Katrina, earthquakes and human scale",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/11/katrinaAndHumanScale.opml"
},
"45": {
"text": "How future-safe was the first Harvard blogging site?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/10/aNoteOnFuturesafing.opml"
},
"46": {
"text": "Firefox makes shitty software",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/10/smartFirefoxDeveloper.opml"
},
"47": {
"text": "Twitter is a Corporate API",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/07/07/twitterIsACorporateApi.opml"
}
}
},
"7": {
"text": "August",
"type": "include",
"url": "http://scripting.com/2012/08.opml",
"subs": {
"0": {
"text": "There's so much to hate in Romney",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/31/muchToHateInRomney.opml"
},
"1": {
"text": "The Republican fallacy",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/30/theRepublicanFallacy.opml"
},
"2": {
"text": "Where Apple and Twitter are headed",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/29/whereAppleAndTwitterAreHea.opml"
},
"3": {
"text": "Dear news orgs, re Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/28/dearNewsOrgsReTwitter.opml"
},
"4": {
"text": "What I wanted, part II",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/28/whatIWantedPartIi.opml"
},
"5": {
"text": "Levity vs racism",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/27/levityVsRacism.opml"
},
"6": {
"text": "What I wanted",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/27/whatIWanted.opml"
},
"7": {
"text": "Respect",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/27/respect.opml"
},
"8": {
"text": "Long drives are good for gestalts",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/25/longDrivesAreGoodForGestal.opml"
},
"9": {
"text": "Protocols don't mean much",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/22/protocolsDontMeanMuch.opml"
},
"10": {
"text": "Thursday by Lake Mendota",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/22/thursdayByLakeMendota.opml"
},
"11": {
"text": "A five-minute podcast to NakedJen",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/17/aFiveminutePodcastToNakedj.opml"
},
"12": {
"text": "We could make history",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/17/weCouldMakeHistory.opml"
},
"13": {
"text": "Stupid Corporate Tricks",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/17/stupidCorporateTricks.opml"
},
"14": {
"text": "The web is socialist, but it's not a family",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/16/privatizingAndSocializing.opml"
},
"15": {
"text": "Help the movement",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/16/helpTheMovement.opml"
},
"16": {
"text": "New! New! New! (not yet)",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/15/newNewNew.opml"
},
"17": {
"text": "Tabbed River 2.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/15/tabbedRivers20.opml"
},
"18": {
"text": "Everything's an inkblot",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/14/everythingsAnInkblot.opml"
},
"19": {
"text": "Another use for $50",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/13/anotherUseFor50.opml"
},
"20": {
"text": "Making a Twitter clone, day II",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/11/makingATwitterCloneDayIi.opml"
},
"21": {
"text": "If I were making a Twitter clone...",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/10/ifIWereMakingATwitterClone.opml"
},
"22": {
"text": "Chipping away at \"hard\" -- for the poets",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/06/chippingAwayAtHardForThePo.opml"
},
"23": {
"text": "Tabbed rivers: One small step for news",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/06/oneSmallStepForNews.opml"
},
"24": {
"text": "What has podcasting accomplished?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/06/whatHasPodcastingAccomplis.opml"
},
"25": {
"text": "A tweetstream as a labor of love (and money)",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/04/tweetstreamAsALaborOfLoveA.opml"
},
"26": {
"text": "The Silicon Valley approach is stale",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/02/theSiliconValleyApproachIs.opml"
},
"27": {
"text": "Hashtags and dollar signs",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/08/01/hashtagsAndDollarSigns.opml"
}
}
},
"8": {
"text": "September",
"type": "include",
"url": "http://scripting.com/2012/09.opml",
"subs": {
"0": {
"text": "Thread summary",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/29/threadSummary.opml"
},
"1": {
"text": "A roadmap-y podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/24/aRoadmapyPodcast.opml"
},
"2": {
"text": "Comments website",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/21/commentsWebsite.opml"
},
"3": {
"text": "It's Manifesto Time!",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/19/itsManifestoTime.opml"
},
"4": {
"text": "A pretty good podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/18/aPrettyGoodPodcast.opml"
},
"5": {
"text": "What's new in OPML Comments",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/17/opmlCommentsWeek2.opml"
},
"6": {
"text": "A relatively quiet revolution",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/11/aRelativelyQuietRevolution.opml"
},
"7": {
"text": "RSS in JSON, for real?",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/10/rssInJsonForReal.opml"
},
"8": {
"text": "Nation-building at home",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/08/nationbuildingAtHome.opml"
},
"9": {
"text": "river.js is a format",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/06/riverjsIsAFormat.opml"
},
"10": {
"text": "Threads & Scripting",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/06/threadsScripting.opml"
},
"11": {
"text": "Agile development & WMSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/03/agileProgrammingWmss.opml"
},
"12": {
"text": "Voting matters",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/02/votingMatters.opml"
},
"13": {
"text": "Tabbed River 3",
"type": "blogpost",
"url": "http://scripting.com/stories/2012/09/02/tabbedRiver3.opml"
}
}
}
}
},
"1": {
"text": "2011",
"subs": {
"0": {
"text": "January",
"type": "include",
"url": "http://scripting.com/2011/01.opml",
"subs": {
"0": {
"text": "What is deck.ly?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/31/whatIsDeckly.opml"
},
"1": {
"text": "Back in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/30/backInNyc.opml"
},
"2": {
"text": "Heading west",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/25/headingWest.opml"
},
"3": {
"text": "EC2 for European Poets?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/25/ec2ForEuropeanPoets.opml"
},
"4": {
"text": "BitTorrent and RSS sittin in a tree",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/24/bittorrentAndRssSittinInAT.opml"
},
"5": {
"text": "New Yorkers make good villains",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/23/aNewYorkVignette.opml"
},
"6": {
"text": "Leaks software will have broad applications",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/23/leaksSoftwareWillHaveBroad.opml"
},
"7": {
"text": "A new meaning of Too Big To Fail",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/22/aNewMeaningOfTooBigToFail.opml"
},
"8": {
"text": "Dear Keith Olbermann",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/22/dearKeithOlbermann.opml"
},
"9": {
"text": "Do you remember how OPML used to work?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/22/doYouRememberHowOpmlUsedTo.opml"
},
"10": {
"text": "Educating the journo-programmer",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/21/theJournoprogrammer.opml"
},
"11": {
"text": "Twitter's \"What's Happening?\" box",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/19/twittersWhatsHappeningBox.opml"
},
"12": {
"text": "NYC mailbox",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/19/nycMailbox.opml"
},
"13": {
"text": "Brockman's science",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/19/brockmansScience.opml"
},
"14": {
"text": "EC2 for Poets, on the ground",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/18/ec2ForPoetsOnTheGround.opml"
},
"15": {
"text": "EC2 for Poets, viewed at 50,000 feet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/18/ec2ForPoetsRoadmap.opml"
},
"16": {
"text": "Please see \"Inside Job\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/18/pleaseSeeInsideJob.opml"
},
"17": {
"text": "2 Brothers Pizza on St Marks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/17/2BrothersPizza.opml"
},
"18": {
"text": "Memolane is sweet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/17/memolaneIsSweet.opml"
},
"19": {
"text": "EC2 for Poets, v2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/16/ec2ForPoetsV2.opml"
},
"20": {
"text": "Three hyperlocals",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/15/threeHyperlocals.opml"
},
"21": {
"text": "Dear Firefox, please keep the RSS icon",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/15/mozillaPleaseKeepTheRssIco.opml"
},
"22": {
"text": "Why bucket-sharing is important",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/13/whyBucketsharingIsSoImport.opml"
},
"23": {
"text": "Silo-free everything",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/12/silofreeEverything.opml"
},
"24": {
"text": "Start here: No guns at political events",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/11/noMoreGunsAtPoliticalEvent.opml"
},
"25": {
"text": "Kroc Camen proves RSS is very much alive",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/11/krocCamenProvesRssIsVeryMu.opml"
},
"26": {
"text": "How to share a bucket on S3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/11/howToShareABucketOnS3.opml"
},
"27": {
"text": "Verizon/Apple deals for existing users?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/11/verizonDealsForExistingUse.opml"
},
"28": {
"text": "Words with Friends, Facebook & Apple",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/10/wordsWithFriends.opml"
},
"29": {
"text": "Connecting reallysimple.org to Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/10/connectingReallysimpleorgT.opml"
},
"30": {
"text": "NYT on future-safe archives",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/10/nytOnFuturesafeArchives.opml"
},
"31": {
"text": "Republican sins",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/09/republicans.opml"
},
"32": {
"text": "apidocs.reallysimple.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/09/apidocsreallysimpleorg.opml"
},
"33": {
"text": "You can get anything you want...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/08/youCanGetAnythingYouWant.opml"
},
"34": {
"text": "Why you got blocked",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/06/whyYouGotBlocked.opml"
},
"35": {
"text": "Everything is dead",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/05/aReallyGoodAnalogy.opml"
},
"36": {
"text": "Upcoming: The minimal blogging tool",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/05/upcomingTheMinimalBlogging.opml"
},
"37": {
"text": "Things RSS can't (and can) do",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/04/thingsRssCantDo.opml"
},
"38": {
"text": "Where today's flow comes from",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/04/whereTodaysFlowComesFrom.opml"
},
"39": {
"text": "The beautification of wikiriver.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/04/theBeautificationOfWikiriv.opml"
},
"40": {
"text": "What I mean by \"the open web\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/04/whatIMeanByTheOpenWeb.opml"
},
"41": {
"text": "What will become of Twitter?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/03/whatWillBecomeOfTwitter.opml"
},
"42": {
"text": "Rebooting RSS, revisited",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/03/rebootingRssRevisited.opml"
},
"43": {
"text": "The world is socialist",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/01/01/theWorldIsSocialist.opml"
}
}
},
"1": {
"text": "February",
"type": "include",
"url": "http://scripting.com/2011/02.opml",
"subs": {
"0": {
"text": "Rebooting the News today at noon",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/28/rebootingTheNewsTodayAtNoo.opml"
},
"1": {
"text": "Inside Job wins Best Documentary",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/28/insideJobWinsBestDocumenta.opml"
},
"2": {
"text": "Box.net raises $48 million",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/26/boxnetRaises48Million.opml"
},
"3": {
"text": "My Oscar picks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/26/myOscarPicks.opml"
},
"4": {
"text": "Keith Richards is a hacker!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/26/mediaObservations.opml"
},
"5": {
"text": "Twitter is down",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/26/twitterIsDown.opml"
},
"6": {
"text": "Radio UserLand serialnum",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/25/radioUserlandSerialnum.opml"
},
"7": {
"text": "Viewing RSS in a browser is broken. Here's the fix..",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/25/viewingRssInABrowser.opml"
},
"8": {
"text": "Is the Verizon iPhone a flop?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/23/isTheVerizonIphoneAFlop.opml"
},
"9": {
"text": "Random Tuesday observations",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/22/randomTuesdayObservations.opml"
},
"10": {
"text": "We're going to try Talkshoe",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/21/wereGoingToTryTalkshoe.opml"
},
"11": {
"text": "Tech is ready to redefine news",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/19/techIsReadyToRedefineNews.opml"
},
"12": {
"text": "My Ode to Rackspace",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/19/rackspace.opml"
},
"13": {
"text": "It's about the users, dummy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/18/itsAboutTheUsersDummy.opml"
},
"14": {
"text": "Twitter tests their kill switch",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/18/twitterTestsTheirKillSwitc.opml"
},
"15": {
"text": "Suggestion for Google Reader devs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/18/suggestionForGoogleReaderD.opml"
},
"16": {
"text": "How to map a domain to an S3 bucket",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/17/howToMapADomainToAnS3Bucke.opml"
},
"17": {
"text": "I'm famous for my teases",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/17/imFamousForMyTeases.opml"
},
"18": {
"text": "Phillip Smith on dynamic OPML",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/17/phillipSmithOnDynamicOpml.opml"
},
"19": {
"text": "Mr Cooper in Tahrir Square during the revolution",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/16/mrCooperInTahrirSquareDuri.opml"
},
"20": {
"text": "My rivers and their OPMLs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/16/myRiversAndTheirOpmls.opml"
},
"21": {
"text": "Do you know Eben Moglen?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/15/doYouKnowEbenMoglen.opml"
},
"22": {
"text": "Requests for makers of Twitter client apps",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/14/ziggingToTwittersZag.opml"
},
"23": {
"text": "Rebooting the News today at noon",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/14/rebootingTheNewsTodayAtNoo.opml"
},
"24": {
"text": "Corporate blogging silos in the news",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/14/corporateBloggingSilosInTh.opml"
},
"25": {
"text": "How I read the news",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/13/howIReadTheNews.opml"
},
"26": {
"text": "A fractional horsepower news network",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/13/strengtheningTheInternet.opml"
},
"27": {
"text": "Microsoft got in trouble doing what Twitter is doing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/12/microsoftGotInTroubleForDo.opml"
},
"28": {
"text": "\"Find me stuff I'm interested in\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/12/findMeStuffImInterestedIn.opml"
},
"29": {
"text": "Pages from Computer Lib",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/11/pagesFromComputerLib.opml"
},
"30": {
"text": "Why Twitter is so valuable",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/10/whyTwitterIsSoValuable.opml"
},
"31": {
"text": "Techmeme moves toward Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/10/techmemeMovesTowardTwitter.opml"
},
"32": {
"text": "Adding a message box to my river",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/10/addingAMessageBoxToMyRiver.opml"
},
"33": {
"text": "Will JSON replace XML in RSS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/10/faqRssInJson.opml"
},
"34": {
"text": "A river of news in JSON",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/09/aRiverOfNewsInJson.opml"
},
"35": {
"text": "Join your community on the Internet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/08/joinYourCommunityOnTheInte.opml"
},
"36": {
"text": "Why I feel good about staying with RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/08/whyIFeelGoodAboutStayingWi.opml"
},
"37": {
"text": "The Internet is for revolution",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/06/theInternetIsForRevolution.opml"
},
"38": {
"text": "Can I write a Scripting2 blog post here?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/05/canIWriteAScripting2BlogPo.opml"
},
"39": {
"text": "They zig when they should zag",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/04/theyZigWhenTheyShouldZag.opml"
},
"40": {
"text": "Following-up on deck.ly",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/03/followingupOnDeckly.opml"
},
"41": {
"text": "No feeds on The Daily",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/03/noFeedsOnTheDaily.opml"
},
"42": {
"text": "Should we trust Bill Keller?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/03/shouldWeTrustBillKeller.opml"
},
"43": {
"text": "Does Assange have an agenda?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/02/doesAssangeHaveAnAgenda.opml"
},
"44": {
"text": "CNN falls into the abyss",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/02/02/cnnFallsIntoTheAbyss.opml"
}
}
},
"2": {
"text": "March",
"type": "include",
"url": "http://scripting.com/2011/03.opml",
"subs": {
"0": {
"text": "Ha ha ha April Fool ha ha ha",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/31/haHaHaAprilFoolHaHaHa.opml"
},
"1": {
"text": "Excellence in coffee",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/31/excellenceInCoffee.opml"
},
"2": {
"text": "Software end-game, like film editing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/30/softwareEndgameLikeFilmEdi.opml"
},
"3": {
"text": "My tweetstream, here on Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/30/softwareEndgameLikeFilmEdi.opml"
},
"4": {
"text": "Rebooting the News today at Noon Eastern",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/28/rebootingTheNewsTodayAtNoo.opml"
},
"5": {
"text": "Are you buying into the Times paywall?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/28/areYouBuyingIntoTheTimesPa.opml"
},
"6": {
"text": "Is it a bubble? It matters if we think it is.",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/27/isItABubbleItMattersIfWeTh.opml"
},
"7": {
"text": "Fractional horsepower TwitterFeed? Sure, why not.",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/26/aFractionalHorsepowerTwitt.opml"
},
"8": {
"text": "An Internet inside an Internet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/25/anInternetInsideAnInternet.opml"
},
"9": {
"text": "Pics feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/24/picsFeed.opml"
},
"10": {
"text": "Dropbox question",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/24/dropboxQuestion.opml"
},
"11": {
"text": "A mistake I've been making",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/24/aMistakeIveBeenMaking.opml"
},
"12": {
"text": "How to terminate a web service",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/24/howToTerminateAWebService.opml"
},
"13": {
"text": "Here comes the \"social camera\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/24/heresTheSocialCamera.opml"
},
"14": {
"text": "Nasty gmail phish",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/23/nastyGmailPhish.opml"
},
"15": {
"text": "Deprecated by Google?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/23/haveWeBeenDeprecatedByGoog.opml"
},
"16": {
"text": "Advice for newbie OPML programmers",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/23/adviceForNewbieOpmlProgram.opml"
},
"17": {
"text": "Call for startup: Easy domain editing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/22/callForStartupEasyDomainEd.opml"
},
"18": {
"text": "October 13, 1994",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/21/october131994.opml"
},
"19": {
"text": "What Twitter and the NYT have in common",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/20/whatTwitterAndTheNytHaveIn.opml"
},
"20": {
"text": "Question for the NYT",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/19/questionForTheNyt.opml"
},
"21": {
"text": "We should invest in public broadcasting",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/19/whyWeShouldKeepInvestingIn.opml"
},
"22": {
"text": "My iPad arrived",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/18/myIpadArrived.opml"
},
"23": {
"text": "s3.scripting.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/17/s3scriptingcom.opml"
},
"24": {
"text": "JSONified RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/17/jsonifiedRss.opml"
},
"25": {
"text": "Tweeting about Twitter's Terms",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/17/tweetingAboutTwittersTerms.opml"
},
"26": {
"text": "Comments on NYT paywall announcement",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/17/commentsOnNytPaywallAnnoun.opml"
},
"27": {
"text": "Yet another test post",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/17/yetAnotherTestPost.opml"
},
"28": {
"text": "Test-post-plus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/16/testpostplus.opml"
},
"29": {
"text": "A new feature of RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/16/aNewFeatureOfRss.opml"
},
"30": {
"text": "Will we see the NY Times paywall soon?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/16/willWeSeeTheNyTimesFirewal.opml"
},
"31": {
"text": "Goodnight Zune",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/15/ifOnly.opml"
},
"32": {
"text": "Twitter posts don't have titles",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/15/twitterPostsDontHaveTitles.opml"
},
"33": {
"text": "Minimal blogging tool, working!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/15/minimalBloggingToolWorking.opml"
},
"34": {
"text": "Mike hit the jackpot",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/14/mikeHitTheJackpot.opml"
},
"35": {
"text": "Today's pot-luck pod-cast",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/14/todaysPotluckPodcast.opml"
},
"36": {
"text": "My developer roadmap",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/12/myDeveloperRoadmap.opml"
},
"37": {
"text": "Twitter's new developer roadmap",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/11/twittersNewDeveloperRoadma.opml"
},
"38": {
"text": "Looking for quake feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/11/lookingForQuakeNewsFeeds.opml"
},
"39": {
"text": "Blocked from retweeting?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/10/blockedFromRetweeting.opml"
},
"40": {
"text": "Apache plus Dropbox = Hello World",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/10/apachePlusDropboxHelloWorl.opml"
},
"41": {
"text": "Can't run Scripting News on Amazon S3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/10/canIRunScriptingNewsOnAmaz.opml"
},
"42": {
"text": "Terrified of dying",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/09/terrifiedOfDying.opml"
},
"43": {
"text": "I could run Scripting News from S3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/09/iCouldRunScriptingNewsFrom.opml"
},
"44": {
"text": "The limits of Twitter and Facebook, the bubble",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/09/theLimitsOfTwitterAndFaceb.opml"
},
"45": {
"text": "How to use the new host-a-website feature on S3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/08/howToUseTheHostawebsiteFea.opml"
},
"46": {
"text": "Why I love Adjix",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/08/whyILoveAdjix.opml"
},
"47": {
"text": "What makes local sites hum?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/07/whatMakesLocalSitesHum.opml"
},
"48": {
"text": "What is a dickbar?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/06/whatIsADickbar.opml"
},
"49": {
"text": "Using DNS as a thin ID system",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/04/usingDnsAsTheThinIdSystem.opml"
},
"50": {
"text": "Having a big prob with EC2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/03/havingABigProbWithEc2.opml"
},
"51": {
"text": "Thin identity -- the missing web service",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/03/thinIdentityTheMissingWebS.opml"
},
"52": {
"text": "Who will play Assange in Spielberg's movie?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/02/whoWillPlayAssangeInSpielb.opml"
},
"53": {
"text": "Will today's Apple event be webcast?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/03/02/willTodaysAppleEventBeWebc.opml"
}
}
},
"3": {
"text": "April",
"type": "include",
"url": "http://scripting.com/2011/04.opml",
"subs": {
"0": {
"text": "Plans of mice and men",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/27/plansOfMiceAndMen.opml"
},
"1": {
"text": "I'm here in Amsterdam and having a great time",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/27/imHereInAmsterdamAndHaving.opml"
},
"2": {
"text": "Stuck in the blogger's lounge at JFK",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/26/stuckInTheBloggersLoungeAt.opml"
},
"3": {
"text": "Coordinates -- USA, for now",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/26/coordinatesUsaForNow.opml"
},
"4": {
"text": "Public dropbox without the lock-in",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/25/publicDropboxWithoutTheLoc.opml"
},
"5": {
"text": "We conquered nature, that's our main problem",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/24/weConqueredNatureThatsOurM.opml"
},
"6": {
"text": "Finally a bike-riding day",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/24/finallyABikeridingDay.opml"
},
"7": {
"text": "Someday writers will want to opt-out of Facebook and Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/23/somedayWritersWillWantOutO.opml"
},
"8": {
"text": "I got a Nexus S for Europe",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/23/iGotANexusS.opml"
},
"9": {
"text": "Unlocked Android GSM Amazon",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/22/unlockedAndroidGsmAmazon.opml"
},
"10": {
"text": "Let's have fun with European phones",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/22/letsHaveFunWithEuropeanPho.opml"
},
"11": {
"text": "Who is Donald Trump playing?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/22/whoIsDonaldTrumpPlaying.opml"
},
"12": {
"text": "Internets everywhere!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/21/internetsEverywhere.opml"
},
"13": {
"text": "An open source jQuery project",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/21/anOpenSourceJqueryProject.opml"
},
"14": {
"text": "I need to learn jQuery",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/20/iNeedToLearnJquery.opml"
},
"15": {
"text": "The America our parents left us",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/19/theAmericaOurParentsLeftUs.opml"
},
"16": {
"text": "Who runs Twitter?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/19/whoRunsTwitter.opml"
},
"17": {
"text": "Ignore what you don't understand",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/19/ignoreWhatYouDontUnderstan.opml"
},
"18": {
"text": "Lots of catching up to do",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/19/lotsOfCatchingUpToDo.opml"
},
"19": {
"text": "Ride #3, south, windy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/17/ride3SouthWindy.opml"
},
"20": {
"text": "I'll work for a Republican if I have to",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/17/illWorkForARepublicanIfIHa.opml"
},
"21": {
"text": "Scoble's \"social camera\" bootstrap",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/17/aSocialCameraBootstrap.opml"
},
"22": {
"text": "Twitter could put an end to paywalls",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/16/twitterCouldPutAnEndToPayw.opml"
},
"23": {
"text": "Let's build a new Internet in academia",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/15/letsBuildANewInternetInAca.opml"
},
"24": {
"text": "Rackspace cloud beats Amazon EC2, by a lot",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/14/rackspaceBeatsEc2ByALot.opml"
},
"25": {
"text": "Second ride of 2011",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/14/secondRideOf2011.opml"
},
"26": {
"text": "$10 billion for Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/14/10BillionForTwitter.opml"
},
"27": {
"text": "How high?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/14/howHigh.opml"
},
"28": {
"text": "Hooray for the President!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/14/hoorayForThePresident.opml"
},
"29": {
"text": "Angry Republicans 2012",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/angryRepublicans2012.opml"
},
"30": {
"text": "scripting.com running on Linux now",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/scriptingcomRunningOnLinux.opml"
},
"31": {
"text": "A call for Frontier jocks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/aCallForFrontierJocks.opml"
},
"32": {
"text": "Must-read interview with Noah Glass",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/stopEverythingAndReadThisI.opml"
},
"33": {
"text": "Great news: UberMedia to launch Twitter competitor",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/greatNewsUbermediaToLaunch.opml"
},
"34": {
"text": "Framing and Obama",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/framingAndObama.opml"
},
"35": {
"text": "Cure for that dragging-your-ass feeling! ;->",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/theCureForTheDraggingyoura.opml"
},
"36": {
"text": "Help! config.root is too big",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/13/helpConfigrootIsTooBig.opml"
},
"37": {
"text": "An Instapaper idea?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/12/anInstapaperIdea.opml"
},
"38": {
"text": "AOL is doing layoffs the wrong way",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/12/aolIsDoingLayoffsTheWrongW.opml"
},
"39": {
"text": "News needs an anti-virus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/12/newsNeedsAnAntivirus.opml"
},
"40": {
"text": "Testing again",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/12/testingAgain.opml"
},
"41": {
"text": "Mel Gibson's career should be over",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/11/iDontWantToHearFromMelGibs.opml"
},
"42": {
"text": "To the young brilliant minds",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/11/toTheYoungBrilliantMinds.opml"
},
"43": {
"text": "Tweet of the Century",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/10/tweetOfTheCentury.opml"
},
"44": {
"text": "Encoding trouble with Twitter's OAuth",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/10/encodingTroubleWithTwitter.opml"
},
"45": {
"text": "Finding out about conferences before they happen",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/10/findingOutAboutConferences.opml"
},
"46": {
"text": "First ride of 2011!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/09/firstRideOf2011.opml"
},
"47": {
"text": "Why some tech companies have expiration dates",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/09/someTechCompaniesHaveExpir.opml"
},
"48": {
"text": "A domain for a feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/09/aDomainForAFeed.opml"
},
"49": {
"text": "Amazon EC2 sucks at launching Windows instances",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/08/amazonEc2SucksAtLaunchingW.opml"
},
"50": {
"text": "My Twitter/OAuth code stopped working last night",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/08/myOauthCodeStoppedWorking.opml"
},
"51": {
"text": "11 free hackathon ideas",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/08/11FreeHackathonIdeas.opml"
},
"52": {
"text": "To the people of Wisconsin's 1st District...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/06/writingIntoRyansDistrict.opml"
},
"53": {
"text": "If I were Jack",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/06/ifIWereJack.opml"
},
"54": {
"text": "Test post",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/05/testPost.opml"
},
"55": {
"text": "NYT paywall on April 4",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/04/nytPaywallOnApril4.opml"
},
"56": {
"text": "Andy Warhol in Union Square",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/04/andyWarholInUnionSquare.opml"
},
"57": {
"text": "Mysterious tools behind Engadget move?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/04/mysteriousToolsBehindEngad.opml"
},
"58": {
"text": "An idea for Mayor Bloomberg",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/04/anIdeaForMayorBloomberg.opml"
},
"59": {
"text": "Attn bike jocks -- How does this pump work??",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/03/attnBikeJocks.opml"
},
"60": {
"text": "My linkblog merges with my realblog",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/02/myLinkblogMergesWithMyReal.opml"
},
"61": {
"text": "Ideas for conferences",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/01/ideasForConferences.opml"
},
"62": {
"text": "Pity the poor Tea Party",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/01/pityThePoorTeaParty.opml"
},
"63": {
"text": "Ideas for Evan Williams",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/01/ideasForEvanWilliams.opml"
},
"64": {
"text": "Invite-only conferences and open formats",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/04/01/inviteonlyConferencesAndOp.opml"
}
}
},
"4": {
"text": "May",
"type": "include",
"url": "http://scripting.com/2011/05.opml",
"subs": {
"0": {
"text": "What to watch for in Twitter's photo-sharing feature",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/31/whatToWatchForInTwittersPh.opml"
},
"1": {
"text": "Is there an education bubble?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/31/isThereAnEducationBubble.opml"
},
"2": {
"text": "Flickr becomes important again, imho",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/30/flickrBecomesImportantAgai.opml"
},
"3": {
"text": "Biking round the tip of Manhattan",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/30/bikingRoundTheTipOfManhatt.opml"
},
"4": {
"text": "The importance of perspective",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/30/theImportanceOfPerspective.opml"
},
"5": {
"text": "Facebook is building a browser",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/29/facebookIsBuildingABrowser.opml"
},
"6": {
"text": "Iran's idea -- not far-fetched, at all",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/28/iransIdeaNotFarfetchedAtAl.opml"
},
"7": {
"text": "Butt hurt, Fleet Week bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/28/buttHurtFleetWeekBikeRide.opml"
},
"8": {
"text": "11 mile ride, with a blowout!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/27/11MileRideWithABlowout.opml"
},
"9": {
"text": "Archiving my Flickr photos and drawings",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/27/archivingMyFlickrPhotosAnd.opml"
},
"10": {
"text": "Should I be linking to the NY Times?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/27/shouldIBeLinkingToTheNyTim.opml"
},
"11": {
"text": "Themable, Day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/26/themableDay2.opml"
},
"12": {
"text": "Let's make this app \"themable\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/24/cssDesignPuzzle.opml"
},
"13": {
"text": "HBO GO (with Verizon) -- doesn't go",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/23/hboGoDoesntGo.opml"
},
"14": {
"text": "Apache for Poets",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/23/apacheForPoets.opml"
},
"15": {
"text": "Browsers without address bars?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/21/browsersWithoutAddressBars.opml"
},
"16": {
"text": "Open letter to incubator-entrepreneurs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/21/openLetterToIncubatorentre.opml"
},
"17": {
"text": "Apple should protect its developers (and users)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/21/yesAppleShouldProtectItsDe.opml"
},
"18": {
"text": "Stereotypes in software",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/21/ageStereotypesInSoftware.opml"
},
"19": {
"text": "Deadness",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/20/deadness.opml"
},
"20": {
"text": "Fixing a bug",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/20/testPost.opml"
},
"21": {
"text": "Conversation on Twitter degrades further",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/19/conversationOnTwitterDegra.opml"
},
"22": {
"text": "How dates work in the Flickr API?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/19/questionAboutTheFlickrApi.opml"
},
"23": {
"text": "Test post",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/18/testPost.opml"
},
"24": {
"text": "Why outlines work",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/18/whyOutlinesWork.opml"
},
"25": {
"text": "Why Microsoft bought Skype (Fanciful)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/18/whyMicrosoftBoughtSkypeFan.opml"
},
"26": {
"text": "The free geek manifesto",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/17/theFreeGeekManifesto.opml"
},
"27": {
"text": "RSS and CSS and Zeldman",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/16/rssAndCss.opml"
},
"28": {
"text": "Tumblr and my Blork feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/16/tumblrAndMyBlorkFeed.opml"
},
"29": {
"text": "Social media bubble pop",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/15/socialMediaBubblePop.opml"
},
"30": {
"text": "Domain-mapping is as nice as I hoped",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/14/dnsmappingIsAsNiceAsIHoped.opml"
},
"31": {
"text": "Mississippi River heading into Atchafalaya",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/14/oldManRiverHeadingTowardMo.opml"
},
"32": {
"text": "Twitter-only reporters? Yes, of course",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/14/twitteronlyReporters.opml"
},
"33": {
"text": "Downloading my videos from Flickr",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/14/downloadingYourVideosFromF.opml"
},
"34": {
"text": "Does this exist? Easy-Linux-EC2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/14/doesThisExistEasyunixec2.opml"
},
"35": {
"text": "Sadly, this guy is probably right",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/13/sadlyThisGuyIsProbablyRigh.opml"
},
"36": {
"text": "Mitch McConnell channels Dick Cheney",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/13/mitchMcconnellChannelsDick.opml"
},
"37": {
"text": "Web 2.0 expiration date, Day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/13/web20ExpirationDateDay2.opml"
},
"38": {
"text": "The new WTC takes its place in the NYC skyline",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/12/theNewWtcTakesItsPlaceInTh.opml"
},
"39": {
"text": "12.31 mile ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/12/1231MileRide.opml"
},
"40": {
"text": "Web 2.0 must have an expiration date",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/12/web20MustHaveAnExpirationD.opml"
},
"41": {
"text": "Straight talk about Twitter/Facebook and flows",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/10/straightTalkAboutTwitterfa.opml"
},
"42": {
"text": "Pay-to-speak conferences, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/10/paytospeakDay2.opml"
},
"43": {
"text": "How RSS flows through Twitter and vice versa",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/09/twitterAndRss.opml"
},
"44": {
"text": "Pay-to-speak at tech conferences",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/08/paytospeakAtTechConference.opml"
},
"45": {
"text": "Journalist or not? Wrong question",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/08/journalistOrNotWrongQuesti.opml"
},
"46": {
"text": "Understanding Google",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/08/understandingGoogle.opml"
},
"47": {
"text": "Finding the archive of a feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/08/findingTheArchiveOfAFeed.opml"
},
"48": {
"text": "Nuremberg does not apply",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/06/nurembergDoesNotApply.opml"
},
"49": {
"text": "Feature requests from an iPad-using Blorker",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/06/featureRequestsFromAnIpadu.opml"
},
"50": {
"text": "Did the Pakistanis know Bin Laden was there?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/06/didThePakistanisKnowBinLad.opml"
},
"51": {
"text": "Post-Osama America",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/05/postosamaAmerica.opml"
},
"52": {
"text": "New OPML nodetype: html",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/05/newOpmlNodetype.opml"
},
"53": {
"text": "Journalism and Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/04/journalismAndFacebook.opml"
},
"54": {
"text": "If the Repubs want credit for nailing Osama",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/03/ifTheRepubsWantCreditForCa.opml"
},
"55": {
"text": "Two-party systems much better than one",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/03/twoPartySystemsMuchBetterT.opml"
},
"56": {
"text": "Another year another Hey Pocky Way",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/02/anotherYearAnotherHeyPocky.opml"
},
"57": {
"text": "Tomorrow: Rent a bike in Amsterdam",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/01/tomorrowRentABikeInAmsterd.opml"
},
"58": {
"text": "Queensday in Amsterdam",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/05/01/queensdayInAmsterdam.opml"
}
}
},
"5": {
"text": "June",
"type": "include",
"url": "http://scripting.com/2011/06.opml",
"subs": {
"0": {
"text": "Please ask support questions in public",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/30/pleaseAskSupportQuestionsI.opml"
},
"1": {
"text": "Super-early bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/30/superearlyBikeRide.opml"
},
"2": {
"text": "Opting-out of Google Plus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/30/optingoutOfGooglePlus.opml"
},
"3": {
"text": "Help shine the light on McAfee",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/29/helpShineTheLightOnMcafee.opml"
},
"4": {
"text": "For the record",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/29/forTheRecord.opml"
},
"5": {
"text": "Page's mistake",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/29/pagesMistake.opml"
},
"6": {
"text": "Google Yawn",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/28/googleYawn.opml"
},
"7": {
"text": "DaveCast #6",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/28/davecast6.opml"
},
"8": {
"text": "Last night's DaveCast (Number 5)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/28/lastNightsDavecastNumber5.opml"
},
"9": {
"text": "OnSwipe",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/26/onswipe.opml"
},
"10": {
"text": "Where I'm at with Firefox",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/26/whereImAtWithFirefox.opml"
},
"11": {
"text": "Mozilla == Osborne?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/26/mozillaOsborne.opml"
},
"12": {
"text": "DaveCast #4 -- Should you go to college?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/25/davecast4ShouldYouGoToColl.opml"
},
"13": {
"text": "Apps for NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/24/appsForNyc.opml"
},
"14": {
"text": "DaveCast #3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/24/davecast3.opml"
},
"15": {
"text": "Daily podcast, Day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/23/dailyPodcastDay2.opml"
},
"16": {
"text": "I love The Wire, but what's up with David Simon?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/22/iLoveTheWireButWhatsUpWith.opml"
},
"17": {
"text": "DaveCast? What??",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/22/davecastWhat.opml"
},
"18": {
"text": "No journalism on Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/21/noJournalismOnFacebook.opml"
},
"19": {
"text": "Late afternoon ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/21/lateAfternoonRide.opml"
},
"20": {
"text": "API designers should be writers",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/21/apiDesignersShouldBeWriter.opml"
},
"21": {
"text": "Thanks to the Guardian",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/19/thanksToTheGuardian.opml"
},
"22": {
"text": "Happy Father's Day",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/19/happyFathersDay.opml"
},
"23": {
"text": "New Yorkers really are different",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/19/newYorkersReallyAreDiffere.opml"
},
"24": {
"text": "The NY Post, the iPad and the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/18/theNyPostTheIpadAndTheWeb.opml"
},
"25": {
"text": "7:30AM bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/18/730amBikeRide.opml"
},
"26": {
"text": "Why DNS is good",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/17/whyDnsIsGood.opml"
},
"27": {
"text": "Blog Dylan",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/17/blogDylan.opml"
},
"28": {
"text": "Domain names as bookmarks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/16/domainNamesAsBookmarks.opml"
},
"29": {
"text": "How to compete with the big guys",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/15/howToCompeteWithTheBigGuys.opml"
},
"30": {
"text": "Good ride, black helicopter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/15/goodRideBlackHelicopters.opml"
},
"31": {
"text": "A wartime Internet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/15/warOnTheInternet.opml"
},
"32": {
"text": "How to follow my work",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/15/howToFollowMyWork.opml"
},
"33": {
"text": "It happened again",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/15/itHappenedAgain.opml"
},
"34": {
"text": "Good ride, computer error",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/13/goodRideComputerError.opml"
},
"35": {
"text": "Nirvana for the public writer, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/13/nirvanaDay2.opml"
},
"36": {
"text": "Cool weather, fast ride (new shoes)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/12/coolWeatherFastRideNewShoe.opml"
},
"37": {
"text": "Nirvana for a public writer, circa 2012",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/12/nirvanaForAPublicWriterCir.opml"
},
"38": {
"text": "Calling the Lazy Web",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/12/callingTheLazyWeb.opml"
},
"39": {
"text": "While they're worrying about Weiner's penis",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/11/somethingToThinkAbout.opml"
},
"40": {
"text": "Splendid day for a ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/10/splendidDayForARide.opml"
},
"41": {
"text": "Deluge",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/09/deluge.opml"
},
"42": {
"text": "Hyperlinked writing (not just reading)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/09/hyperlinkedWritingNotJustR.opml"
},
"43": {
"text": "Super 8 spam",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/09/super8.opml"
},
"44": {
"text": "Spitzer is great",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/09/spitzerIsGreat.opml"
},
"45": {
"text": "Object-oriented writing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/09/objectorientedWriting.opml"
},
"46": {
"text": "Even hotter ride today",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/08/evenHotterRideToday.opml"
},
"47": {
"text": "The Invisible Hand is a myth too",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/08/theInvisibleHandIsAMythToo.opml"
},
"48": {
"text": "I live for hot-weather rides",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/07/iLiveForHotweatherRides.opml"
},
"49": {
"text": "Another great boring lovely ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/06/anotherGreatSboringsLovely.opml"
},
"50": {
"text": "The French really get this one right",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/06/theFrenchReallyGetThisOneR.opml"
},
"51": {
"text": "Photographs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/05/photographs.opml"
},
"52": {
"text": "Riding in the groove",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/04/ridingInTheGroove.opml"
},
"53": {
"text": "What if Apple and Twitter merged?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/03/whatIfAppleAndTwitterMerge.opml"
},
"54": {
"text": "Bike rides are for thinking",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/03/bikeRidesAreForThinking.opml"
},
"55": {
"text": "What if the Times and Twitter merged?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/03/whatIfTheNyTimesRanTwitter.opml"
},
"56": {
"text": "It's a good ride whennnn...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/01/itsAGoodRideWhennnn.opml"
},
"57": {
"text": "The torture of Anthony Weiner",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/06/01/theTortureOfAnthonyWeiner.opml"
}
}
},
"6": {
"text": "July",
"type": "include",
"url": "http://scripting.com/2011/07.opml",
"subs": {
"0": {
"text": "Either Boehner loses or we do",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/30/eitherBoehnerLosesOrWeDo.opml"
},
"1": {
"text": "Tea Party in the US House",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/30/theTeaPartyInTheUsHouse.opml"
},
"2": {
"text": "Longer bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/29/longerBikeRide.opml"
},
"3": {
"text": "Why doesn't David Gregory tell the truth?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/29/theStory.opml"
},
"4": {
"text": "A little truth leaks out",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/29/aLittleTruthLeaksOut.opml"
},
"5": {
"text": "DaveCast #12 -- Don't worry",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/28/davecast12DontWorry.opml"
},
"6": {
"text": "iTunes problem solved",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/28/davecast12Oy.opml"
},
"7": {
"text": "Washington is crazy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/28/washingtonIsCrazy.opml"
},
"8": {
"text": "Greenspun and me",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/28/greenspunAndMe.opml"
},
"9": {
"text": "Yesterday's ride, note to Tea Partiers",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/28/yesterdaysRideNoteToTeaPar.opml"
},
"10": {
"text": "#InspiringGOPMovieScenes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/27/inspiringgopmoviescenes.opml"
},
"11": {
"text": "Wild idea for the Repubs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/27/wildIdeaForTheRepubs.opml"
},
"12": {
"text": "Yesterday's bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/27/yesterdaysBikeRide.opml"
},
"13": {
"text": "The Wolf Blitzer Problem, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/27/theWolfBlitzerProblemPart2.opml"
},
"14": {
"text": "DaveCast #11 -- The Wolf Blitzer Problem",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/26/davecast11TheWolfBlitzerPr.opml"
},
"15": {
"text": "Tech news *is* boring",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/26/techNewsIsBoring.opml"
},
"16": {
"text": "Google-Plus is going to be your bank account",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/26/googleplusIsGoingToBeYourB.opml"
},
"17": {
"text": "The mother of all meltdowns",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/25/theMotherOfAllMeltdowns.opml"
},
"18": {
"text": "Why Google cares if you use your real name",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/25/whyGoogleCaresIfYouUseYour.opml"
},
"19": {
"text": "Abbreviated ride, signs of rain, a bit coooler",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/24/abbreviatedRideSignsOfRain.opml"
},
"20": {
"text": "Intel version of the OPML Editor?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/24/intelVersionOfTheOpmlEdito.opml"
},
"21": {
"text": "The Constitution is not a suicide pact, part 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/23/theConstitutionIsNotASuici.opml"
},
"22": {
"text": "Bike ride, smelly city, tailwinds, Katrina, Jane",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/23/bikeRideInTheMorningHeatTa.opml"
},
"23": {
"text": "Obama can't make it personal",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/22/obamaCantMakeItPersonal.opml"
},
"24": {
"text": "Google Toolbar and Firefox",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/22/googleToolbarAndFirefox.opml"
},
"25": {
"text": "Yet another feed for moi",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/22/yetAnotherFeedForMoi.opml"
},
"26": {
"text": "The future of following",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/22/sharingListsOfFriends.opml"
},
"27": {
"text": "I don't use Google Toolbar in Firefox",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/21/iDontUseGoogleToolbarInFir.opml"
},
"28": {
"text": "Hot-hot oooh did I say hot bike ride yaha",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/21/hothotOoohDidISayHotBikeRi.opml"
},
"29": {
"text": "Cowboy-up and pay your taxes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/21/cowboyupAndPayYourTaxesDud.opml"
},
"30": {
"text": "The 1997 Mac web is going",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/20/the1997MacWebIsGoing.opml"
},
"31": {
"text": "Hot-hot bike whew it was hot ya",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/19/hothotBikeWhewItWasHotYa.opml"
},
"32": {
"text": "The first web-based RSS feed reader",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/19/theFirstWebbasedRssFeedRea.opml"
},
"33": {
"text": "Dear Scoble: Twitter *should* be boring",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/19/twitterShouldBeBoring.opml"
},
"34": {
"text": "Possible bug report for Tea Partiers",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/18/possibleBugReportForTeaPar.opml"
},
"35": {
"text": "I got Spotify",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/18/iGotSpotify.opml"
},
"36": {
"text": "Google Webmaster Tools accept RSS feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/17/googleWebmasterToolsAccept.opml"
},
"37": {
"text": "The Constitution is not a suicide pact",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/17/impeachmentAndRepubs.opml"
},
"38": {
"text": "Watch what happens to Murdoch's news",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/17/watchWhatHappensToMurdochs.opml"
},
"39": {
"text": "Where we're at on the World Outline",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/17/whereWereAtOnTheWorldOutli.opml"
},
"40": {
"text": "Suggestions for Google-Plus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/17/suggestionsForGoogle.opml"
},
"41": {
"text": "Beautiful day for a ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/16/beautifulDayForARide.opml"
},
"42": {
"text": "A trillion dollar coin?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/15/aTrillionDollarCoin.opml"
},
"43": {
"text": "Where did the Social Security money go?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/15/fullFaithAndCredit.opml"
},
"44": {
"text": "The Angry Bird Party Theme Song",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/14/angryBirdPartyThemeSong.opml"
},
"45": {
"text": "Uncle! I joined Google-Plus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/14/uncleIJoinedGoogleplus.opml"
},
"46": {
"text": "DaveCast #10 -- The Angry Bird Party?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/14/davecast10TheAngryBirdPart.opml"
},
"47": {
"text": "A big diff betw Google-Plus and Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/13/aBigDiffBetwGoogleplusAndF.opml"
},
"48": {
"text": "Nice ride, big wind, another plaque",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/13/niceRideBigWindAnotherPlaq.opml"
},
"49": {
"text": "Connecting Blork and the World Outline",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/13/connectingBlorkAndTheWorld.opml"
},
"50": {
"text": "Another in my series of wacko ideas",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/13/anotherInMySeriesOfWackoId.opml"
},
"51": {
"text": "Dropbox at (a jaw-dropping) $5 billion",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/13/dropboxAt5Billion.opml"
},
"52": {
"text": "Looking for an XXL Mets cap",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/12/lookingForAnXxlMetsCap.opml"
},
"53": {
"text": "Want to ride alone?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/12/wantToRideAlone.opml"
},
"54": {
"text": "I'm not left or right",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/12/imNotLeftOrRight.opml"
},
"55": {
"text": "Own your identity!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/12/ownYourIdentity.opml"
},
"56": {
"text": "Strong tail wind uptown",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/11/strongTailWindUptown.opml"
},
"57": {
"text": "What will happen if the US defaults?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/11/whatWillHappenIfTheUsDefau.opml"
},
"58": {
"text": "DaveCast #9",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/11/davecast9.opml"
},
"59": {
"text": "DaveCast status",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/11/davecastStatus.opml"
},
"60": {
"text": "If I had a Like button this is what it would look like",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/11/ifIHadALikeButtonThisIsWha.opml"
},
"61": {
"text": "Hooking Google-Plus to my linkblog feed?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/11/hookingGoogleplusToMyLinkb.opml"
},
"62": {
"text": "Does Google-Plus have feeds?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/10/doesGoogleplusHaveFeeds.opml"
},
"63": {
"text": "Reserve currency",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/10/reserveCurrency.opml"
},
"64": {
"text": "Why Twitter may have trouble monetizing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/09/whyTwitterMayHaveTroubleMo.opml"
},
"65": {
"text": "Maybe Obama will withdraw from 2012 race",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/09/maybeObamaWillWithdrawFrom.opml"
},
"66": {
"text": "Mid-conference bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/09/midconferenceBikeRide.opml"
},
"67": {
"text": "Notes from today's Hyperlocal conference",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/09/notesFromTheHyperlocalConf.opml"
},
"68": {
"text": "Yeah, I'm still yawning",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/08/yeahImStillYawning.opml"
},
"69": {
"text": "Is Dropbox a privacy revolution?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/08/isDropboxAPrivacyRevolutio.opml"
},
"70": {
"text": "Anyone using Wuala?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/08/anyoneUsingWuala.opml"
},
"71": {
"text": "Net-net on Dropbox, for me",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/07/netnetOnDropboxForMe.opml"
},
"72": {
"text": "How hyperlocal has a future",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/07/howHyperlocalHasAFuture.opml"
},
"73": {
"text": "How Washington is like Silicon Valley",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/07/howWashingtonIsLikeSilicon.opml"
},
"74": {
"text": "Mr President: Invoke the 14th and go on vacation",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/06/mrPresidentInvokeThe14thAn.opml"
},
"75": {
"text": "Biking vs skiing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/05/bikingVsSkiing.opml"
},
"76": {
"text": "DaveCast #8",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/05/davecast8.opml"
},
"77": {
"text": "Developers and Google-Plus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/05/developersAndGoogleplus.opml"
},
"78": {
"text": "Dick Applebaum would love this",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/04/dickApplebaumWouldLoveThis.opml"
},
"79": {
"text": "What is Dropbox good for?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/04/whatIsDropboxGoodFor.opml"
},
"80": {
"text": "DaveCast #7",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/04/davecast7.opml"
},
"81": {
"text": "I've deleted my Dropbox account",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/03/imDeletingMyDropboxAccount.opml"
},
"82": {
"text": "My \"no interviews\" policy was working",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/02/myNoInterviewsPolicyWasWor.opml"
},
"83": {
"text": "7AM ride becoming a tradition?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/02/7amRideBecomingATradition.opml"
},
"84": {
"text": "Why Google's \"circles\" are likely to fail",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/07/01/whyGooglesCirclesAreLikely.opml"
}
}
},
"7": {
"text": "August",
"type": "include",
"url": "http://scripting.com/2011/08.opml",
"subs": {
"0": {
"text": "What if...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/31/ifTheRepubsHadAnyClassWhat.opml"
},
"1": {
"text": "How I maintain sanity",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/31/howIMaintainSanity.opml"
},
"2": {
"text": "The icons of August",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/31/ourPoliticalLeaders.opml"
},
"3": {
"text": "Simple thought",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/31/simpleThought.opml"
},
"4": {
"text": "Francisco Franco Update",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/30/franciscoFrancoUpdate.opml"
},
"5": {
"text": "Firefox with Twitter??",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/30/firefoxWithTwitter.opml"
},
"6": {
"text": "Why doesn't the Times have something like Quora?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/29/whyDoesntTheTimesHaveSomet.opml"
},
"7": {
"text": "Dating app based on movies",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/29/datingAppBasedOnMovies.opml"
},
"8": {
"text": "Re the US embassy cables",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/29/reTheUneditedUsEmbassyCabl.opml"
},
"9": {
"text": "Loving the fonts",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/29/lovingTheFonts.opml"
},
"10": {
"text": "New Mac setup gets less shitty",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/29/aNiceLittleThing.opml"
},
"11": {
"text": "Google-Plus is about money",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/28/googleplusIsAboutMoney.opml"
},
"12": {
"text": "Engaging with Irene",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/27/engagingWithIrene.opml"
},
"13": {
"text": "Music for a hurricane",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/27/musicForAHurricane.opml"
},
"14": {
"text": "Last ride before Irene?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/26/lastRideBeforeIrene.opml"
},
"15": {
"text": "Serious storm headed here",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/25/aSeriousStormHeadedOurWay.opml"
},
"16": {
"text": "Thanks Steve!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/25/thanksSteve.opml"
},
"17": {
"text": "Times hurricane tracker",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/25/timesHurricaneTracker.opml"
},
"18": {
"text": "Coooler weather ride, iPhone mounted",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/24/cooolerWeatherRideIphoneMo.opml"
},
"19": {
"text": "Huntsman is becoming a blogger, etc",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/24/huntsmanIsBecomingABlogger.opml"
},
"20": {
"text": "What NYers don't grok about earthquakes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/24/whatNyersDontGrokAboutEart.opml"
},
"21": {
"text": "New York earthquake",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/23/newYorkEarthquake.opml"
},
"22": {
"text": "Indirect business models FTW",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/23/indirectBusinessModelsFtw.opml"
},
"23": {
"text": "1000-char limit on comments?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/23/1000charLimitOnComments.opml"
},
"24": {
"text": "New header on Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/22/newHeaderOnScriptingNews.opml"
},
"25": {
"text": "Take-aways from HP's TouchPad screwup",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/21/takeawaysFromHpsTouchpadSc.opml"
},
"26": {
"text": "The DMV vs Verizon",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/21/theDmvVsVerizon.opml"
},
"27": {
"text": "Google Maps is fighting me!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/20/googleMapsIsFightingMe.opml"
},
"28": {
"text": "A once-a-year ride in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/20/aOnceayearRideInNyc.opml"
},
"29": {
"text": "An alternate plan for Firefox",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/19/anAlternatePlanForFirefox.opml"
},
"30": {
"text": "A software evolution lesson I keep re-learning",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/19/aLessonIKeepRelearning.opml"
},
"31": {
"text": "Clues re Verizon website?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/19/cluesReVerizonWebsite.opml"
},
"32": {
"text": "Sources Go Direct in today's news",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/19/sourcesGoDirectInTodaysNew.opml"
},
"33": {
"text": "A balanced budget amendment",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/18/aBalancedBudgetAmendment.opml"
},
"34": {
"text": "A ride to Rockaway",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/18/aRideToRockaway.opml"
},
"35": {
"text": "Why inflation stimulates the economy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/18/whyInflationStimulatesTheE.opml"
},
"36": {
"text": "SLIde spec",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/18/slideSpec.opml"
},
"37": {
"text": "Firefox's About window",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/18/firefoxsAboutWindow.opml"
},
"38": {
"text": "If you're running Blork",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/17/ifYoureRunningBlork.opml"
},
"39": {
"text": "Calling the Repub bluff",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/17/callingTheRepublicanBluff.opml"
},
"40": {
"text": "Ron Paul and corruption in MSM",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/16/ronPaulAndCorruptionInMsm.opml"
},
"41": {
"text": "Simple, lightweight identity service",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/15/simpleLightweightIdentityS.opml"
},
"42": {
"text": "Google Docs and blog-editing software",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/14/googleDocsAndBlogeditingSo.opml"
},
"43": {
"text": "I'm a hamster for Angry Birds",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/14/imAHamsterForAngryBirds.opml"
},
"44": {
"text": "City streets bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/13/cityStreetsBikeRide.opml"
},
"45": {
"text": "Checking out dlvr.it",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/12/checkingOutDlvrit.opml"
},
"46": {
"text": "To all would-be Twitter competitors",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/12/toAllWouldbeTwitterCompeti.opml"
},
"47": {
"text": "Park Ave open to bikers tomorrow in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/12/summerStreetsBikeRideInNyc.opml"
},
"48": {
"text": "Why the war in Afghanistan?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/11/whyTheWarInAfghanistan.opml"
},
"49": {
"text": "Why the riots?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/11/whyTheRiots.opml"
},
"50": {
"text": "My to-do list for Heello",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/10/heello.opml"
},
"51": {
"text": "Nirakar",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/10/nirakar.opml"
},
"52": {
"text": "Who cares if the stock market crashes?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/10/whoCaresIfTheStockMarketCr.opml"
},
"53": {
"text": "Reboot of nytriver on Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/09/rebootOfNytriverOnTwitter.opml"
},
"54": {
"text": "Sharing images on Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/09/sharingImagesOnTwitter.opml"
},
"55": {
"text": "DaveCast #13",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/08/davecast13.opml"
},
"56": {
"text": "Bachmann: Queen of Rage",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/07/bachmannQueenOfRage.opml"
},
"57": {
"text": "We didn't fix the problems",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/07/weDidntFixTheProblems.opml"
},
"58": {
"text": "Myhrvold and Boehner",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/06/myhrvoldAndBoehner.opml"
},
"59": {
"text": "Today's ride on a new route!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/04/todaysRideOnANewRoute.opml"
},
"60": {
"text": "What I would say to Al Gore",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/02/whatIWouldSayToAlGore.opml"
},
"61": {
"text": "What it should say on my headstone",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/02/whatItShouldSayOnMyHeadsto.opml"
},
"62": {
"text": "Who I am",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/02/whoIAm.opml"
},
"63": {
"text": "On being a parasite",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/02/onBeingAParasite.opml"
},
"64": {
"text": "Turning the Internet off",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/02/turningTheInternetOff.opml"
},
"65": {
"text": "The Republicans vs the United States",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/08/01/repubsAndRespect.opml"
}
}
},
"8": {
"text": "September",
"type": "include",
"url": "http://scripting.com/2011/09.opml",
"subs": {
"0": {
"text": "Google needs a Google",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/30/googleIsGettingCluttered.opml"
},
"1": {
"text": "Last ride of Sept 2011",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/30/lastRideOfSept2011.opml"
},
"2": {
"text": "Mind bombs of 2011",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/30/mindBombsOf2011.opml"
},
"3": {
"text": "Blorkmark demo",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/30/blorkmarkDemo.opml"
},
"4": {
"text": "Command-line for browser",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/30/commandlineForBrowser.opml"
},
"5": {
"text": "Let's talk platforms",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/30/letsTalkPlatforms.opml"
},
"6": {
"text": "DaveCast #16: Mac of the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/29/davecast16MacOfTheWeb.opml"
},
"7": {
"text": "Why didn't we march?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/29/whyDidntWeMarch.opml"
},
"8": {
"text": "An idea for the Republicans",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/29/anIdeaForTheRepublicans.opml"
},
"9": {
"text": "CSS is a tradeoff",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/29/cssIsATradeoff.opml"
},
"10": {
"text": "Help fight MS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/29/helpFightMs.opml"
},
"11": {
"text": "What comes after the cloud?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/29/whatComesAfterTheCloud.opml"
},
"12": {
"text": "Can Larry reboot Google?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/28/canLarryRebootGoogle.opml"
},
"13": {
"text": "Ask Doc",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/27/askDoc.opml"
},
"14": {
"text": "Rivers of JSON",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/27/riversOfJson.opml"
},
"15": {
"text": "New York Smiles ;-)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/27/newYorkSmiles.opml"
},
"16": {
"text": "Morning tugboat notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/27/morningCoffeeNotes.opml"
},
"17": {
"text": "Who is screwing the USA?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/26/partisanPositions.opml"
},
"18": {
"text": "The rich *like* govt services!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/24/theRichLikeGovtServices.opml"
},
"19": {
"text": "Baseball vs real life",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/24/baseballVsRealLife.opml"
},
"20": {
"text": "Facebook is scaring me",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/24/facebookIsScaringMe.opml"
},
"21": {
"text": "Obama's going somewhere",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/23/obamasGoingSomewhere.opml"
},
"22": {
"text": "Twitter should fear Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/23/twitterShouldFearFacebook.opml"
},
"23": {
"text": "Google search on iPad",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/23/googleSearchOnIpad.opml"
},
"24": {
"text": "About RBTN",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/23/aboutRbtn.opml"
},
"25": {
"text": "New Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/21/newFacebook.opml"
},
"26": {
"text": "We're in the money!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/21/wereInTheMoney.opml"
},
"27": {
"text": "Clueless political pundits?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/20/cluelessPoliticalPundits.opml"
},
"28": {
"text": "Tough love for Republicans",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/19/toughLoveForRepublicans.opml"
},
"29": {
"text": "Facebook not so evil now",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/18/facebookNotSoEvilNow.opml"
},
"30": {
"text": "Selling out is selling out",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/17/sellingOutIsSellingOut.opml"
},
"31": {
"text": "Apple in Grand Central",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/16/appleInGrandCentral.opml"
},
"32": {
"text": "The web presence for ideas",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/16/theWebPresenceForIdeas.opml"
},
"33": {
"text": "Corporate blogging silos",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/16/corporateBloggingSilos.opml"
},
"34": {
"text": "Google saved my number",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/15/googleSavedMyNumber.opml"
},
"35": {
"text": "Google doesn't get it",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/15/googleDoesntGetIt.opml"
},
"36": {
"text": "Next step in the phone saga",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/14/nextStepInThePhoneSaga.opml"
},
"37": {
"text": "Morning coffee notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/14/morningCoffeeNotes.opml"
},
"38": {
"text": "The cow path business",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/13/theCowpathBusiness.opml"
},
"39": {
"text": "Rick Perry sure is a charmer",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/13/rickPerrySureIsACharmer.opml"
},
"40": {
"text": "My NYU blog",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/13/myNyuBlog.opml"
},
"41": {
"text": "NYT and my link-feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/12/theNytFirewallAndMyLinkfee.opml"
},
"42": {
"text": "9/11 coffee notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/11/911CoffeeNotes.opml"
},
"43": {
"text": "Friends' 9/11 stories",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/11/911StoriesByBloggerFriends.opml"
},
"44": {
"text": "Flickr & Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/10/aLossOfDataInTwitter.opml"
},
"45": {
"text": "My 9/11",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/10/my911.opml"
},
"46": {
"text": "Quick review of Contagion",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/09/quickReviewOfContagion.opml"
},
"47": {
"text": "Only steal from the best",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/09/onlyStealFromTheBest.opml"
},
"48": {
"text": "Krugman on being an insider",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/09/krugmanOnBeingAnInsider.opml"
},
"49": {
"text": "Reporter's conflict of interest",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/08/reportersConflictOfInteres.opml"
},
"50": {
"text": "Cellphone progress!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/08/cellphoneProgress.opml"
},
"51": {
"text": "Change at TechCrunch?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/07/regimeChangeAtTechcrunch.opml"
},
"52": {
"text": "Month-to-month on Nexus S?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/06/monthtomonthOnNexusS.opml"
},
"53": {
"text": "A second launch couldn't hurt",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/06/aSecondLaunchCouldntHurt.opml"
},
"54": {
"text": "Twitter's Bootstrap toolkit",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/06/twittersBootstrapToolkit.opml"
},
"55": {
"text": "Catching up with Wikileaks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/05/catchingUpWithWikileaks.opml"
},
"56": {
"text": "Google please",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/04/googlePlease.opml"
},
"57": {
"text": "RSS is supposed to be really simple",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/04/rssIsSupposedToBeReallySim.opml"
},
"58": {
"text": "Goodbye AT&T",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/04/goodbyeAtt.opml"
},
"59": {
"text": "Journalism is easy to define",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/03/journalismIsEasyToDefine.opml"
},
"60": {
"text": "Google's SUL",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/02/googlesSul.opml"
},
"61": {
"text": "Basic CSS question",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/02/basicCssQuestion.opml"
},
"62": {
"text": "Arrington is the future of what we used to call journalism",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/02/mikeArringtonIsTheFutureOf.opml"
},
"63": {
"text": "The arrogance of tech",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/09/01/theArroganceOfTech.opml"
}
}
},
"9": {
"text": "October",
"type": "include",
"url": "http://scripting.com/2011/10.opml",
"subs": {
"0": {
"text": "Why I stand up for Stallman",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/31/whyIStandUpForStallman.opml"
},
"1": {
"text": "Domains for sale",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/30/domainsForSale.opml"
},
"2": {
"text": "A wifi pocket disk",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/30/aWifiPocketDisk.opml"
},
"3": {
"text": "Safing-up a Manila site",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/30/safingupManilaSites.opml"
},
"4": {
"text": "Resurrecting conventionbloggers.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/29/resurrectingConventionblog.opml"
},
"5": {
"text": "Getting Craig Cline back online",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/28/gettingCraigClineBackOnlin.opml"
},
"6": {
"text": "Who would play Steve Jobs?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/28/whoWouldPlaySteveJobs.opml"
},
"7": {
"text": "Why DNS needs an API",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/28/whyDnsNeedsAnApi.opml"
},
"8": {
"text": "O'Keefe stings Rosen, Shirky",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/28/okeefeStingsRosenShirky.opml"
},
"9": {
"text": "Climbing shorter ladders",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/27/climbingShorterLadders.opml"
},
"10": {
"text": "Moving from GoDaddy to Hover",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/27/movingFromGodaddyToHover.opml"
},
"11": {
"text": "The university's role in innovation",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/27/theUniversitysRoleInInnova.opml"
},
"12": {
"text": "User-led RSS advocacy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/27/anOrganizedRssAdvocacy.opml"
},
"13": {
"text": "The Jobs book",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/27/theJobsBook.opml"
},
"14": {
"text": "Escaping from GoDaddy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/26/escapingFromGodaddy.opml"
},
"15": {
"text": "The RSS community wakes up",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/26/rssCommunityWakesUp.opml"
},
"16": {
"text": "A deficit of chutzpah",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/25/aDeficitOfChutzpah.opml"
},
"17": {
"text": "Or you could just tell the users to...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/25/orYouCouldJustTellTheUsers.opml"
},
"18": {
"text": "Connecting Blogger with Google-Plus",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/24/googleConnectingBloggerWit.opml"
},
"19": {
"text": "If Flickr had an ego",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/24/ifFlickrHadAnEgo.opml"
},
"20": {
"text": "I want to support WikiLeaks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/24/iWantToSupportWikileaks.opml"
},
"21": {
"text": "OWS photographers, please use Flickr",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/23/owsPhotographersPleaseUseF.opml"
},
"22": {
"text": "Links for the origins of podcasting",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/23/linksForTheOriginsOfPodcas.opml"
},
"23": {
"text": "Chinese Politburo calling for Zuck",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/23/chineseLeadersAreNervousAb.opml"
},
"24": {
"text": "Do dead guys always get the last word?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/22/doDeadGuysAlwaysGetTheLast.opml"
},
"25": {
"text": "What's going on with Google Reader?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/22/whatsGoingOnWithGoogleRead.opml"
},
"26": {
"text": "Connecting RSS and Occupy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/21/connectingRssAndOccupy.opml"
},
"27": {
"text": "OccupyWallStreet a new Napster?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/19/occupywallstreetAnotherNap.opml"
},
"28": {
"text": "OccupyWeb photo archive",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/19/occupywebPhotoArchive.opml"
},
"29": {
"text": "Money",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/19/money.opml"
},
"30": {
"text": "Occupy Election Day, part 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/19/occupyElectionDayDay2.opml"
},
"31": {
"text": "Time-Warner Internet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/18/timewarnerInternet.opml"
},
"32": {
"text": "Occupying uptown",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/17/occupyingUptown.opml"
},
"33": {
"text": "Occupy Election Day",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/16/fanningOutIntoNeighborhood.opml"
},
"34": {
"text": "City center occupation",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/16/cityCenterOccupation.opml"
},
"35": {
"text": "\"Don't trust anyone over 30\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/16/embracingThe1Percent.opml"
},
"36": {
"text": "Flow of pics from Times Square?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/15/flowOfPicsFromTimesSquare.opml"
},
"37": {
"text": "Tapping into the \"occupy\" news flow",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/15/tappingIntoTheOccupyNewsFl.opml"
},
"38": {
"text": "I shouldn't have worried about the kids",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/14/iShouldntHaveWorriedAboutT.opml"
},
"39": {
"text": "Summer rainstorm in October",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/14/summerRainstormInOctober.opml"
},
"40": {
"text": "If I were...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/14/ifIWere.opml"
},
"41": {
"text": "River2 1.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/14/river2.opml"
},
"42": {
"text": "Wall Street protest this evening",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/13/wallStreetProtestThisEveni.opml"
},
"43": {
"text": "Today at Zuccotti",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/13/theComputerCenterAtZuccott.opml"
},
"44": {
"text": "Alternate renderings of Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/13/alternateRenderingsOfScrip.opml"
},
"45": {
"text": "Cold-calling Dennis Ritchie",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/13/coldcallingDennisRitchie.opml"
},
"46": {
"text": "More scripting.com format tweaks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/13/moreScriptingcomFormatTwea.opml"
},
"47": {
"text": "Subdomains of occupyweb.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/12/subdomainsOfOccupyweborg.opml"
},
"48": {
"text": "Did politics just change?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/12/didPoliticsJustChange.opml"
},
"49": {
"text": "Working on the linkblog box",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/11/workingOnTheLinkblogBox.opml"
},
"50": {
"text": "Herman Cain",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/11/hermanCain.opml"
},
"51": {
"text": "Why occupy?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/11/whyOccupy.opml"
},
"52": {
"text": "Two needs: webcams and linkbloggers",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/11/twoNeedsWebcamAndLinkblogg.opml"
},
"53": {
"text": "What happened in Boston late last night",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/11/whatHappenedInBoston.opml"
},
"54": {
"text": "Questions re OccupyBoston last night",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/11/whatHappenedInBostonLastNi.opml"
},
"55": {
"text": "occupyweb.org programming note",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/10/occupyweborgProgrammingNot.opml"
},
"56": {
"text": "Angry Birds on TV",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/10/angryBirdsOnTv.opml"
},
"57": {
"text": "More format tweaks on scripting.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/10/moreFormatTweaksOnScriptin.opml"
},
"58": {
"text": "Format tweaks on scripting.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/09/formatTweaksOnScriptingcom.opml"
},
"59": {
"text": "I love Atom too",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/09/weLoveAtomToo.opml"
},
"60": {
"text": "Boots on the ground!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/09/bootsOnTheGround.opml"
},
"61": {
"text": "Zuccotti Park",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/08/zucottiPark.opml"
},
"62": {
"text": "R E S P E C T",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/08/rESPECT.opml"
},
"63": {
"text": "Stallman & Steve",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/08/stallmanSteve.opml"
},
"64": {
"text": "UI unification",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/08/uiStandards.opml"
},
"65": {
"text": "Photos on occupyweb.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/08/picturesOnOccupyweborg.opml"
},
"66": {
"text": "What does Occupy mean to tech?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/07/whatDoesOccupyMeanToTech.opml"
},
"67": {
"text": "The message of Occupy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/06/theMessageOfOccupy.opml"
},
"68": {
"text": "In tribute to Steve Jobs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/06/inTributeToSteveJobs.opml"
},
"69": {
"text": "Steve Jobs as Frank Lloyd Wright",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/06/myThoughtsOnSteveJobs.opml"
},
"70": {
"text": "Thanks Steve",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/05/thanksSteve.opml"
},
"71": {
"text": "Back to the normal ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/05/backToTheNormalRide.opml"
},
"72": {
"text": "Occupying Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/05/occupyFacebook.opml"
},
"73": {
"text": "A river for the Occupy movement",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/05/aLinkblogForTheOccupyMovem.opml"
},
"74": {
"text": "Why your Occupy event should have a feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/04/howAndWhyYourOccupySiteSho.opml"
},
"75": {
"text": "In the 60s they burned draft cards",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/04/inThe60sTheyBurnedDraftCar.opml"
},
"76": {
"text": "We're looking for \"Occupy\" sites!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/04/linksToOccupyBlogs.opml"
},
"77": {
"text": "Occupy Silicon Valley?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/04/occupySiliconValley.opml"
},
"78": {
"text": "Relying on Facebook, Twitter and Google",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/03/relyingOnFacebookTwitterAn.opml"
},
"79": {
"text": "Stolen from the best",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/03/stolenFromTheBest.opml"
},
"80": {
"text": "New design for scripting.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/03/newDesignForScriptingcom.opml"
},
"81": {
"text": "Today's ride: 35.9 miles!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/02/todaysRide359Miles.opml"
},
"82": {
"text": "Browsers are too low-level",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/02/browsersAreTooLowlevel.opml"
},
"83": {
"text": "An occupywallst river",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/01/anOccupywallstRiver.opml"
},
"84": {
"text": "Bootstrap in Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/01/bootstrapInScriptingNews.opml"
},
"85": {
"text": "Bootstrap in the WO",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/10/01/bootstrapInTheWorldOutline.opml"
}
}
},
"10": {
"text": "November",
"type": "include",
"url": "http://scripting.com/2011/11.opml",
"subs": {
"0": {
"text": "A family photo album web service",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/30/aFamilyPhotoAlbumWebServic.opml"
},
"1": {
"text": "A Broadway tickets web service",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/30/aBroadwayTicketsWebService.opml"
},
"2": {
"text": "So you want to be an entrepreneur",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/29/whatDoesItTakeToBeAnEntrep.opml"
},
"3": {
"text": "4G service on month-to-month basis?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/28/4gServiceOnMonthtomonthBas.opml"
},
"4": {
"text": "Arrgh Facebook is lying about me",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/28/facebookFraud.opml"
},
"5": {
"text": "Community River, Day 3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/28/communityRiverDay3.opml"
},
"6": {
"text": "My community badge",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/27/myCommunityBadge.opml"
},
"7": {
"text": "Is my Facebook account gone?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/27/looksLikeMyFacebookAccount.opml"
},
"8": {
"text": "A community river",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/27/aCommunityRiver.opml"
},
"9": {
"text": "Why I use the Kindle Fire",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/27/whyIUseTheKindleFire.opml"
},
"10": {
"text": "What will become of the Euro?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/26/questionsAboutTheEuro.opml"
},
"11": {
"text": "A podcast, a long one!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/26/aPodcastALongOne.opml"
},
"12": {
"text": "Are you part of this community?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/26/areYouPartOfThisCommunity.opml"
},
"13": {
"text": "Software projects I'm juggling",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/25/newStuffImManaging.opml"
},
"14": {
"text": "Thanks for technology!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/24/thanksForTechnology.opml"
},
"15": {
"text": "Susan Kare's icons",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/23/susanKaresIcons.opml"
},
"16": {
"text": "A man-on-the-street business",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/22/aManonthestreetBusiness.opml"
},
"17": {
"text": "The idiocracy of social media",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/22/theIdiocracyOfSocialMedia.opml"
},
"18": {
"text": "Why Jobs chose Isaacson",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/21/whyJobsChoseIsaacson.opml"
},
"19": {
"text": "Hangin on a thread!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/21/hangingOnAThread.opml"
},
"20": {
"text": "Podcast postscript to Monday's podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/20/podcastPostscriptToMondays.opml"
},
"21": {
"text": "Your favorite tech podcasts?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/20/yourFavoriteTechPodcasts.opml"
},
"22": {
"text": "I love my Kindle Fire",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/19/iLoveMyKindleFire.opml"
},
"23": {
"text": "Typecasting",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/19/typecasting.opml"
},
"24": {
"text": "People die, technologies don't",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/19/peopleDieTechnologiesDont.opml"
},
"25": {
"text": "Preserving Manila sites",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/19/preservingManilaSites.opml"
},
"26": {
"text": "Johnny Bloggerseed, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/17/johnnyBloggerseedDay2.opml"
},
"27": {
"text": "Dave with Joel and Jeff",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/17/daveWithJoelAndJeff.opml"
},
"28": {
"text": "Google search on iPad is bad design",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/16/googleSearchOnIpad.opml"
},
"29": {
"text": "NY Times Examiner",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/16/nyTimesExaminer.opml"
},
"30": {
"text": "Readability's new API",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/16/readabilitysApi.opml"
},
"31": {
"text": "Foley and Zuccotti today",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/15/zuccottiAndFoleyToday.opml"
},
"32": {
"text": "Yet another feed of mine!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/15/yetAnotherFeedOfMine.opml"
},
"33": {
"text": "Occupying",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/15/ocupying.opml"
},
"34": {
"text": "10 unheard-of techies",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/14/10UnheardofTechies.opml"
},
"35": {
"text": "dnsimple's new ALIAS feature",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/13/dnsimplesNewAliasFeature.opml"
},
"36": {
"text": "Republicans on CBS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/13/republicansOnCbs.opml"
},
"37": {
"text": "An idea for Current TV",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/11/anIdeaForCurrenttv.opml"
},
"38": {
"text": "Why I can't hear you",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/11/whyICantHearYou.opml"
},
"39": {
"text": "Mike's \"Rick Perry\" Moment?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/10/aRickPerryMoment.opml"
},
"40": {
"text": "Autumn colors in Central Park",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/10/autumnColorsInCentralPark.opml"
},
"41": {
"text": "What I mean by RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/10/whatIMeanByRss.opml"
},
"42": {
"text": "I deleted my Facebook account",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/10/iDeletedMyFacebookAccount.opml"
},
"43": {
"text": "A basic rule of outlining",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/09/aBasicRuleOfOutlining.opml"
},
"44": {
"text": "Future-safing hosting.opml.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/08/futuresafingHostingopmlorg.opml"
},
"45": {
"text": "Still riding on November 7!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/07/stillRidingOnNovember7.opml"
},
"46": {
"text": "Martin helped launch RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/07/martinLeavesTheTimes.opml"
},
"47": {
"text": "The NYT == WikiLeaks",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/07/theFirstAmendmentAndTheWeb.opml"
},
"48": {
"text": "Will users always be users?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/07/willUsersAlwaysBeUsers.opml"
},
"49": {
"text": "Warner cartoons of the 1930s",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/06/warnerCartoons.opml"
},
"50": {
"text": "The tech industry is update-happy",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/06/theTechIndustryIsUpdatehap.opml"
},
"51": {
"text": "newsriver.net for sale",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/06/newsrivernetForSale.opml"
},
"52": {
"text": "Howto for credit unions?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/06/howtoForCreditUnions.opml"
},
"53": {
"text": "D-LINK webcam deemed uselessful",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/05/dlinkWebcamUseless.opml"
},
"54": {
"text": "Apple sandboxing apps",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/05/appleSandboxingApps.opml"
},
"55": {
"text": "TV shows and web imagery",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/05/tvShowsAndWebImagery.opml"
},
"56": {
"text": "The Good Wife is good",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/05/theGoodWifeIsGood.opml"
},
"57": {
"text": "Building my own virtual cloud?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/04/buildingMyOwnVirtualCloud.opml"
},
"58": {
"text": "Breaking web APIs",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/04/breakingWebApis.opml"
},
"59": {
"text": "What is RWW actually saying?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/02/whatIsRwwWebActuallySaying.opml"
},
"60": {
"text": "Who got the arguing to stop?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/01/theIdiotsOfHackerNews.opml"
},
"61": {
"text": "Mike I thought I knew yuz",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/01/mikeIThoughtIKnewYuz.opml"
},
"62": {
"text": "Don't remove features from products",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/01/dontRemoveFeaturesFromProd.opml"
},
"63": {
"text": "Connect RSS and OPML in new way",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/01/connectingRssAndOpmlInANew.opml"
},
"64": {
"text": "I'm using chime.in",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/01/imUsingChimein.opml"
},
"65": {
"text": "The \"Internet Industry\" does not speak for me",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/11/01/theInternetIndustryDoesNot.opml"
}
}
},
"11": {
"text": "December",
"type": "include",
"url": "http://scripting.com/2011/12.opml",
"subs": {
"0": {
"text": "What a mess",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/31/adjixIsDown.opml"
},
"1": {
"text": "Blogger of the Year",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/31/bloggerOfTheYear.opml"
},
"2": {
"text": "Twitter is down",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/31/twitterIsDown.opml"
},
"3": {
"text": "The Un-Internet",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/31/theUninternet.opml"
},
"4": {
"text": "Let's try Livefyre",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/30/letsTryLivefyre.opml"
},
"5": {
"text": "Moving a domain off wordpress.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/29/transferringADomainOffWord.opml"
},
"6": {
"text": "Morning Coffee Notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/29/morningCoffeeNotes.opml"
},
"7": {
"text": "Linkblog pointers by domain, cont'd",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/29/linkblogPointersByDomainCo.opml"
},
"8": {
"text": "What time is it?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/28/whatTimeIsIt.opml"
},
"9": {
"text": "Dropbox is the computer",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/28/dropboxIsTheComputer.opml"
},
"10": {
"text": "The year is twenty-twelve",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/28/theYearIsTwentytwelve.opml"
},
"11": {
"text": "While we have GoDaddy's attention",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/27/whileWeveGotGodaddysAttent.opml"
},
"12": {
"text": "Listening is hard, and important",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/27/listeningIsHardAndImportan.opml"
},
"13": {
"text": "Why GoDaddy is the right target",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/26/whyGodaddyIsTheRightTarget.opml"
},
"14": {
"text": "Namecheap lookin cheap",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/26/namecheapLooksCheap.opml"
},
"15": {
"text": "An incredibly bad movie",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/26/anIncrediblyBadTooCloseMov.opml"
},
"16": {
"text": "Happy Christmas!",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/25/happyChristmas.opml"
},
"17": {
"text": "NJFF -- here's the plan",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/24/njffHeresThePlan.opml"
},
"18": {
"text": "This is a Facebook-free Zone",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/24/facebookfreeZone.opml"
},
"19": {
"text": "Naked Morning coffee notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/24/morningCoffeeNotes.opml"
},
"20": {
"text": "Morning coffee notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/24/morningCoffeeNotes.opml"
},
"21": {
"text": "GoDaddy says SOPA okay",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/22/godaddySaysSopaOkay.opml"
},
"22": {
"text": "Update on NJFF",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/22/updateOnNjff.opml"
},
"23": {
"text": "Facebook drones in the sky?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/22/facebookDronesInTheSky.opml"
},
"24": {
"text": "I now see Stallman's logic",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/21/iNowSeeStallmansLogic.opml"
},
"25": {
"text": "A new header graphic",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/20/aNewHeaderGraphic.opml"
},
"26": {
"text": "NakedJen Film Festival/NYC 2011",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/20/nakedjenFilmFestivalnyc201.opml"
},
"27": {
"text": "On the net, your feed is you",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/20/aMinimalBloggingToolIn2011.opml"
},
"28": {
"text": "If I were the NYT CEO",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/19/ifIWereTheNytCeo.opml"
},
"29": {
"text": "Linkblog pointers by domain",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/19/linkblogPointersByDomain.opml"
},
"30": {
"text": "True moment for NYT paywall",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/19/trueMomentForNytPaywall.opml"
},
"31": {
"text": "RT in a static river",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/19/rtInAStaticRiver.opml"
},
"32": {
"text": "Yesterday's puzzle (with solution)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/19/yesterdaysPuzzle.opml"
},
"33": {
"text": "Question re jQuery/JavaScript",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/19/questionReJqueryjavascript.opml"
},
"34": {
"text": "No USB disk mode for ICS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/18/noUsbDiskModeForIcs.opml"
},
"35": {
"text": "Dave Winer in a Nutshell?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/18/eddSaysIShouldWriteABook.opml"
},
"36": {
"text": "Are you a Frontier user?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/18/areYouAFrontierUser.opml"
},
"37": {
"text": "The best tech city in the US",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/17/theBestTechCityInTheUs.opml"
},
"38": {
"text": "RSS auto-discovery",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/17/rssAutodiscovery.opml"
},
"39": {
"text": "Conclusions about oEmbed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/17/conclusionsAboutOembed.opml"
},
"40": {
"text": "WordPress and oEmbed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/16/wordpressAndOembed.opml"
},
"41": {
"text": "First look at oEmbed",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/16/firstThoughtsAboutOembed.opml"
},
"42": {
"text": "Two Galaxy Nexus pics",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/16/twoGalaxyNexusPics.opml"
},
"43": {
"text": "Ice Cream Sandwich",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/16/iceCreamSandwich.opml"
},
"44": {
"text": "The software developer's dilemma",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/16/theSoftwareDevelopersDilem.opml"
},
"45": {
"text": "WordPress and Twitter connecting up",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/15/wordpressAndTwitterConnect.opml"
},
"46": {
"text": "What does the NDAA foretell?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/15/ndaaShouldBeFreakingOutAbo.opml"
},
"47": {
"text": "Knock knock",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/15/knockKnock.opml"
},
"48": {
"text": "Advancing the art of web writing",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/15/advancingTheArtOfWebWritin.opml"
},
"49": {
"text": "A new phone today",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/15/aNewPhoneToday.opml"
},
"50": {
"text": "Icons in Bootstrap Toolkit menubar",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/14/iconsInBootstrapToolkitMen.opml"
},
"51": {
"text": "Opportunity for a commenting system",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/14/opportunityForACommentingS.opml"
},
"52": {
"text": "I don't miss Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/14/iDontMissFacebook.opml"
},
"53": {
"text": "Beaver's Revenge",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/14/beaversRevenge.opml"
},
"54": {
"text": "Enough with the apps already",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/14/enoughWithTheAppsAlready.opml"
},
"55": {
"text": "Bootstrap toolkit question",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/13/bootstrapToolkitQuestion.opml"
},
"56": {
"text": "Improving tech criticism",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/13/about2012ForNieman.opml"
},
"57": {
"text": "Blogger of the Year (thinking)",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/13/bloggerOfTheYearThinking.opml"
},
"58": {
"text": "Why apps are not the future",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/13/whyAppsAreNotTheFuture.opml"
},
"59": {
"text": "The header graphics are back",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/13/theHeaderGraphicsAreBack.opml"
},
"60": {
"text": "Yahoo Weather API",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/13/yahooWeatherApi.opml"
},
"61": {
"text": "Why I use Android",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/12/whyIUseAndroid.opml"
},
"62": {
"text": "Another example of tech sexism",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/12/anotherExampleOfTechSexism.opml"
},
"63": {
"text": "If your app emits RSS...",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/11/ifYourAppEmitsRss.opml"
},
"64": {
"text": "Test podcast #3",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/11/testPodcast3.opml"
},
"65": {
"text": "Test podcast #2",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/10/testPodcast2.opml"
},
"66": {
"text": "Test podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/10/testPodcast.opml"
},
"67": {
"text": "New-new Twitter not so new",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/10/newnewTwitterNotSoNew.opml"
},
"68": {
"text": "The People's OS for mobile?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/09/thePeoplesOsForMobile.opml"
},
"69": {
"text": "Speaking at tech/media conferences",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/09/speakingAtTechConferences.opml"
},
"70": {
"text": "NPR should get a Pulitzer for this",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/09/nprShouldGetAPulitzerForTh.opml"
},
"71": {
"text": "Sexism in tech reporting",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/09/sexismInTechReporting.opml"
},
"72": {
"text": "Make your feed title meaningful",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/08/makeYourFeedTitleMeaningfu.opml"
},
"73": {
"text": "Next steps in the world outline",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/08/nextStepsInTheWorldOutline.opml"
},
"74": {
"text": "Facebook and subscriptions",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/07/facebookAndSubscriptions.opml"
},
"75": {
"text": "New feature today",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/07/newFeatureToday.opml"
},
"76": {
"text": "New feature today",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/07/newFeatureToday.opml"
},
"77": {
"text": "Listening to Podcasts in Android?",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/06/bugsInAndroid.opml"
},
"78": {
"text": "Month-to-month 4G, from Walmart",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/05/monthtomonth4gRevisit.opml"
},
"79": {
"text": "Firefox and Microsoft",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/04/mozillaAndMicrosoft.opml"
},
"80": {
"text": "Our short attention span",
"type": "blogpost",
"url": "http://scripting.com/stories/2011/12/02/ourShortAttentionSpan.opml"
}
}
}
}
},
"2": {
"text": "2010",
"subs": {
"0": {
"text": "January",
"type": "include",
"url": "http://scripting.com/2010/01.opml",
"subs": {
"0": {
"text": "What if Flash were an open standard?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/31/whatIfFlashWereAnOpenStand.opml"
},
"1": {
"text": "More iPad thoughts",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/30/moreIpadThoughts.opml"
},
"2": {
"text": "Attn Joe: Should we trust iPad?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/29/attnJoeShouldWeTrustIpad.opml"
},
"3": {
"text": "Apple's jumbo Oreo",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/28/applesJumboOreo.opml"
},
"4": {
"text": "Getting NYized",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/27/gettingNyized.opml"
},
"5": {
"text": "Reading tea leaves in advance of Apple's announcements",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/26/readingTeaLeavesInAdvanceO.opml"
},
"6": {
"text": "NY Public Library",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/26/nyPublicLibrary.opml"
},
"7": {
"text": "Random NY notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/26/randomNyNotes.opml"
},
"8": {
"text": "On Twitter doing business with developers",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/24/onTwitterDoingBusinessWith.opml"
},
"9": {
"text": "Leslie Harpold's archive",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/23/leslieHarpoldsArchive.opml"
},
"10": {
"text": "First blogger at Davos",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/22/firstBloggerAtDavos.opml"
},
"11": {
"text": "Request to be removed from the SUL",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/22/requestToBeRemovedFromTheS.opml"
},
"12": {
"text": "Twitter revamps the SUL, adds a twist",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/22/twitterRevampsTheSulAddsAT.opml"
},
"13": {
"text": "A new Rebooting The News essay",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/21/aNewRebootingTheNewsEssay.opml"
},
"14": {
"text": "Twitter is SMS 2.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/20/twitterIsSms20.opml"
},
"15": {
"text": "The (safe) future of Radio and Manila",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/20/theSafeFutureOfRadioAndMan.opml"
},
"16": {
"text": "Math and the new journalism",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/19/mathAndTheNewJournalism.opml"
},
"17": {
"text": "Where can I get some no-frills hosting?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/17/whereCanIGetSomeNofrillsHo.opml"
},
"18": {
"text": "Corporate media is the problem",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/17/corporateMediaIsTheProblem.opml"
},
"19": {
"text": "Learning doesn't stop at 22",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/14/learningDoesntStopAt22.opml"
},
"20": {
"text": "Year Zero for Journalism",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/14/yearZeroForJournalism.opml"
},
"21": {
"text": "RSS is the universal language of realtime",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/12/rssIsTheUniversalLanguageO.opml"
},
"22": {
"text": "Ageism is becoming an issue for me",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/11/ageismIsBecomingAnIssueFor.opml"
},
"23": {
"text": "Why newspapers should host blogs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/11/whyNewspapersShouldHostBlo.opml"
},
"24": {
"text": "SMS 2.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/10/sms20.opml"
},
"25": {
"text": "Renewed appeal for clip art",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/10/renewedAppealForClipArt.opml"
},
"26": {
"text": "I have a Nexus One",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/06/iHaveANexusOne.opml"
},
"27": {
"text": "The mother of all business models",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/02/theMotherOfAllBusinessMode.opml"
},
"28": {
"text": "An early DaveNet reduced to 138",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/02/anEarlyDavenetReducedTo138.opml"
},
"29": {
"text": "OAuth is becoming a cautionary tale",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/01/01/oauthIsBecomingACautionary.opml"
}
}
},
"1": {
"text": "February",
"type": "include",
"url": "http://scripting.com/2010/02.opml",
"subs": {
"0": {
"text": "Trouble at Twitter?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/28/troubleAtTwitter.opml"
},
"1": {
"text": "Citizen coverage of Hawaii tsunami?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/27/citizenCoverageOfHawaiiTsu.opml"
},
"2": {
"text": "Caprica and repurposed virtualities",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/26/capricaAndRepurposedVirtua.opml"
},
"3": {
"text": "Big change in the tech world",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/25/bigChangeInTheTechWorld.opml"
},
"4": {
"text": "Dropbox, AFP and the Olympics",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/25/dropboxAfpAndTheOlympics.opml"
},
"5": {
"text": "NYT and NYU partner on East Village site",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/22/nytAndNyuPartnerOnEastVill.opml"
},
"6": {
"text": "When to be worried",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/22/whenToBeWorried.opml"
},
"7": {
"text": "What we don't understand",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/20/whatWeDontUnderstand.opml"
},
"8": {
"text": "Does it matter who you get news from?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/19/doesItMatterWhoYouGetNewsF.opml"
},
"9": {
"text": "My Manhattan Network",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/18/myManhattanNetwork.opml"
},
"10": {
"text": "A week of Buzzing. Whatcha think?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/17/aWeekOfBuzzingWhatchaThink.opml"
},
"11": {
"text": "More snow in the big city",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/16/moreSnowInTheBigCity.opml"
},
"12": {
"text": "2nd Ave Deli",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/15/2ndAveDeli.opml"
},
"13": {
"text": "The 20-minute rule",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/14/the20minuteRule.opml"
},
"14": {
"text": "Google did something seriously wrong",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/14/googleDidSomethingSeriousl.opml"
},
"15": {
"text": "Walked the Highline",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/12/walkedTheHighline.opml"
},
"16": {
"text": "Morning coffee notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/12/morningCoffeeNotes.opml"
},
"17": {
"text": "East Village aggregator",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/11/eastVillageAggregator.opml"
},
"18": {
"text": "Sunny Washington Square Park with snow",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/11/sunnyWashingtonSquareParkW.opml"
},
"19": {
"text": "Is Google already 'too big to fail'",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/11/isGoogleAlreadyTooBigToFai.opml"
},
"20": {
"text": "Snowpocalypse Now!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/10/snowpocalypseNow.opml"
},
"21": {
"text": "A note about comments",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/10/aNoteAboutComments.opml"
},
"22": {
"text": "What's going on in NY?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/10/whatsGoingOnInNy.opml"
},
"23": {
"text": "Keep your enemies closer",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/10/keepYourEnemiesCloser.opml"
},
"24": {
"text": "Good morning snowstorm!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/10/goodMorningSnowstorm.opml"
},
"25": {
"text": "What's wrong with Google Buzz",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/10/whatsWrongWithGoogleBuzz.opml"
},
"26": {
"text": "Google Buzz? Pfffft",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/09/googleBuzzPfffft.opml"
},
"27": {
"text": "Is Manhattan exempt from snowstorms?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/09/isManhattanExemptFromSnows.opml"
},
"28": {
"text": "Twitter-killing follow-up",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/09/twitterkillingFollowup.opml"
},
"29": {
"text": "Must-have features for Twitter-killing",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/08/musthaveFeaturesForTwitter.opml"
},
"30": {
"text": "Who dat just won the whole thing!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/08/whoDatJustWonTheWholeThing.opml"
},
"31": {
"text": "My first full day in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/07/myFirstFullDayInNyc.opml"
},
"32": {
"text": "Hypercamp, revisited",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/07/hypercampRevisited.opml"
},
"33": {
"text": "Might be the perfect tweet for all time",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/06/mightBeThePerfectTweetForA.opml"
},
"34": {
"text": "Bit.ly Pro",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/05/bitlyPro.opml"
},
"35": {
"text": "Snow stories?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/05/snowStories.opml"
},
"36": {
"text": "Networking Experiment: NYU Computer Science",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/05/networkingExperimentNyuCom.opml"
},
"37": {
"text": "Google's two-way search is good for the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/03/googlesTwowaySearchIsGoodF.opml"
},
"38": {
"text": "If you think you have it bad...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/02/ifYouThinkYouHaveItBad.opml"
},
"39": {
"text": "Case study in extending RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/02/01/caseStudyInExtendingRss.opml"
}
}
},
"2": {
"text": "March",
"type": "include",
"url": "http://scripting.com/2010/03.opml",
"subs": {
"0": {
"text": "iPad as coral reef",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/31/ipadAsCoralReef.opml"
},
"1": {
"text": "NYC Hackathon at NYU, Apr 2-3",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/31/nycHackathonAtNyuApr23.opml"
},
"2": {
"text": "If it were my newspaper I'd...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/29/ifItWereMyNewspaperId.opml"
},
"3": {
"text": "Learn from quarterbacks",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/28/learnFromQuarterbacks.opml"
},
"4": {
"text": "Just sittin by the river...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/28/justSittinByTheRiver.opml"
},
"5": {
"text": "Was Scripting News really born on April 1?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/28/wasScriptingNewsReallyBorn.opml"
},
"6": {
"text": "A preview of what I'm working on",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/27/aPreviewOfWhatImWorkingOn.opml"
},
"7": {
"text": "It's all acting I tell you",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/26/itsAllActingITellYou.opml"
},
"8": {
"text": "nyblogs.org is up!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/25/nyblogsorgIsUp.opml"
},
"9": {
"text": "How big is a nugget-of-news?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/24/howBigIsANuggetofnews.opml"
},
"10": {
"text": "ScanSnap first look",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/23/scansnapFirstLook.opml"
},
"11": {
"text": "Do you have FIOS in Manhattan?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/22/doYouHaveFiosInManhattan.opml"
},
"12": {
"text": "Two releases today",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/22/twoReleasesToday.opml"
},
"13": {
"text": "Early podcasts, second try",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/20/earlyPodcastsSecondTry.opml"
},
"14": {
"text": "Nutty musicians in Washington Square",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/19/nuttyMusiciansInWashington.opml"
},
"15": {
"text": "Crutchfield shredded Amazon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/19/crutchfieldShreddedAmazon.opml"
},
"16": {
"text": "Scared of stairs?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/19/scaredOfStairs.opml"
},
"17": {
"text": "Your river in a box!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/18/yourRiverInABox.opml"
},
"18": {
"text": "East Village Newbies",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/18/eastVillageNewbies.opml"
},
"19": {
"text": "Could a scanner really be that good?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/17/couldAScannerReallyBeThatG.opml"
},
"20": {
"text": "Cops playing bagpipe in St Patrick's Parade",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/17/copsPlayingBagpipeInStPatr.opml"
},
"21": {
"text": "Spring walk on the Highline",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/16/springWalkOnTheHighline.opml"
},
"22": {
"text": "What should LittleCo's do?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/16/whatShouldLittlecosDo.opml"
},
"23": {
"text": "What BigTechCo's announce",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/16/whatBigtechcosAnnounce.opml"
},
"24": {
"text": "What is Twitter up to? (podcast)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/16/whatIsTwitterUpToPodcast.opml"
},
"25": {
"text": "Twitter as a force for good?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/15/twitterAsAForceForGood.opml"
},
"26": {
"text": "Today's Rebooting The News podcast",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/15/todaysRebootingTheNewsPodc.opml"
},
"27": {
"text": "I got my firewire cable",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/14/iGotMyFirewireCable.opml"
},
"28": {
"text": "In a moment of insanity",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/14/inAMomentOfInsanity.opml"
},
"29": {
"text": "The lesson of Ikea",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/14/theLessonOfIkea.opml"
},
"30": {
"text": "Twitter is down this morning",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/14/twitterIsDownThisMorning.opml"
},
"31": {
"text": "OPML Editor universal app testing",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/12/opmlEditorUniversalAppTest.opml"
},
"32": {
"text": "Installing Snow Leopard on a headless Mac Mini",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/12/installingSnowLeopardOnAHe.opml"
},
"33": {
"text": "Me and iPad: Not now",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/12/meAndIpadNotNow.opml"
},
"34": {
"text": "I like abbreviated RSS feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/11/iLikeAbbreviatedRssFeeds.opml"
},
"35": {
"text": "Still waiting for my HTTP-scanner",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/11/stillWaitingForMyHttpscann.opml"
},
"36": {
"text": "Location-based content",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/10/locationbasedContent.opml"
},
"37": {
"text": "RSS enclosures from 2004 and 2005",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/10/rssEnclosuresFrom2004And20.opml"
},
"38": {
"text": "Please fix WordPress for podcast feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/10/pleaseFixWordpressForPodca.opml"
},
"39": {
"text": "A nice boost for rssCloud",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/09/aNiceBoostForRsscloud.opml"
},
"40": {
"text": "18 interesting firsts",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/09/18InterestingFirsts.opml"
},
"41": {
"text": "Promising competition",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/09/promisingCompetition.opml"
},
"42": {
"text": "Great photo of Jobs at Oscars",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/08/greatPhotoOfJobsAtOscars.opml"
},
"43": {
"text": "This week's RBTN",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/08/thisWeeksRbtn.opml"
},
"44": {
"text": "Best Picture 2009?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/06/bestPicture2009.opml"
},
"45": {
"text": "Jeff Jarvis and BloggerCon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/06/jeffJarvisAndBloggercon.opml"
},
"46": {
"text": "Be wary of Google patents",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/05/beWaryOfGooglePatents.opml"
},
"47": {
"text": "Alice in Wonderland",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/05/aliceInWonderland.opml"
},
"48": {
"text": "Real-time search",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/05/realtimeSearch.opml"
},
"49": {
"text": "Renewed Evangelism: BloggerCon Format",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/04/renewedEvangelismBloggerco.opml"
},
"50": {
"text": "Google and RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/04/googleAndRss.opml"
},
"51": {
"text": "Last night's SoHo party",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/04/lastNightsSohoParty.opml"
},
"52": {
"text": "Where is the money in local blogging?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/03/whereIsTheMoneyInLocalBlog.opml"
},
"53": {
"text": "What is Apple up to?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/03/whatIsAppleUpTo.opml"
},
"54": {
"text": "WordPress supports PubSubHubBub",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/03/03/wordpressSupportsPubsubhub.opml"
}
}
},
"3": {
"text": "April",
"type": "include",
"url": "http://scripting.com/2010/04.opml",
"subs": {
"0": {
"text": "First look at Twitter for Android",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/30/firstLookAtTwitterForAndro.opml"
},
"1": {
"text": "How Twitter can save itself from Doom",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/30/howTwitterCanSaveItselfFro.opml"
},
"2": {
"text": "What's missing in realtime",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/29/whatsMissingInRealtime.opml"
},
"3": {
"text": "A podcast about loops",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/28/aPodcastAboutLoops.opml"
},
"4": {
"text": "What it means to be a blogger",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/27/whatItMeansToBeABlogger.opml"
},
"5": {
"text": "Netbooks are still a great deal",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/27/netbooksAreStillAGreatDeal.opml"
},
"6": {
"text": "When it should be easy to speak to a human",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/27/whenItShouldBeEasyToSpeakT.opml"
},
"7": {
"text": "The toxic coral reef",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/26/theToxicCoralReef.opml"
},
"8": {
"text": "Bill Jordan",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/26/billJordan.opml"
},
"9": {
"text": "I, Standards Body",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/25/iStandardsBody.opml"
},
"10": {
"text": "How BigTechCo's work inside",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/24/howBigtechcosWorkInside.opml"
},
"11": {
"text": "Does this loop ever end?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/23/doesThisLoopEverEnd.opml"
},
"12": {
"text": "Does your computer have an on/off switch?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/23/doesYourComputerHaveAnOnof.opml"
},
"13": {
"text": "How to turn off a Mac screen, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/23/howToTurnOffAMacScreenDay2.opml"
},
"14": {
"text": "Exploring iGoogle and pictures",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/23/exploringIgoogleAndPicture.opml"
},
"15": {
"text": "Compromising with Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/22/compromisingWithFacebook.opml"
},
"16": {
"text": "How to (really) turn off Mac screen?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/22/howToReallyTurnOffMacScree.opml"
},
"17": {
"text": "To Facebook the answer must be no",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/21/toFacebookTheAnswerMustBeN.opml"
},
"18": {
"text": "Vector-awareness, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/21/vectorawarenessDay2.opml"
},
"19": {
"text": "Hitler in the news",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/20/hitlerInTheNews.opml"
},
"20": {
"text": "What comes after location?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/20/whatComesAfterLocation.opml"
},
"21": {
"text": "Vonnegut's memoir",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/20/vonnegutsMemoir.opml"
},
"22": {
"text": "Hello New York!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/19/helloNewYork.opml"
},
"23": {
"text": "Wire messes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/18/wireMesses.opml"
},
"24": {
"text": "The route I took",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/18/theRouteITook.opml"
},
"25": {
"text": "Postscript on the scripting.com outage",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/18/postscriptOnTheScriptingco.opml"
},
"26": {
"text": "Question about Apache/Windows",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/18/questionAboutApachewindows.opml"
},
"27": {
"text": "An idea for Rackspace",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/18/anIdeaForRackspace.opml"
},
"28": {
"text": "I arrived in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/17/iArrivedInNyc.opml"
},
"29": {
"text": "Niagara Falls",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/16/niagaraFalls.opml"
},
"30": {
"text": "Greetings from Des Moines!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/15/greetingsFromDesMoines.opml"
},
"31": {
"text": "Road thinking",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/14/roadThinking.opml"
},
"32": {
"text": "Greetings from Park City",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/13/greetingsFromParkCity.opml"
},
"33": {
"text": "Greetings from Elko",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/13/greetingsFromElko.opml"
},
"34": {
"text": "Good morning sports fans!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/12/goodMorningSportsFans.opml"
},
"35": {
"text": "Is this thing on?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/11/isThisThingOn.opml"
},
"36": {
"text": "Twitter Week for client developers",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/10/twitterWeekForClientDevelo.opml"
},
"37": {
"text": "Microsoft rejection letter, 1987",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/10/microsoftRejectionLetter19.opml"
},
"38": {
"text": "How Twitter can kill the Twitter-killers",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/09/howTwitterCanKillTheTwitte.opml"
},
"39": {
"text": "My move to NY",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/09/myMoveToNy.opml"
},
"40": {
"text": "House-cleaning in Berkeley",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/08/housecleaningInBerkeley.opml"
},
"41": {
"text": "Platform vendors in love",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/07/platformVendorsInLove.opml"
},
"42": {
"text": "In 1970 I started a newspaper",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/07/in1970IStartedANewspaper.opml"
},
"43": {
"text": "iPad as a one-to-one presenter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/07/ipadAsAOnetoonePresenter.opml"
},
"44": {
"text": "Is iPad a game-changer?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/06/isIpadAGamechanger.opml"
},
"45": {
"text": "I'm back in Berkeley",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/05/imBackInBerkeley.opml"
},
"46": {
"text": "Glorious spring NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/04/gloriousSpringNyc.opml"
},
"47": {
"text": "Business class seat followup",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/04/businessClassSeatFollowup.opml"
},
"48": {
"text": "Verdict after one day",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/03/verdictAfterOneDay.opml"
},
"49": {
"text": "My iPad is here",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/03/myIpadIsHere.opml"
},
"50": {
"text": "Liveblogging from the Hackathon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/02/livebloggingFromTheHackath.opml"
},
"51": {
"text": "Quick bit about Gruber and Doctorow",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/02/quickBitAboutGruberAndDoct.opml"
},
"52": {
"text": "I wonder about the Kindle",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/02/iWonderAboutTheKindle.opml"
},
"53": {
"text": "Which Business Class seat to grab?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/04/01/whichBusinessClassSeatToGr.opml"
}
}
},
"4": {
"text": "May",
"type": "include",
"url": "http://scripting.com/2010/05.opml",
"subs": {
"0": {
"text": "Test page",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/29/testPage.opml"
},
"1": {
"text": "The Twitter of News?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/28/theTwitterOfNews.opml"
},
"2": {
"text": "I don't like wires but I do like ports",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/28/iDontLikeWiresButIDoLikePo.opml"
},
"3": {
"text": "The right column just got fatter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/28/theRightColumnJustGotFatte.opml"
},
"4": {
"text": "My top tweets in a JavaScript include",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/27/myTopTweetsInAJavascriptIn.opml"
},
"5": {
"text": "Buck stops here",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/27/buckStopsHere.opml"
},
"6": {
"text": "My instant review of Twitter's new business plan",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/25/myInstantReviewOfTwittersN.opml"
},
"7": {
"text": "My instant review of the LOST finale",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/24/myInstantReviewOfTheLostFi.opml"
},
"8": {
"text": "Fact-checking the death of the open web",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/23/factcheckingTheDeathOfTheO.opml"
},
"9": {
"text": "25 years of AOL",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/23/25YearsOfAol.opml"
},
"10": {
"text": "Making stories beautiful, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/23/makingStoriesBeautifulDay2.opml"
},
"11": {
"text": "Finales over the years",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/22/finalesOverTheYears.opml"
},
"12": {
"text": "New story template",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/22/newStoryTemplate.opml"
},
"13": {
"text": "Live-blogging from the Thursday meeting",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/20/livebloggingFromTheThursda.opml"
},
"14": {
"text": "The scoop on Google TV",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/20/theScoopOnGoogleTv.opml"
},
"15": {
"text": "Ben Franklin would have understood the plight of Twitter clients",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/20/benFranklinWouldHaveUnders.opml"
},
"16": {
"text": "The havoc the XML purists wrought",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/19/theHavocTheXmlPuristsWroug.opml"
},
"17": {
"text": "Hypercamp in SF this weekend",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/18/hypercampInSfThisWeekend.opml"
},
"18": {
"text": "What if Skype had an API?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/18/whatIfSkypeHadAnApi.opml"
},
"19": {
"text": "What makes a movie good?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/18/whatMakesAMovieGood.opml"
},
"20": {
"text": "Rebooting the News #52",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/17/rebootingTheNews52.opml"
},
"21": {
"text": "Harry Brown",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/16/harryBrown.opml"
},
"22": {
"text": "What if Zuck invented the web?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/15/whatIfZuckInventedTheWeb.opml"
},
"23": {
"text": "Playing real good for free",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/13/playingRealGoodForFree.opml"
},
"24": {
"text": "Code as photo-op",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/12/codeAsPhotoop.opml"
},
"25": {
"text": "Confronting the next taboo: Single",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/12/confrontingTheNextTabooSin.opml"
},
"26": {
"text": "Lessons from the demise of Newsweek",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/11/lessonsFromTheDemiseOfNews.opml"
},
"27": {
"text": "A 140ish limit",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/11/a140ishLimit.opml"
},
"28": {
"text": "Iron Man 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/10/ironMan2.opml"
},
"29": {
"text": "Afternoon sellout notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/10/afternoonSelloutNotes.opml"
},
"30": {
"text": "A pen for an iPad?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/09/aPenForAnIpad.opml"
},
"31": {
"text": "A poor man's OAuth?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/08/aPoorMansOauth.opml"
},
"32": {
"text": "Moving target APIs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/07/movingTargetApis.opml"
},
"33": {
"text": "Ray's Pizza makes me happy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/06/raysPizzaMakesMeHappy.opml"
},
"34": {
"text": "Is NYC the next tech mecca?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/06/isNycTheNextTechMecca.opml"
},
"35": {
"text": "Dr Brown's too sweet to be true",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/04/drBrownsTooSweetToBeTrue.opml"
},
"36": {
"text": "1.0 logic from a 2.0 guy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/04/10LogicFromA20Guy.opml"
},
"37": {
"text": "Response to Matt's important post about the Twitter API",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/03/responseToMattsImportantPo.opml"
},
"38": {
"text": "RBTN #50",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/03/rbtn50.opml"
},
"39": {
"text": "Replaceable",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/02/replaceable.opml"
},
"40": {
"text": "It's my party...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/02/itsMyParty.opml"
},
"41": {
"text": "Booting up Hypercamp in NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/05/01/bootingUpHypercampInNyc.opml"
}
}
},
"5": {
"text": "June",
"type": "include",
"url": "http://scripting.com/2010/06.opml",
"subs": {
"0": {
"text": "Why people buy iPhones",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/30/whyPeopleBuyIphones.opml"
},
"1": {
"text": "Writing good bug reports",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/30/writingGoodBugReports.opml"
},
"2": {
"text": "Testing notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/30/testingNotes.opml"
},
"3": {
"text": "Testing notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/30/testingNotes.opml"
},
"4": {
"text": "Welcome to reallysimple.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/29/iBuyFunDomains.opml"
},
"5": {
"text": "Dear Canon: Time to add communications to your low-end cameras",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/29/dearCanonTimeToAddCommunic.opml"
},
"6": {
"text": "It's no longer just my baby",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/28/itsNoLongerJustMyBaby.opml"
},
"7": {
"text": "Why I sometimes work openly",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/28/whyISometimesWorkOpenly.opml"
},
"8": {
"text": "New York seems to work",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/28/newYorkSeemsToWork.opml"
},
"9": {
"text": "My first link-blog post",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/27/myFirstLiveblogPost.opml"
},
"10": {
"text": "Next feature: Live-blogging in Scripting2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/27/nextFeatureLivebloggingInS.opml"
},
"11": {
"text": "How to approach an alpha product",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/27/howToApproachAnAlphaProduc.opml"
},
"12": {
"text": "Configuring a new server",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/26/configuringANewServer.opml"
},
"13": {
"text": "Look no hands! :-)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/26/lookNoHands.opml"
},
"14": {
"text": "I'm becoming a hot weather dude",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/25/imBecomingAHotWeatherDude.opml"
},
"15": {
"text": "A prayer to the programming fertility gods",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/25/relaunchingMyDevelopmentWo.opml"
},
"16": {
"text": "Apple gets \"free publicity\" from the line-ups",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/24/appleGetsFreePublicityFrom.opml"
},
"17": {
"text": "What does the FTC think of the Fail Whale?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/24/whatDoesTheFtcThinkOfTheFa.opml"
},
"18": {
"text": "I got my iPhone 4",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/24/iGotMyIphone4.opml"
},
"19": {
"text": "What good is the realtime web...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/23/whatGoodIsTheRealtimeWeb.opml"
},
"20": {
"text": "Time-Warner DOCSIS 3 in NYC?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/23/timewarnerDocsis3InNyc.opml"
},
"21": {
"text": "How Edit This Page works in Scripting2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/23/howEditThisPageWillWorkInS.opml"
},
"22": {
"text": "Improving paragraph-level permalinks",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/23/improvingParagraphlevelPer.opml"
},
"23": {
"text": "How to start over with Google Voice?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/23/howToStartOverWithGoogleVo.opml"
},
"24": {
"text": "Why I don't do interviews",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/22/whyIDontDoInterviews.opml"
},
"25": {
"text": "Should I be at the Apple store at 7AM on Thursday?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/22/shouldIBeAtTheAppleStoreAt.opml"
},
"26": {
"text": "How naming will work with Twitter Annotations",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/22/howNamingWillWorkWithTwitt.opml"
},
"27": {
"text": "An epiphany about Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/21/anEpiphanyAboutTwitter.opml"
},
"28": {
"text": "Kick back Google",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/20/kickBackGoogle.opml"
},
"29": {
"text": "A fatherless Father's Day",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/20/aFatherlessFathersDay.opml"
},
"30": {
"text": "Getting back to New York",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/20/gettingBackToNewYork.opml"
},
"31": {
"text": "Pear Salad",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/19/burgerAtTrex.opml"
},
"32": {
"text": "Burger at T-Rex",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/19/burgerAtTrex.opml"
},
"33": {
"text": "Why Angry Birds is so much fun",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/18/whyAngryBirdsIsSoMuchFun.opml"
},
"34": {
"text": "Yvonne and the fish-head guy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/17/yvonneAndTheFishheadGuy.opml"
},
"35": {
"text": "My last trip to Calif as a Californian",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/17/myLastTripToCalifAsACalifo.opml"
},
"36": {
"text": "2010 Knight News Challenge Winners",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/16/2010KnightNewsChallengeWin.opml"
},
"37": {
"text": "Bootstrapping a federated Twitwork with annotations?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/16/bootstrappingAFederatedTwi.opml"
},
"38": {
"text": "How I do the Hand-drawn Posts",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/16/howIDoTheHanddrawnPosts.opml"
},
"39": {
"text": "How an EBS for Twitter could work",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/15/howAnEbsForTwitterCouldWor.opml"
},
"40": {
"text": "A bug in the OPML validator?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/15/aBugInTheOpmlValidator.opml"
},
"41": {
"text": "You *can* reserve an iPhone 4 at an Apple Store",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/15/youCanReserveAnIphoneAtAnA.opml"
},
"42": {
"text": "May the source be with you! :-)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/15/mayTheSourceBeWithYou.opml"
},
"43": {
"text": "RSS to the left of me, OPML to the right",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/14/rssToTheLeftOfMeOpmlToTheR.opml"
},
"44": {
"text": "Today's Rebooting the News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/14/todaysRebootingTheNews.opml"
},
"45": {
"text": "People don't read. What I'm doing about it.",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/14/peopleDontReadAndWhatImDoi.opml"
},
"46": {
"text": "What a week!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/14/whatAWeek.opml"
},
"47": {
"text": "Scripting2 templates",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/13/scripting2Templates.opml"
},
"48": {
"text": "Next CSS question",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/13/nextCssQuestion.opml"
},
"49": {
"text": "Whose disk is it, Day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/13/whosDiskIsItDay2.opml"
},
"50": {
"text": "TechCrunch moves to San Francisco",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/13/techcrunchMovesToSanFranci.opml"
},
"51": {
"text": "The \"Reader\" function in Safari 5",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/12/theReaderFunctionInSafari5.opml"
},
"52": {
"text": "Another CSS question",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/12/anotherCssQuestion.opml"
},
"53": {
"text": "Gotta wonder if Steve knows",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/12/gottaWonderIfSteveKnows.opml"
},
"54": {
"text": "Work on Scripting2 continues",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/12/workOnScripting2Continues.opml"
},
"55": {
"text": "New feature: Blog post sub-text!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/11/newFeatureBlogPostSubtext.opml"
},
"56": {
"text": "Notes from last night's meetup",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/11/notesFromLastNightsMeetup.opml"
},
"57": {
"text": "Tonight's Thursday night NYU meetup",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/10/tonightsThursdayNightNyuMe.opml"
},
"58": {
"text": "Why he built Readability",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/10/whyHeBuiltReadability.opml"
},
"59": {
"text": "My Scripting2 to-do",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/10/myScripting2Todo.opml"
},
"60": {
"text": "Notes from today's panel",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/09/notesFromTodaysPanel.opml"
},
"61": {
"text": "How to get on wifi today",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/09/howToGetOnWifiToday.opml"
},
"62": {
"text": "Getting ready for today's panel",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/09/gettingReadyForTodaysPanel.opml"
},
"63": {
"text": "How ideas flowed in the old days",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/09/howIdeasFlowedInTheOldDays.opml"
},
"64": {
"text": "The new Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/09/theNewScriptingNews.opml"
},
"65": {
"text": "Find an airplane to jump out of",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/08/findAnAirplaneToJumpOutOf.opml"
},
"66": {
"text": "What happened with Pulse?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/08/whatHappenedWithPulse.opml"
},
"67": {
"text": "The new Safari scrapes ads",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/08/theNewSafariScrapesAds.opml"
},
"68": {
"text": "Sources Go Direct on Wednesday",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/07/sourcesGoDirectOnWednesday.opml"
},
"69": {
"text": "When you think you know it all",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/06/whenYouThinkYouKnowItAll.opml"
},
"70": {
"text": "Rachel Sterne, our third Sources Go Direct panelist",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/05/rachelSterneOurThirdSource.opml"
},
"71": {
"text": "Shining examples of easy-to-read blogs?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/05/shiningExamplesOfEasytorea.opml"
},
"72": {
"text": "Coordinates for Wednesday's InternetWeek panel",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/04/coordinatesForWednesdaysIn.opml"
},
"73": {
"text": "Fred Wilson, our second panelist",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/04/fredWilsonOurSecondPanelis.opml"
},
"74": {
"text": "Nicco Mele got some big news",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/04/niccoMeleGotSomeBigNews.opml"
},
"75": {
"text": "Setting the record straight",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/03/settingTheRecordStraight.opml"
},
"76": {
"text": "Why the Lumix ad ticks me off",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/02/whyTheLumixAdTicksMeOff.opml"
},
"77": {
"text": "Nick Denton, our first panelist",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/02/nickDentonOurFirstPanelist.opml"
},
"78": {
"text": "The dumbest ad ever",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/01/theDumbestAdEver.opml"
},
"79": {
"text": "Looking for eloquent NY-based sources who go direct",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/01/lookingForEloquentNybasedS.opml"
},
"80": {
"text": "Another test",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/06/01/anotherTest.opml"
}
}
},
"6": {
"text": "July",
"type": "include",
"url": "http://scripting.com/2010/07.opml",
"subs": {
"0": {
"text": "Hey I'm (almost) a Kindle author",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/31/heyImAlmostAKindleAuthor.opml"
},
"1": {
"text": "Virginia Heffernan and the science bloggers",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/31/theNytIsAtItsBestWhen.opml"
},
"2": {
"text": "OMG, Twitter is suggesting people to follow?!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/30/omgTwitterIsSuggestingPeop.opml"
},
"3": {
"text": "Starbucks and free wifi, continued",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/30/starbucksAndFreeWifi.opml"
},
"4": {
"text": "On my way to publishing a Kindle book",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/30/onMyWayToPublishingAKindle.opml"
},
"5": {
"text": "Got me some DOCSIS 3",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/29/gotMeSomeDocsis3.opml"
},
"6": {
"text": "DO YOU THINK BEFORE YOU COMMENT?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/29/doYouThinkBeforeYouComment.opml"
},
"7": {
"text": "science.newsriver.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/29/scienceblogsnewsriverorg.opml"
},
"8": {
"text": "Ole and Lena ride again",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/29/oleAndLenaRideAgain.opml"
},
"9": {
"text": "Kindle is OK",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/29/kindleIsOk.opml"
},
"10": {
"text": "We'd probably survive a 500-character limit",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/29/wedProbablySurviveA500char.opml"
},
"11": {
"text": "Starbucks' free wifi is the deciding factor",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/27/starbucksFreeWifiIsTheDeci.opml"
},
"12": {
"text": "What's the point of the magic trackpad?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/27/whatsThePointOfTheMagicTra.opml"
},
"13": {
"text": "Will the 140-char limit drop next?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/26/welcomeTwitterToTheWorldOf.opml"
},
"14": {
"text": "A hybrid of Google Calendar, Foursquare and Flickr",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/26/fileThisUnderProductsThatW.opml"
},
"15": {
"text": "Add this to Twitter's to-do list",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/26/addThisToTwittersTodoList.opml"
},
"16": {
"text": "Dancing in the Streets!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/26/dancingInTheStreets.opml"
},
"17": {
"text": "Inception is to The Matrix as...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/26/inceptionIsToTheMatrixAs.opml"
},
"18": {
"text": "Zero-tolerance for mindless Apple advocacy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/25/aDemoForAppleFans.opml"
},
"19": {
"text": "Apple's Flash policy is a breach of Postel's Law",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/25/applesFlashPolicyIsABreach.opml"
},
"20": {
"text": "In Washington it's all public relations",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/25/inWashingtonItsAllPublicRe.opml"
},
"21": {
"text": "Apple as Captain Queeg",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/24/steveJobsAsCaptainQueeg.opml"
},
"22": {
"text": "My \"Hello World\" post",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/23/myHelloWorldPost.opml"
},
"23": {
"text": "About Flipboard and reading surfaces",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/22/aboutFlipboardAndReadingSu.opml"
},
"24": {
"text": "How to do open development work, Rules 1 & 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/21/howToDoOpenDevelopentWorkR.opml"
},
"25": {
"text": "Apple's Black Friday",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/20/applesBlackFriday.opml"
},
"26": {
"text": "Realtime XML-RPC API",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/20/realtimeXmlrpcApi.opml"
},
"27": {
"text": "A mosque at Ground Zero",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/20/aMosqueAtGroundZero.opml"
},
"28": {
"text": "Death and Facebook, revisited",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/19/deathAndFacebookRevisited.opml"
},
"29": {
"text": "It's just a phone",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/18/itsJustAPhone.opml"
},
"30": {
"text": "Questions about the new Digg",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/18/tryingOutTheNewDigg.opml"
},
"31": {
"text": "Does Steve Jobs really love his customers?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/17/doesSteveJobsReallyLoveHis.opml"
},
"32": {
"text": "Inception is disappointing",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/16/inceptionIsDisappointing.opml"
},
"33": {
"text": "Are Wordpress themes necessarily open source?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/16/areWordpressThemesNecessar.opml"
},
"34": {
"text": "Getting ready for the Thursday meetup at NYU",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/15/gettingReadyForTheThursday.opml"
},
"35": {
"text": "Great tech recalls of the 20th Century",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/15/greatTechRecallsOfThe20thC.opml"
},
"36": {
"text": "Apple products have flaws",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/14/whyDidntMossbergAndPogueCa.opml"
},
"37": {
"text": "Apple's brewing shitstorm",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/14/applesBrewingShitstorm.opml"
},
"38": {
"text": "$38.5 million for Squarespace",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/14/385MillionForSquarespace.opml"
},
"39": {
"text": "Unwanted Google ads on wordpress.com blogs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/14/unwantedGoogleAdsOnWordpre.opml"
},
"40": {
"text": "Random Tuesday evening notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/13/randomTuesdayEveningNotes.opml"
},
"41": {
"text": "An end-user app development tool? Pfui!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/12/anEnduserAppDevelopmentToo.opml"
},
"42": {
"text": "Guy would have enjoyed this",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/11/iThinkGuyWouldHaveEnjoyedT.opml"
},
"43": {
"text": "The value of working together",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/11/theValueOfWorkingTogether.opml"
},
"44": {
"text": "SXSW panel idea: Why panel discussions suck",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/10/whyConferencesLikeSxswSuck.opml"
},
"45": {
"text": "Despicable Me in 3D",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/09/despicableMeIn3d.opml"
},
"46": {
"text": "In-browser OPML editing",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/09/inbrowserOpmlEditing.opml"
},
"47": {
"text": "Fire in lower Manhattan",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/08/fireInLowerManhattan.opml"
},
"48": {
"text": "Science goes direct",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/08/scienceGoesDirect.opml"
},
"49": {
"text": "People hosting their own servers",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/08/peopleHostingTheirOwnServe.opml"
},
"50": {
"text": "Getting started with Firebug",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/07/gettingStartedWithFirebug.opml"
},
"51": {
"text": "The Nikon camera of blogging tools?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/07/theNikonCameraOfBloggingTo.opml"
},
"52": {
"text": "Room service for a city",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/07/roomServiceForACity.opml"
},
"53": {
"text": "What's so hard about a mea culpa?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/06/whatsSoHardAboutAMeaCulpa.opml"
},
"54": {
"text": "Time for a trip soon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/06/timeForATripSoon.opml"
},
"55": {
"text": "Re-approaching N-level hierarchy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/06/reapproachingNlevelHierarc.opml"
},
"56": {
"text": "Need help with CSS-based outlines",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/05/needHelpWithCssbasedOutlin.opml"
},
"57": {
"text": "The joy of a new computer",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/05/theJoyOfANewComputer.opml"
},
"58": {
"text": "More Scripting2 work today",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/05/moreScripting2WorkToday.opml"
},
"59": {
"text": "Founders of the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/04/foundersOfTheWeb.opml"
},
"60": {
"text": "When you awake",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/04/whenYouAwake.opml"
},
"61": {
"text": "How to use hierarchy in blog posts?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/04/howToUseHierarchyInBlogPos.opml"
},
"62": {
"text": "Hastings on Democracy Now",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/04/hastingsOnDemocracyNow.opml"
},
"63": {
"text": "New protocol for creating posts in Scripting2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/03/newProtocolForCreatingPost.opml"
},
"64": {
"text": "Holy sit Starbucks is into Really Simple too",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/02/holySitStarbucksIsIntoReal.opml"
},
"65": {
"text": "Happy July 4 Holiday",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/02/happyJuly4Holiday.opml"
},
"66": {
"text": "This is a test",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/01/thisIsATest.opml"
},
"67": {
"text": "Getting ready for the Thursday night meetup",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/01/gettingReadyForTheThursday.opml"
},
"68": {
"text": "Lots of progress in Rebooting the News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/01/lotsOfProgressInRebootingT.opml"
},
"69": {
"text": "Lots of progress on Scripting2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/01/lotsOfProgressOnScripting2.opml"
},
"70": {
"text": "Getting ready for the Thursday night meetup",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/07/01/gettingReadyForTheThursday.opml"
}
}
},
"7": {
"text": "August",
"type": "include",
"url": "http://scripting.com/2010/08.opml",
"subs": {
"0": {
"text": "Connecting DailyMile with CycleMeter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/31/connectingDailymileWithCyc.opml"
},
"1": {
"text": "Early morning pre-heatwave bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/31/earlyMorningPreheatwaveBik.opml"
},
"2": {
"text": "Hey Gruber, what about the users?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/31/heyGruberWhatAboutTheUsers.opml"
},
"3": {
"text": "The coming Oauthcalypse",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/30/theComingOauthcalypse.opml"
},
"4": {
"text": "Dear Apple, re your boycott of Flash",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/30/dearAppleReYourBoycottOfFl.opml"
},
"5": {
"text": "The Final Jeopardy answer is...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/30/finalJeopardy.opml"
},
"6": {
"text": "Still a virgin?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/29/stillAVirgin.opml"
},
"7": {
"text": "Breaking Bad -- Oh So Good!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/29/breakingBadOhSoGood.opml"
},
"8": {
"text": "Sunday pre-breakfast ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/29/sundayPrebreakfastRide.opml"
},
"9": {
"text": "What they say about age is true",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/28/whatTheySayAboutAgeIsTrue.opml"
},
"10": {
"text": "Today's ride -- Can't get no respec!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/28/todaysRideCantGetNoRespec.opml"
},
"11": {
"text": "Today's ride -- piece of cake",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/27/todaysRidePieceOfCake.opml"
},
"12": {
"text": "A note about Diaspora",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/27/aNoteAboutDiaspora.opml"
},
"13": {
"text": "Playing with Pogoplug",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/27/playingWithPogoplug.opml"
},
"14": {
"text": "Mashups of the Mona Lisa",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/27/wheresTheRealMonaLisa.opml"
},
"15": {
"text": "links.scripting.com update",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/26/linksscriptingcomUpdate.opml"
},
"16": {
"text": "Another boring ride (but that's exciting)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/26/anotherBoringRideButThatsE.opml"
},
"17": {
"text": "Twitter let me opt-out of your suggestions",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/26/twitterLetMeOptoutOfYourSu.opml"
},
"18": {
"text": "How I do the hand-drawn diagrams",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/25/howIDoTheHanddrawnDiagrams.opml"
},
"19": {
"text": "A transparent change, but an important one",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/25/testPost.opml"
},
"20": {
"text": "Eat Pray Love",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/24/eatPrayLove.opml"
},
"21": {
"text": "Why I like comments",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/24/whyILikeComments.opml"
},
"22": {
"text": "There is Toyota and there is BMW",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/24/dennisLearnAndPracticePosi.opml"
},
"23": {
"text": "Morning bike ride -- equipment malfunction!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/24/morningBikeRideEquipmentMa.opml"
},
"24": {
"text": "New site: links.scripting.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/24/newSiteLinksscriptingcom.opml"
},
"25": {
"text": "Where is the iPhone 4 spacebar?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/23/whereIsTheIphone4Spacebar.opml"
},
"26": {
"text": "How long does it take for alcohol to reach your brain?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/23/howLongDoesItTakeForAlcoho.opml"
},
"27": {
"text": "With a happy refrain, I'm bikin in the rain!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/22/whatAGloriousRefrainImBiki.opml"
},
"28": {
"text": "Proposal: A new kind of blog comment system",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/22/proposalANewKindOfBlogComm.opml"
},
"29": {
"text": "Who was lining up at the Apple store today?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/21/whoWasLiningUpAtTheAppleSt.opml"
},
"30": {
"text": "I saw lots of Muslims on today's bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/21/iSawLotsOfMuslimsOnTodaysB.opml"
},
"31": {
"text": "Let's deport Karen Hughes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/21/letsDeportKarenHughes.opml"
},
"32": {
"text": "When my Windows servers reboot...",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/21/whenMyWindowsServersReboot.opml"
},
"33": {
"text": "Logging on to SMCD3GN cable modem?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/20/loggingOnToSmcd3gnCableMod.opml"
},
"34": {
"text": "Do you use a Pogoplug?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/20/doYouUseAPogoplug.opml"
},
"35": {
"text": "Computers say the darndest things!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/20/computersSayTheDarndestThi.opml"
},
"36": {
"text": "Bike riding/swimming vacation?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/20/testPost.opml"
},
"37": {
"text": "There Will Be Breakage",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/20/thereWillBeBreakage.opml"
},
"38": {
"text": "Throwing out software that works",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/20/throwingOutSoftwareThatWor.opml"
},
"39": {
"text": "The Big GWB! (And the lure of a tailwind.)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/19/theBigGwbAndTheLureOfATail.opml"
},
"40": {
"text": "The Big C vs the Big Zzzz",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/18/theBigCVsTheBigZzzz.opml"
},
"41": {
"text": "I love netbooks but Asus is blowing it",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/18/iLoveNetbooksButAsusIsBlow.opml"
},
"42": {
"text": "Shorter ride, tireder Dave",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/18/shorterRideTirederDave.opml"
},
"43": {
"text": "Followup on Apache/Dropbox/Windows",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/17/followupOnApachedropboxwin.opml"
},
"44": {
"text": "Nice things about the web",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/17/niceThingsAboutTheWeb.opml"
},
"45": {
"text": "A good weekday ride, reached 125th St",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/17/anotherGoodWeekdayRideReac.opml"
},
"46": {
"text": "An Apache/Dropbox problem",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/17/anApachedropboxProblem.opml"
},
"47": {
"text": "Hallowed ground, heh",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/16/hallowedGroundHeh.opml"
},
"48": {
"text": "Proposal: Fat Tweets Week on Twitter!?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/15/aCompromiseReFatTweets.opml"
},
"49": {
"text": "Sunday bike cruise with Cyclemeter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/15/sundayLiteBikeCruise.opml"
},
"50": {
"text": "Ain't \"fat\" tweets sweet? (they were)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/14/twitters140charLimitIsBrok.opml"
},
"51": {
"text": "Saturday 2-hour Tour de NY",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/14/saturday2hourTourDeNooYaww.opml"
},
"52": {
"text": "Friday uptown bike trip",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/13/fridayUptownBikeTrip.opml"
},
"53": {
"text": "VoiceAmerica Talk Radio Network",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/13/voiceAmericaTalkRadioNetwo.opml"
},
"54": {
"text": "WTF is with Afghanistan?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/12/wtfIsWithAfghanistan.opml"
},
"55": {
"text": "Today's bike trip: Under 3 bridges, round the Battery",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/12/todaysBikeTripUnder3Bridge.opml"
},
"56": {
"text": "Programming followups",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/12/programmingFollowups.opml"
},
"57": {
"text": "Back in the saddle again",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/11/backInTheSaddleAgain.opml"
},
"58": {
"text": "A bootstrap of 1000 miles begins with a single step",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/10/howToBootstrapFederated140.opml"
},
"59": {
"text": "Follow-up re Twitter suggested users feature",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/09/followupReTwitterSuggested.opml"
},
"60": {
"text": "Craigslist under fire in MSM",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/08/craigslistUnderFireInMsm.opml"
},
"61": {
"text": "Forgiveness",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/08/forgiveness.opml"
},
"62": {
"text": "Bike trip #5",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/08/bikeTrip5.opml"
},
"63": {
"text": "Rebooting the NYT Book Review",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/08/rebootingTheNytBookReview.opml"
},
"64": {
"text": "Finally, Twitter suggestions make sense",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/08/finallyTwitterSuggestionsM.opml"
},
"65": {
"text": "Borgs or blogs? You decide!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/07/borgsOrBlogsYouDecide.opml"
},
"66": {
"text": "Bike trip #4",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/07/bikeTrip4.opml"
},
"67": {
"text": "Improving discourse on Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/07/improvingDiscourseOnScript.opml"
},
"68": {
"text": "Followup on \"S3's missing feature\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/07/followupOnS3sMissingFeatur.opml"
},
"69": {
"text": "Visualizing failure, day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/07/visualizingFailureDay2.opml"
},
"70": {
"text": "Hot tiara babe nerdy tweeters in NY",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/06/hotTiaraBabeNerdyTweetersI.opml"
},
"71": {
"text": "Embracing failure is a good way to fail",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/06/embracingFailureIsAGoodWay.opml"
},
"72": {
"text": "Is Apple's freeze-out of Flash working?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/06/isApplesFreezeoutOfFlashWo.opml"
},
"73": {
"text": "Scripting News needs a curator or curators",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/06/scriptingNewsNeedsACurator.opml"
},
"74": {
"text": "S3 is missing one feature for web hosting",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/06/s3IsMissingOneFeatureForWe.opml"
},
"75": {
"text": "OMG Twitter is down arrrgh helllp whimper sob",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/05/thisIsWhatHasBecomeOfTheIn.opml"
},
"76": {
"text": "Lunch with NakedJen",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/05/lunchWithNakedjen.opml"
},
"77": {
"text": "Daily bike ride 3.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/05/dailyBikeRide30.opml"
},
"78": {
"text": "Better recommendations from Twitter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/05/betterRecommendationsFromT.opml"
},
"79": {
"text": "How to boot a federated social network, now",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/05/howToBootAFederatedSocialN.opml"
},
"80": {
"text": "Why didn't Google Wave boot up?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/05/whyDidntGoogleWaveBootUp.opml"
},
"81": {
"text": "Daily bike ride 2.0",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/04/secondDailyBikeRide.opml"
},
"82": {
"text": "Google vs iPhone and Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/04/googleVsIphone.opml"
},
"83": {
"text": "The first outing on my new bike",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/03/theFirstOutingOnMyNewBike.opml"
},
"84": {
"text": "A revelation: What I think matters",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/03/whatIThinkMatters.opml"
},
"85": {
"text": "Time-Warner wideband upgrade verdict is in",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/02/timewarnerUpgradeServiceDe.opml"
},
"86": {
"text": "Moving on for the last time",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/02/movingOnForTheLastTime.opml"
},
"87": {
"text": "Debugging 101",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/01/debugging101.opml"
},
"88": {
"text": "Flipboard 1.0 not so great",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/08/01/flipboard10NotSoGreat.opml"
}
}
},
"8": {
"text": "September",
"type": "include",
"url": "http://scripting.com/2010/09.opml",
"subs": {
"0": {
"text": "Feedhose -- a firehose for feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/30/feedhoseAFirehoseForFeeds.opml"
},
"1": {
"text": "Angelgate takes on a whole new meaning",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/30/angelgateTakesOnAWholeNewM.opml"
},
"2": {
"text": "Connecting the LEV with the East Village",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/30/connectingTheLevWithTheEas.opml"
},
"3": {
"text": "Congrats to TechCrunch and Mike",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/28/congratsToTechcrunchAndMik.opml"
},
"4": {
"text": "How to use open formats",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/27/howToUseOpenStandards.opml"
},
"5": {
"text": "The ultimate reporter tech toolkit?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/26/theUltimateReporterTechToo.opml"
},
"6": {
"text": "Ping: It's better than it (last) appeared",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/25/pingItsBetterThanItAppeare.opml"
},
"7": {
"text": "Today's ride: BANG!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/24/todaysRideBang.opml"
},
"8": {
"text": "Why use RSS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/24/whyUseRss.opml"
},
"9": {
"text": "Angelgate in a Nutshell",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/24/angelgateInANutshell.opml"
},
"10": {
"text": "Google New is great, but..",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/23/googleNewIsGreatBut.opml"
},
"11": {
"text": "My first piece on \"net neutrality\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/23/netNeutrality.opml"
},
"12": {
"text": "Farewell to the phone",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/23/farewellToThePhone.opml"
},
"13": {
"text": "One of the last summer-like rides?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/22/oneOfTheLastRidesOfSummer.opml"
},
"14": {
"text": "Rebooting RSS, interlude",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/22/rebootingRssInterlude.opml"
},
"15": {
"text": "What kind of news system...?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/22/whatKindOfNewsSystem.opml"
},
"16": {
"text": "Today's ride: Real HDR pictures",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/21/todaysRideRealHdrPictures.opml"
},
"17": {
"text": "The studio we use for Rebooting the News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/20/theStudioWeUseForRebooting.opml"
},
"18": {
"text": "Rebooting RSS, short names for feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/20/rebootingRssShortNamesForF.opml"
},
"19": {
"text": "How a Facebook \"phone\" can be easier than iPhone",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/19/howTheFacebookPhoneCanBeEa.opml"
},
"20": {
"text": "Facebook's phone as obvious as nose on your face",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/19/facebooksPhoneIsAsObviousA.opml"
},
"21": {
"text": "east-village.org",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/19/eastvillageorg.opml"
},
"22": {
"text": "Saturday after Labor Day bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/18/saturdayAfterLaborDayBikeR.opml"
},
"23": {
"text": "Rebooting RSS, pulling it together",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/18/rebootingRssTwoKeyPoints.opml"
},
"24": {
"text": "OTOH, Flash can reallllly suck",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/18/otohFlashCanRealllllySuck.opml"
},
"25": {
"text": "Yes, Virginia, there are two ways to read RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/18/yesVirginiaThereAreTwoWays.opml"
},
"26": {
"text": "Look at the sky!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/17/lookAtTheSky.opml"
},
"27": {
"text": "Today's ride: Fall is coming",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/17/todaysRideFallIsComing.opml"
},
"28": {
"text": "My fifth time through The Wire",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/17/myFifthTimeThroughTheWire.opml"
},
"29": {
"text": "Why the netbook category is fading",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/17/whyTheNetbookCategoryIsFad.opml"
},
"30": {
"text": "Big storm over Manhattan",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/16/bigStormOverManhattan.opml"
},
"31": {
"text": "Business, legal, and technical challenges",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/16/businessLegalAndTechnicalC.opml"
},
"32": {
"text": "The Architecture of RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/16/theArchitectureOfRss.opml"
},
"33": {
"text": "Does Twitter understand Twitter?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/15/doesTwitterUnderstandTwitt.opml"
},
"34": {
"text": "No more Twitter apps",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/15/noMoreTwitterApps.opml"
},
"35": {
"text": "16 media partners",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/15/16MediaPartners.opml"
},
"36": {
"text": "Tuesday ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/14/tuesdayRide.opml"
},
"37": {
"text": "How to reboot RSS",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/13/howToRebootRss.opml"
},
"38": {
"text": "Facebook is developing a great places database",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/12/facebookIsDevelopingAGreat.opml"
},
"39": {
"text": "What people don't understand about OAuth",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/11/peopleDontUnderstandOauthB.opml"
},
"40": {
"text": "Trying out TonidoPlug",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/11/tryingOutTonidoplug.opml"
},
"41": {
"text": "Does your script environment have a debugger?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/09/doesYourScriptingEnvironme.opml"
},
"42": {
"text": "Hash function performance",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/09/hashFunctionPerformance.opml"
},
"43": {
"text": "Old-style search engine",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/09/oldstyleSearchEngine.opml"
},
"44": {
"text": "Apple's change",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/09/applesChange.opml"
},
"45": {
"text": "Seattle public library",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/09/seattlePublicLibrary.opml"
},
"46": {
"text": "Checking in with Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/08/checkingInWithFacebook.opml"
},
"47": {
"text": "Instant Outliner support",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/07/instantOutlinerSupport.opml"
},
"48": {
"text": "Morning ride -- no collisions",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/06/morningRideNoCollisions.opml"
},
"49": {
"text": "Sunset bike ride, with minor collision",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/06/sunsetBikeRide.opml"
},
"50": {
"text": "Getting started with the Instant Outliner",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/04/gettingStartedWithTheInsta.opml"
},
"51": {
"text": "A sunset inspired by a hurricane",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/aSunsetInspiredByAHurrican.opml"
},
"52": {
"text": "Apple is green",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/appleIsGreen.opml"
},
"53": {
"text": "Pre-Earl bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/preearleBikeRide.opml"
},
"54": {
"text": "RSS to Twitter?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/rssToTwitter.opml"
},
"55": {
"text": "Instant Outlining update",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/instantOutliningUpdate.opml"
},
"56": {
"text": "Twitter + OAuth update",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/twitterOauthUpdate.opml"
},
"57": {
"text": "Test post",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/03/testPost.opml"
},
"58": {
"text": "They're dead now",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/02/theyreDeadNow.opml"
},
"59": {
"text": "Mid-day heat-wave ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/02/middayHeatwaveRide.opml"
},
"60": {
"text": "scripting.com: It's even worse than it appears",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/02/scriptingcomItsEvenWorseTh.opml"
},
"61": {
"text": "Ping: It's even worse than it appeared",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/02/pingItsEvenWorseThanItAppe.opml"
},
"62": {
"text": "Ping first use",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/01/pingFirstUse.opml"
},
"63": {
"text": "OAuthcalypse didn't kill my apps",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/01/oauthcalypseDidntKillMyApp.opml"
},
"64": {
"text": "A social network for music called Ping",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/01/aSocialNetworkForMusicCall.opml"
},
"65": {
"text": "Are you tuned into Apple TV?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/01/areYouTunedIntoAppleTv.opml"
},
"66": {
"text": "What's produced at hackathons?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/01/whatsProducedAtHackathons.opml"
},
"67": {
"text": "First ride of the new month -- it's a scorcha!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/09/01/firstRideOfTheNewMonthItsA.opml"
}
}
},
"9": {
"text": "October",
"type": "include",
"url": "http://scripting.com/2010/10.opml",
"subs": {
"0": {
"text": "Why the MacBook Air (11-inch version) is a win",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/30/whyTheMacbookAirIsAWin.opml"
},
"1": {
"text": "How using labels like liberal or lefty labels *you*",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/30/howUsingLabelsLikeLiberalO.opml"
},
"2": {
"text": "Yes on Prop 19",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/29/yesOnProp19.opml"
},
"3": {
"text": "First post from AiryBook",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/29/firstPostFromAirybook.opml"
},
"4": {
"text": "First few hours with the new AiryBook",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/28/firstFewHoursWithTheNewAir.opml"
},
"5": {
"text": "New York as a bike-riding Amsterdam",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/28/newYorkAsABikeridingAmster.opml"
},
"6": {
"text": "My East Side ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/28/myEastSideRide.opml"
},
"7": {
"text": "It's a wrap",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/28/itsAWrap.opml"
},
"8": {
"text": "My fairy friend",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/28/myFairyFriend.opml"
},
"9": {
"text": "My airy book",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/28/myAiryBook.opml"
},
"10": {
"text": "Post-eye-surgery bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/26/posteyesurgeryBikeRide.opml"
},
"11": {
"text": "Master narratives of Rebooting the News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/25/masterNarrativesOfRebootin.opml"
},
"12": {
"text": "Readings for Jay's class, week 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/25/readingsForJaysClassWeek2.opml"
},
"13": {
"text": "A tale of two phones",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/24/aTaleOfTwoPhones.opml"
},
"14": {
"text": "Amazingly, the OPML Editor now does JSON",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/23/amazinglyTheOpmlEditorNowD.opml"
},
"15": {
"text": "Amazingly, a killer app of OSes is possible",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/23/amazinglyAKillerAppOfOsesI.opml"
},
"16": {
"text": "Rule 1 of local blogs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/22/rule1OfLocalBlogs.opml"
},
"17": {
"text": "King nails it",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/22/kingNailsIt.opml"
},
"18": {
"text": "The Juan Williams controversy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/22/theJuanWilliamsControversy.opml"
},
"19": {
"text": "New blogging techniques",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/21/newBloggingTechniques.opml"
},
"20": {
"text": "Will the Mac remain an open platform?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/21/willTheMacRemainAnOpenPlat.opml"
},
"21": {
"text": "Writing during a crazy week",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/20/writingDuringACrazyWeek.opml"
},
"22": {
"text": "Random afternoon notes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/19/randomAfternoonNotes.opml"
},
"23": {
"text": "Steve Jobs reads a speech about Android",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/18/steveJobsReadsASpeechAppar.opml"
},
"24": {
"text": "FIOS",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/18/fios.opml"
},
"25": {
"text": "Readings from news execs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/18/readingsFromNewsExecs.opml"
},
"26": {
"text": "Marc Canter was right",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/18/marcCanterWasRight.opml"
},
"27": {
"text": "A blogger's store in NYC?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/18/aBloggersStoreInNyc.opml"
},
"28": {
"text": "The enemy of progress is complexity",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/17/howToDoAStandardPart3.opml"
},
"29": {
"text": "Zuck's bluff",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/17/zuckerbergsBarriersToEntry.opml"
},
"30": {
"text": "There are many possible social graphs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/16/techBlogPostOfTheDay.opml"
},
"31": {
"text": "From your East Village reporter",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/16/fromYourEastVillageReporte.opml"
},
"32": {
"text": "Today is moving day",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/15/todayIsMovingDay.opml"
},
"33": {
"text": "Our civilization doesn't scale",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/15/reaganWasASalesmanIfYouBel.opml"
},
"34": {
"text": "People who say \"government is never the answer\"",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/14/peopleWhoSayGovernmentIsNe.opml"
},
"35": {
"text": "I want a server rack in a (small) box",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/14/iWantAServerRackInASmallBo.opml"
},
"36": {
"text": "Eric Kidd's feedhose client, lots more news, faster!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/14/ericKiddsFeedhoseClientDay.opml"
},
"37": {
"text": "Perfect 10 for Microsoft ad",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/13/perfect10ForMicrosoftAd.opml"
},
"38": {
"text": "Beautiful weekday bike ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/13/beautifulWeekdayBikeRide.opml"
},
"39": {
"text": "Eric Kidd's feedhose client in Javascript",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/13/ericKiddsFeedhoseClientInJ.opml"
},
"40": {
"text": "A hackathon I'd like to be part of",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/12/aHackathonIdLikeToBePartOf.opml"
},
"41": {
"text": "ATNTFTP",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/12/allTheNewsThatsFitToPrint.opml"
},
"42": {
"text": "Short ride -- third day straight",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/11/shortRideThirdDayStraight.opml"
},
"43": {
"text": "Hackathons shouldn't just be corporate affairs",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/11/hackathonsShouldntJustBeCo.opml"
},
"44": {
"text": "Fixes to JSON support in FeedHose",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/11/fixesToJsonSupportInFeedho.opml"
},
"45": {
"text": "Stuck in Twitter, like the frog in boiling water",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/10/iCheeredForBobWoodwardWhen.opml"
},
"46": {
"text": "The big 10/10/10 ride",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/10/theBig101010Ride.opml"
},
"47": {
"text": "15 days between rides",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/09/backInTheSaddleAgain.opml"
},
"48": {
"text": "RSS data in JSON format",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/09/nextStepsInTheFeedhoseProj.opml"
},
"49": {
"text": "May resume biking soooon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/08/mayResumeBikingSoooon.opml"
},
"50": {
"text": "I have no idea what Ev is talking about",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/08/isEvTellingTheTruth.opml"
},
"51": {
"text": "4 more free ideas for your next hackathon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/08/4MoreFreeProjectIdeasForYo.opml"
},
"52": {
"text": "7 free project ideas for an academic hackathon",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/08/ideasForAnAcademicHackatho.opml"
},
"53": {
"text": "What if Wes Anderson did the Zuckerberg movie?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/06/whatIfWesAndersonHadDoneTh.opml"
},
"54": {
"text": "How to blow up a server in one mouse click",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/06/howToBlowUpAServerInOneMou.opml"
},
"55": {
"text": "Dropbox is down",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/05/dropboxIsDown.opml"
},
"56": {
"text": "Panasonic's new camera is a phone!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/05/panasonicsNewCameraIsAPhon.opml"
},
"57": {
"text": "Sammy's Roumanian Steak House",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/05/sammysRoumanianSteakHouse.opml"
},
"58": {
"text": "Ryan Tate on Rebooting the News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/04/ryanTateOnRebootingTheNews.opml"
},
"59": {
"text": "Cages for the ages",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/04/cagesForTheAges.opml"
},
"60": {
"text": "The Zuckerberg movie is good for Zuckerberg",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/04/theZuckerbergMovieIsGoodFo.opml"
},
"61": {
"text": "Maybe NYU should be a startup?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/04/maybeNyuShouldBeAStartup.opml"
},
"62": {
"text": "I'm looking for NYU's feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/03/lookingForNyusFeeds.opml"
},
"63": {
"text": "Father's Day, revisited",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/03/fathersDayRevisited.opml"
},
"64": {
"text": "Rebooting Computer Lib/Dream Machines",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/03/emailingWithTedNelson.opml"
},
"65": {
"text": "Let's do more computer science",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/03/letsDoMoreComputerScience.opml"
},
"66": {
"text": "Ace",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/02/ace.opml"
},
"67": {
"text": "How hackathons work, part 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/02/howHackerthonsWorkPart2.opml"
},
"68": {
"text": "Review of The Social Network",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/10/01/reviewOfTheSocialNetwork.opml"
}
}
},
"10": {
"text": "November",
"type": "include",
"url": "http://scripting.com/2010/11.opml",
"subs": {
"0": {
"text": "WinerLinks and outliners",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/30/winerlinksAndOutliners.opml"
},
"1": {
"text": "I'd love to buy a podcast player",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/30/idLoveToBuyAPodcastPlayer.opml"
},
"2": {
"text": "Jimmy Wales Day on the Internet?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/29/jimmyWalesDayOnTheInternet.opml"
},
"3": {
"text": "The Times does WinerLinks",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/29/theNyTimesLeadsAgain.opml"
},
"4": {
"text": "Conclusion: Dropbox and Apache don't mix",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/29/conclusionDropboxAndApache.opml"
},
"5": {
"text": "Dropbox debugging, day umpteen",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/28/dropboxDebuggingDayUmpteen.opml"
},
"6": {
"text": "New version of Dropbox on the way",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/27/newVersionOfDropboxOnTheWa.opml"
},
"7": {
"text": "What are you learning about Dropbox?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/27/whatAreYouLearningAboutDro.opml"
},
"8": {
"text": "What should Twitter's vision be?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/26/whatShouldTwittersVisionBe.opml"
},
"9": {
"text": "Thanks for the memories",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/25/thanksToLakeCasitas.opml"
},
"10": {
"text": "Static HTTP storage in FIOS router?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/25/staticHttpStorageInFiosRou.opml"
},
"11": {
"text": "Is anyone in PodcastLand happy with their CMS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/23/isAnyoneInPodcastlandHappy.opml"
},
"12": {
"text": "Wordpress.com podcast breakage",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/23/noteToRbtnSubscribers.opml"
},
"13": {
"text": "How picture-sharing works today",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/22/howPicturesharingWorksToda.opml"
},
"14": {
"text": "The top of the Empire State Building",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/20/theTopOfTheEmpireStateBuil.opml"
},
"15": {
"text": "Using S3 to store a complete site",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/19/usingS3ToStoreACompleteSit.opml"
},
"16": {
"text": "Tumblr's $25-plus miillon round",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/19/tumblrRaises25plusMiillonR.opml"
},
"17": {
"text": "I heart Hacker News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/18/iHeartHackerNews.opml"
},
"18": {
"text": "XML-RPC keeps chuggin along",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/18/xmlrpcKeepsOnChugginAlong.opml"
},
"19": {
"text": "Design challenge: River of News in HTML",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/16/designChallengeRiverOfNews.opml"
},
"20": {
"text": "Earmarks, deficits, pfui!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/16/earmarksDeficitsPfui.opml"
},
"21": {
"text": "Wild speculation on iTunes announcement",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/15/wildSpeculationOnTomorrows.opml"
},
"22": {
"text": "Selective realtime location sharing",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/15/selectiveRealtimeLocationS.opml"
},
"23": {
"text": "The tech industry is a virus",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/15/theTechIndustryIsAVirus.opml"
},
"24": {
"text": "Barriers to entry eventually break",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/14/barriersToEntryEventuallyB.opml"
},
"25": {
"text": "After fragmentation, consolidation",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/14/afterFragmentationConsolid.opml"
},
"26": {
"text": "Welcome to your hamster cage!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/14/welcomeToYourHamsterCage.opml"
},
"27": {
"text": "Hacker News firehose feed",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/13/hackerNewsFirehoseFeed.opml"
},
"28": {
"text": "New York observations",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/12/newYorkObservations.opml"
},
"29": {
"text": "How's the reboot of RSS going?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/12/howsTheRebootOfRssGoing.opml"
},
"30": {
"text": "Did you invent RSS?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/11/didYouInventRss.opml"
},
"31": {
"text": "Back yards vs city parks",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/09/benSlivkaAndBackyardsVsCit.opml"
},
"32": {
"text": "My Hacker News firehose is flowing again",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/09/myHackerNewsFirehoseIsFlow.opml"
},
"33": {
"text": "My Hacker News firehose",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/08/myHackerNewsFirehose.opml"
},
"34": {
"text": "Unbundle our archaic cable TV system",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/08/unbundleOurArchaicCableTvS.opml"
},
"35": {
"text": "Twitter Places? Hello. Is this new??",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/07/twitterPlacesHelloIsThisNe.opml"
},
"36": {
"text": "Creating a firehose feed for Hacker News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/07/creatingAFirehoseFeedForHa.opml"
},
"37": {
"text": "Watch a billion dollars come online overnight",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/07/watchABillionDollarsComeOn.opml"
},
"38": {
"text": "Whitehouse.gov should be a super-hyperlocal blog",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/07/whitehousegovShouldBeAHype.opml"
},
"39": {
"text": "How Obama could have avoided the shellacking",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/06/howObamaCouldHaveAvoidedTh.opml"
},
"40": {
"text": "Andrew Baron on QuickTime vs Flash",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/06/quicktimeVsFlash.opml"
},
"41": {
"text": "New York scene",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/04/newYorkScene.opml"
},
"42": {
"text": "How good is Sprint 4G in NYC?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/04/howGoodIsSprint4gInNyc.opml"
},
"43": {
"text": "Scripting blocked by McAfee",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/04/scriptingBlockedByMcafee.opml"
},
"44": {
"text": "Meeting at Library of Congress",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/03/meetingAtLibraryOfCongress.opml"
},
"45": {
"text": "The CNN idiots are relaxing",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/02/theCnnIdiotsAreRelaxing.opml"
},
"46": {
"text": "IOS on Macintosh, Day 2",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/02/iosOnMacintoshDay2.opml"
},
"47": {
"text": "I love reading Paul Krugman's blog posts",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/02/iLoveReadingPaulKrugmansBl.opml"
},
"48": {
"text": "Angry Birds on MacBook Air",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/01/angryBirdsOnMacbookAir.opml"
},
"49": {
"text": "Can you feel the morph?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/11/01/youCanFeelTheMorph.opml"
}
}
},
"11": {
"text": "December",
"type": "include",
"url": "http://scripting.com/2010/12.opml",
"subs": {
"0": {
"text": "America's Tiananmen and BOTY 2010",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/31/bloggerOfTheYear.opml"
},
"1": {
"text": "Dave Does Podcast!",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/31/daveDoesPodcast.opml"
},
"2": {
"text": "Will my iPhone become old next week?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/30/willMyIphoneBecomeOldNextW.opml"
},
"3": {
"text": "What kind of idiot do you take me for?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/29/whatKindOfIdiotDoYouTakeMe.opml"
},
"4": {
"text": "Bike-rider tailgates pedestrians",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/29/bikeriderTailgatesPedestri.opml"
},
"5": {
"text": "A note to Greenwald and the Wired guys",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/29/aNoteToGreenwaldAndTheWire.opml"
},
"6": {
"text": "Humans are crazy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/29/humansAreCrazy.opml"
},
"7": {
"text": "Simple thoughts about political correctness",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/28/aSimpleThoughtAboutPolitic.opml"
},
"8": {
"text": "US govt a big user of Amazon web services",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/28/usGovtABigUserOfAmazonWebS.opml"
},
"9": {
"text": "New profile picture",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/24/newProfilePicture.opml"
},
"10": {
"text": "Can we use S3 and EC2 to host free speech?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/24/noteToIndependentTechBlogg.opml"
},
"11": {
"text": "NakedJen Film Festival 2010/NYC",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/23/nakedjenFilmFestival2010ny.opml"
},
"12": {
"text": "A node.js module that does JSONP",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/23/aNodejsModuleThatDoesJsonp.opml"
},
"13": {
"text": "Throwing more JSON on the fire",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/23/throwingMoreJsonOnTheFire.opml"
},
"14": {
"text": "Walking the bridges",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/22/walkingTheBridges.opml"
},
"15": {
"text": "Buchheit on why Google will never catch Facebook",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/22/paulBuchheitOnWhyGoogleWil.opml"
},
"16": {
"text": "Washington Square Park Photo-op",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/22/washingtonSquareParkPhotoo.opml"
},
"17": {
"text": "Assange's rape charges (grabbing the third rail)",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/22/assangeRapeCharges.opml"
},
"18": {
"text": "Google Maps now show subway routes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/21/googleMapsNowShowSubwayRou.opml"
},
"19": {
"text": "Users creating products for users",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/21/4ExamplesOfFlippedaroundEc.opml"
},
"20": {
"text": "New camera, new eyes",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/21/newCameraNewEyes.opml"
},
"21": {
"text": "How to follow the WikiLeaks story",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/20/youDontHaveToBeAWikileaksE.opml"
},
"22": {
"text": "What does tech say?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/20/whatDoesTechSay.opml"
},
"23": {
"text": "Net neutrality is hypocrisy",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/19/netNeutralityIsHypocrisy.opml"
},
"24": {
"text": "Question for JSON gurus",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/18/questionForJsonGurus.opml"
},
"25": {
"text": "How Twitter and del.icio.us are alike",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/17/howTwitterAndDeliciousAreA.opml"
},
"26": {
"text": "Saving del.icio.us",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/16/savingDelicious.opml"
},
"27": {
"text": "wikiriver.org is flowing nicely",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/16/wikiriverorgIsFlowingNicel.opml"
},
"28": {
"text": "New WikiLeaks documentary",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/15/newWikileaksDocumentary.opml"
},
"29": {
"text": "Nieman picks up my Paywall/Maginot Line piece",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/15/niemanPicksUpMyPaywallmagi.opml"
},
"30": {
"text": "Willie Nelson on Scripting News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/15/willieNelsonOnScriptingNew.opml"
},
"31": {
"text": "Attn people using my JSON",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/14/attnPeopleUsingMyJson.opml"
},
"32": {
"text": "Email with Brewster",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/14/emailingWithBrewster.opml"
},
"33": {
"text": "One great thing about WikiLeaks",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/14/oneGreatThingAboutWikileak.opml"
},
"34": {
"text": "Request for feeds: News orgs with WikiLeaks feeds",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/13/requestForFeedsNewsOrgsWit.opml"
},
"35": {
"text": "A Web Trust to publish and store our creative work",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/13/weNeedAWebTrustToPublishAn.opml"
},
"36": {
"text": "The Paywall may be journalism's Maginot Line",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/12/thePaywallMayBeJournalisms.opml"
},
"37": {
"text": "How to tame a Linux server?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/12/howToTameAUnixServer.opml"
},
"38": {
"text": "Moon missions",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/11/moonMissions.opml"
},
"39": {
"text": "The Worldwide Web User's Manual",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/11/theWorldwideWebUsersManual.opml"
},
"40": {
"text": "How to set up Apache on Windows",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/11/howToSetUpApache.opml"
},
"41": {
"text": "Change in my JSONP approach",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/11/changeInMyJsonpApproach.opml"
},
"42": {
"text": "New views of my river",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/10/newViewsOfMyRiver.opml"
},
"43": {
"text": "My JSONP River of News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/09/myJsonpRiverOfNews.opml"
},
"44": {
"text": "JSONP questions",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/09/jsonpQuestions.opml"
},
"45": {
"text": "Are we starting a full-out war on the Internet?",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/08/wikileaksFlashConferenceOn.opml"
},
"46": {
"text": "How Protoblogger.com works",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/08/howProtobloggercomWorks.opml"
},
"47": {
"text": "Storing XML post source with Drupal",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/07/storingPostSourceWithDrupa.opml"
},
"48": {
"text": "My JSON River of News",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/06/innovationRiverOfNewsInJso.opml"
},
"49": {
"text": "Boycott Amazon? Not doing it.",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/06/boycottAmazonNotDoingIt.opml"
},
"50": {
"text": "President Mitch McConnell",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/05/presidentMitchMcconnell.opml"
},
"51": {
"text": "A feature request for blogging tool vendors",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/05/aFeatureRequestForBlogging.opml"
},
"52": {
"text": "The origin of podcasting",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/05/theOriginOfPodcasting.opml"
},
"53": {
"text": "Web server nerdvana",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/04/webServerNerdvana.opml"
},
"54": {
"text": "A perfect Wikileaks storm for Berkman",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/04/aPerfectWikileaksStormForB.opml"
},
"55": {
"text": "WikiLeaks on the run",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/03/wikileaksOnTheRun.opml"
},
"56": {
"text": "Dan deletes his Twitter account",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/02/danDeletesHisTwitterAccoun.opml"
},
"57": {
"text": "Union Square, the hub of the known universe",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/02/danielBachhuber.opml"
},
"58": {
"text": "Realtime blogging",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/02/realtimeBlogging.opml"
},
"59": {
"text": "The Realtime Brunch",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/02/theRealtimeBrunch.opml"
},
"60": {
"text": "Walking in Manhattan",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/02/walkingInManhattan.opml"
},
"61": {
"text": "A server for testing FeedHose apps",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/01/aServerForTestingFeedhoseA.opml"
},
"62": {
"text": "Suggestion for Amazon S3 and static sites",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/01/suggestionForAmazonS3AndSt.opml"
},
"63": {
"text": "Sitemaps and scripting.com",
"type": "blogpost",
"url": "http://scripting.com/stories/2010/12/01/sitemapsAndScriptingcom.opml"
}
}
}
}
}
}
},
"4": {
"text": "Note my archive only goes back to 2010 because that's when Scripting2 started managing my weblog. The HTML version of the table of contents goes all the way back to the beginning. It's possilbe that I'll be able to come up with compatible OPML going all the way back to 1994."
},
"5": {
"text": "The stories are of type blogpost, so they don't open in the OPML Editor yet, but they do in my installation of the World Outline."
},
"6": {
"text": "Parts",
"subs": {
"0": {
"text": "scripting2Suite.init"
},
"1": {
"text": "scripting2Suite.initUser"
},
"2": {
"text": "scripting2Suite.server.buildMonthOpml"
},
"3": {
"text": "scripting2Suite.server.buildTableOfContentsOpml"
},
"4": {
"text": "scripting2Suite.server.buildAfterDelete"
},
"5": {
"text": "scripting2Suite.server.buildAfterSave"
},
"6": {
"text": "scripting2Suite.server.buildEverything"
},
"7": {
"text": "scripting2Suite.server.savePost"
},
"8": {
"text": "scripting2Suite.utilities.setupOpmlTableOfContents"
},
"9": {
"text": "scripting2Suite.utilities.buildAllMonthOpml"
},
"10": {
"text": "scripting2Suite.background.everyMinute"
},
"11": {
"text": "scripting2RpcHandlers.saveText"
},
"12": {
"text": "scripting2Suite.data.misc.rpcXstruct"
}
}
}
}
},
"2": {
"text": "WorldOutline and blog posts",
"subs": {
"0": {
"text": "The other side of creating OPML for Scripting2 is to teach worldoutline to do nice things with blog posts. It's working out really nicely, esp since I've mastered a teeeny bit of CSS."
},
"1": {
"text": "Example of a blog post",
"type": "link",
"url": "http://worldoutline.scripting.com/mySites/scriptingNews/2011/april/iGotANexusSForEurope"
},
"2": {
"text": "I think it looks pretty snazzy!!"
}
}
}
}
},
"15": {
"text": "6/14/11 by DW",
"subs": {
"0": {
"text": "OPML for scripting2",
"subs": {
"0": {
"text": "Got the basic stuff working tonight."
},
"1": {
"text": "http://worldoutline.scripting.com/mySites/scriptingNews/2011/april",
"type": "link",
"url": "http://worldoutline.scripting.com/mySites/scriptingNews/2011/april"
}
}
},
"1": {
"text": "Home icon -- version 0.29",
"subs": {
"0": {
"text": "I want a quick way to see that the node I'm looking at is either at the root of a domain, or nested within one."
},
"1": {
"text": "The home icon looks like a home (surprise!) and you can set it from a Prefs page."
},
"2": {
"text": "It displays where you put the <%homeIcon%> macro, and appears when you're within a domain."
},
"3": {
"text": "The icon links back to the home of the domain."
},
"4": {
"text": "If the link doesn't work, it's probably because the CNAME doesn't point to the server."
},
"5": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.data.virgin.homeIcon"
},
"1": {
"text": "worldOutlineSuite.initUser"
},
"2": {
"text": "html.directory.viewDirectory"
},
"3": {
"text": "worldOutlineSuite.main"
},
"4": {
"text": "worldOutlineSuite.data.prefsOutline"
},
"5": {
"text": "worldOutlineInfo"
}
}
}
}
},
"2": {
"text": "Installable worldOutline.root",
"subs": {
"0": {
"text": "1. I released parts that make setting up the workstation to communicate with the World Outline server totally browser-based."
},
"1": {
"text": "2. Released parts that update a worldOutline.root installation to the same code the new ones are running."
},
"2": {
"text": "3. Announced on the world-outline mail list."
},
"3": {
"text": "Here's an example of a near-virgin site set up with the new howto. This is just a temporary site, I'm sure it won't be up for very long."
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineWebsite.[\"#filters\"].firstFilter -- released"
},
"1": {
"text": "worldOutlineSuite.viewMenu -- released"
},
"2": {
"text": "worldOutlineSuite.data.virgin.headerGraphic -- released"
},
"3": {
"text": "worldOutlineSuite.data.prefsForSetup -- released"
},
"4": {
"text": "worldOutlineSuite.setup -- released"
},
"5": {
"text": "worldOutlineSuite.init -- released"
},
"6": {
"text": "worldOutlineSuite.initUser -- released"
},
"7": {
"text": "worldOutlineRpcHandlers.verifyServerAddress -- released"
},
"8": {
"text": "worldOutlineSuite.saveUserRoot -- released"
},
"9": {
"text": "worldOutlineRpcHandlers.saveUserRoot -- released"
},
"10": {
"text": "worldOutlineSuite.getRootOutlineUrl -- released"
},
"11": {
"text": "worldOutlineSuite.setDefaultAtts -- released"
},
"12": {
"text": "worldOutlineSuite.main -- released"
},
"13": {
"text": "worldOutlineWebsite.[\"#objectnotfoundhandler\"] -- released"
},
"14": {
"text": "worldOutlineSuite.background.everyMinute -- released"
},
"15": {
"text": "opmleditor.data.outlines.prefs -- released"
},
"16": {
"text": "opmleditor.worldoutline.init -- released"
},
"17": {
"text": "opmlEditor.worldOutline.validatePrefs -- released"
},
"18": {
"text": "opmlEditor.worldOutline.openWorkspace -- released"
},
"19": {
"text": "opmlEditor.worldOutline.saveWorkspace -- released"
}
}
}
}
}
}
},
"16": {
"text": "6/13/11 by DW",
"subs": {
"0": {
"text": "Installation of worldOutline.root",
"subs": {
"0": {
"text": "Status of project -- I have all the pieces working, but I'm bushed."
},
"1": {
"text": "Tomorrow morning I will review what I have, update the docs, and possibly change the functionality (but I doubt it)."
},
"2": {
"text": "I will announce the availability of the test software on the new World Outline mail list."
},
"3": {
"text": "Parts",
"subs": {
"0": {
"text": "opmleditor.data.outlines.prefs"
},
"1": {
"text": "opmleditor.worldoutline.init"
},
"2": {
"text": "opmlEditor.worldOutline.validatePrefs"
},
"3": {
"text": "opmlEditor.worldOutline.openWorkspace"
},
"4": {
"text": "opmlEditor.worldOutline.saveWorkspace"
},
"5": {
"text": "worldOutlineRpcHandlers.saveUserRoot"
},
"6": {
"text": "worldOutlineRpcHandlers.verifyServerAddress"
},
"7": {
"text": "worldOutlineSuite.background.everyMinute"
},
"8": {
"text": "worldOutlineSuite.data.prefsForSetup"
},
"9": {
"text": "worldOutlineSuite.data.virgin.headerGraphic"
},
"10": {
"text": "worldOutlineSuite.getRootOutlineUrl"
},
"11": {
"text": "worldOutlineSuite.init"
},
"12": {
"text": "worldOutlineSuite.initUser"
},
"13": {
"text": "worldOutlineSuite.main"
},
"14": {
"text": "worldOutlineSuite.saveUserRoot"
},
"15": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"16": {
"text": "worldOutlineSuite.setup"
},
"17": {
"text": "worldOutlineWebsite.[\"#objectnotfoundhandler\"]"
}
}
}
}
},
"1": {
"text": "Disqus CSS",
"subs": {
"0": {
"text": "I want comments on my worldOutline, but they look horrible, going all the way across the screen"
},
"1": {
"text": "I figured there must be CSS styles defined by Disqus, and indeed there are."
},
"2": {
"text": "So now the trick is to implement some defaults. Let's see..."
}
}
},
"2": {
"text": "Comments in outlines",
"subs": {
"0": {
"text": "Another thing that broke somewhere along the line are outline comments."
},
"1": {
"text": "If you added a comment line, you'd get {comment} in the text, where the comment should appear."
},
"2": {
"text": "Hopefully that's fixed now. (It is.)"
},
"3": {
"text": "Background",
"subs": {
"0": {
"text": "If you're not a Frontier programmer you may not understand comments. So here's how they work."
},
"1": {
"text": "When you're creating a line in an outline, if you hold down the Shift key, the line will be a comment. It and everything below it will be displayed with a chevron at the beginning."
},
"2": {
"text": "When this appears in code, the compiler ignores it. This makes it possible to write huge comments that are hidden away under a single line. Very useful."
},
"3": {
"text": "You can enter comment lines in regular outlines too. And they are formatted specially by the worldOutline code."
},
"4": {
"text": "Also, if you want to make a line a comment after you've entered it, there's a command in the Outliner menu that toggles the comment attribute. (It's so important it has a keystroke -- Cmd-\\.)"
}
}
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "html.directory.viewDirectory"
}
}
}
}
},
"3": {
"text": "XML icon incorrect",
"subs": {
"0": {
"text": "In worldOutline, when you're within an inclusion the XML url is incorrect."
},
"1": {
"text": "It points to the outermost OPML file."
},
"2": {
"text": "This bug was introduced in the upheaval on the 9th where the lower-level cache was removed."
},
"3": {
"text": "There was a reference to a variable that wasn't defined, and the code was within a try, so it didn't fail."
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "html.directory.walk"
}
}
}
}
},
"4": {
"text": "Domains command",
"subs": {
"0": {
"text": "A new command in the menu, Domains."
},
"1": {
"text": "Click on it, and you can see a list of the domains you've mapped to nodes in your root outline"
},
"2": {
"text": "Parts",
"subs": {
"0": {
"text": "worldOutlineSuite.viewDomains"
},
"1": {
"text": "worldOutlineSuite.viewPageInTemplate"
},
"2": {
"text": "worldOutlineWebsite.domains"
},
"3": {
"text": "worldOutlineWebsite.prefs"
},
"4": {
"text": "worldOutlineSuite.viewMenu"
}
}
}
}
}
}
},
"17": {
"text": "6/12/11 by DW",
"subs": {
"0": {
"text": "worldOutline.root",
"subs": {
"0": {
"text": "Two big changes in this release:"
},
"1": {
"text": "1. We can now dive into feeds in the world outline."
},
"2": {
"text": "2. You can now include bits of what worldOutline.root serves as inclusions in outlines, thereby feeding back into worldOutlines, and any other context that inclusions work in."
},
"3": {
"text": "Along the way, there were improvements in the way inclusions are handled in the OPML Editor, what happens when you expand them. Should be much faster and it caches the outlines, using the same mechanism developed to make the server more reliable."
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "html.directory.buildOpmlReturn"
},
"1": {
"text": "html.directory.data.opmlReturnTemplate"
},
"2": {
"text": "html.directory.data.opmlReturnXstruct"
},
"3": {
"text": "html.directory.viewDirectory"
},
"4": {
"text": "op.getNetOutline"
},
"5": {
"text": "frontier.tools.data.nodetypes.include.expand"
},
"6": {
"text": "worldOutlineSuite.init"
},
"7": {
"text": "worldOutlineSuite.setDefaultAtts"
},
"8": {
"text": "worldOutlineSuite.viewFeedCallback"
},
"9": {
"text": "worldOutlineWebsite.stylesheet"
}
}
}
}
},
"1": {
"text": "feedHose.root",
"subs": {
"0": {
"text": "Added a pref on client side, for each feed, called fOpml."
},
"1": {
"text": "It's the path to a file that we save the OPML of the hose to every time it updates."
},
"2": {
"text": "If you point into your dropbox public folder, or another folder that's available on the web, you can include the OPML in your worldoutline."
},
"3": {
"text": "Note that there's already code in the app that writes an HTML file every time there's an update. It works the same way except the pref is called fHtml"
},
"4": {
"text": "Parts",
"subs": {
"0": {
"text": "feedhoseSuite.client.initHose"
},
"1": {
"text": "feedhoseSuite.client.write"
}
}
}
}
}
}
}
}
}
}
}; //7/9/15 by DW
Worknotes