Month: 2005/06
-
2005 June 29
-
Building a proper shared syndication feed foundation
[ ... 1838 words ... ]
-
2005 June 28
-
Quick post-lunch OS X and iTunes dribblings
iTunes podcasting support... I want it all, and I want it now, because it has so much potential in and of itself, and so much potential for driving podcast tuner UI into the future. The subscriptions are listed alphabetically? Come on, let me sort them in last-updated order. And what, no OPML import / export? Not many podcast-related additions to the AppleScript scripting dictionary for iTunes. I see a subscribe method, but I was hoping I could at least hack in some support for subscription list import / export. Not having access to the subscription list puts a crimp in that. Update: Hooray for people who know what they're talking about. Turns out there are a few more additions to iTunes' AppleScript support I missed, but I'm still not finding my way down to accessing the list of podcast subscriptions. Update 2: Looks like someone's already worked on the import side of things: OPML2iTunes : AppleScript to import OPML podcast subscriptions into iTunes And in the Bizzarro-Verse, Microsoft is more community-oriented than Apple when it comes to RSS extension creation. Pretty odd. I can see a few spots where the iTunes tags are defensible, but couldn't most or all of these have been established using Dublin Core or other prior work? Bummer. It seems like the new podcasting support in iTunes doesn't use Syndication.framework, or at least the feeds subscribed in iTunes don't show up in the Sources table in the database I was snooping around in. And here I was hoping for Tiger to have already quietly included a shared syndication feed architecture similar to what's proposed for Longhorn. Otherwise, podcasting in iTunes seems interesting so far. Now, if it used BitTorrent out of the box... Can I just say I hate the new binary plists in OS X Tiger? I got so used to futzing with them using vim and shell-side friends that it's jarring to get a face full of garbage now when I poke at them. And yeah, I know about /usr/bin/plutil--but, yuck. [ ... 486 words ... ]
-
Safari RSS databases in Mac OS X Tiger - or Monkeys and Ninjas and Pirates and Robots, oh my!
Hey, what do you know? The database used by Syndication.framework on OS X is accessible with SQLite 3, assumedly by virtue of Core Data. Check out this barely presentable capture of what I just did in a shell window: [11:34:49] deusx@Caffeina2:~/Library/Syndication$ sqlite3 Database3 SQLite version 3.0.8 Enter ".help" for instructions sqlite> .tables Articles Sources sqlite> .schema Articles CREATE TABLE Articles (id INTEGER PRIMARY KEY, source_id INTEGER,author TEXT,title TEXT,contentType INT(1), contents TEXT,excerpt TEXT,GUID TEXT,permalink TEXT,iconURL TEXT, categories TEXT,date DATETIME,dateReceived DATETIME,unread INT(1), flagged INT(1),collapsed INT(1),noComments INT(1)); CREATE INDEX ArticleCurrents ON Articles (noComments); CREATE INDEX ArticleDates ON Articles (date); CREATE INDEX ArticleDatesRcvd ON Articles (dateReceived); CREATE INDEX ArticleSources ON Articles (source_id); CREATE INDEX ArticleUnreads ON Articles (unread); sqlite> .schema Sources CREATE TABLE Sources (id INTEGER PRIMARY KEY,URL TEXT, subscribed INT(1),title TEXT,iconURL TEXT,date INT,lastCheck INT, lastUpdate INT,slider INT(1),description TEXT,homePage TEXT, timespan INT(1),sort INT(1),HTTPdate VARCHAR,feedHash VARCHAR(40), FOAFURL TEXT,protocol VARCHAR,lastError VARCHAR,maxDays INT(2), maxArticles INT(2),x_monkey TEXT,x_ninja TEXT,x_pirate TEXT, x_robot TEXT); sqlite> select * from Sources; id|URL|subscribed|title|iconURL|date|lastCheck|lastUpdate|slider|description|homePage|timespan|sort|HTTPdate|feedHash|FOAFURL|protocol|lastError|maxDays|maxArticles|x_monkey|x_ninja|x_pirate|x_robot 1|http://www.apple.com/main/rss/hotnews/hotnews.rss|1|Apple Hot News||141617700|141648125|141648128|||http://www.apple.com/hotnews/|||Tue, 28 Jun 2005 02:15:00 GMT|150fdf111cd223367f5c0cb8d28c65ec2a4ec195||RSS||||||| 2|http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wpa/MRSS/newreleases/limit=25/rss.xml|1|iTunes 25 New Releases|/images/rss/badge.gif|141577349|141648124|141648126|||http://phobos.apple.com/WebObjects/MZStore.woa/wa/com.apple.jingle.app.store.DirectAction/viewNewReleases?pageType=newReleases&id=1|||Mon, 27 Jun 2005 18:02:29 GMT|8a2c02423581414b223f4533f0bf89211e1aa6c7||RSS||||||| ... sqlite> select * from Articles; id|source_id|author|title|contentType|contents|excerpt|GUID|permalink|iconURL|categories|date|dateReceived|unread|flagged|collapsed|noComments 2003|5||'Mactel' desktops may offer triple-threat OS|0||Also: GE, IBM and GM: the welfare kings|http://news.com.com/News.com+Extra/2001-9373_3-0.html?part=rss&tag=rsspr.5748612&subj=news|http://news.com.com/News.com+Extra/2001-9373_3-0.html?part=rss&tag=rsspr.5748612&subj=news|||140527020|140612922|1|||0 2004|5||Virtual property becomes a reality|0||Blog: With the recent sentencing of a Chinese man who murdered an acquaintance in a dispute over a virtual sword, talk of the growing...|http://news.com.com/2061-10786_3-5748748.html?part=rss&tag=5748748&subj=news|http://news.com.com/2061-10786_3-5748748.html?part=rss&tag=5748748&subj=news|||140579040|140612922|1|||0 There's one piece up there that had me do a coffee spit-take, though: x_monkey TEXT,x_ninja TEXT,x_pirate TEXT,x_robot TEXT Seems like the Syndication Wars have progressed, and the various sides have enlisted all of these combatting factions. Monkey vs Robot, Pirates vs Ninja--I only wonder whether the Ninjas and Robots will ally against the Monkeys and Pirates? It just seems natural. [ ... 418 words ... ]
-
Four thoughts on MS RSS so far
[ ... 772 words ... ]
-
2005 June 25
-
Microsoft + RSS: Godzilla tiptoes into Tokyo
[ ... 291 words ... ]
-
2005 June 24
-
Locking down Mac OS X for Intel
[ ... 1160 words ... ]
-
decafbot update & FAQs
[ ... 414 words ... ]
-
2005 June 23
-
Quick mind interface thoughts
[ ... 373 words ... ]
-
2005 June 22
-
Fun and not-so-fun
[ ... 609 words ... ]
-
2005 June 17
-
We're engaged!
[ ... 697 words ... ]
-
2005 June 15
-
Spotlight Bummers and the CC Metadata Importer
[ ... 641 words ... ]
-
2005 June 14
-
Two unrelated quick thoughts
[ ... 899 words ... ]
-
Gadget Flashback
[ ... 1481 words ... ]
-
2005 June 10
-
Downloaded Brains versus VGER
[ ... 750 words ... ]
-
Blosxom, Tiger, and Spotlight
[ ... 597 words ... ]
-
2005 June 09
-
Post-Lunch Quicks
[ ... 518 words ... ]
-
2005 June 08
-
Back to the Quickies
[ ... 267 words ... ]
-
Further quick thoughts on GreaseMonkey
Now for some quick GreaseMonkey spew, recorded without any effort to actually see what's up in the community or reading any FAQs: I want to separate script code into reusable modules. That said, am I an Architecture Astronaut when I can't get more than 10 minutes into a quick project without already starting to digress into building a reusable framework? Is it wrong that I felt like I was working in Perl again when I wrote that script? That said, I wish JavaScript had either multi-line quotes ala Python or Perl heredoc syntax. Doing some twisty regex search-and-replace in Vi lets you do a lot of refactoring / recoding damage to source code in no time flat. Can I just say how nice it is to not worry about other browsers when coding? I've also got a few ideas I'd like to record and pursue for future GreaseMonkey endeavors: Record the URL of all form submissions via XMLHTTPRequest to a remote server, with blog comment forms in mind. Track changes on those URLs. Notify me via Atom feed when new comments arrive in places where I posted comments. Clean up and abstract that magic form thing I did into a more general way to make all kinds of magic textarea forms. (More microformats? .sig files for LiveJournal responses? /usr/bin/banner for annoying blog comments?) Revive Third Voice in GreaseMonkey style. Subscribe to arbitrary REST API'ed annotation servers, fetch & aggregate annotations for current URL via XMLHTTPRequest, build cute floating stickies with rude comments from friends. Auto-ROT13 en/decoder ring, because there's a need for that. Script which redirects all links to books on Amazon.com to point at my new book. I will install this on all computers at CompUSA and the Apple Store. I've suddenly realized that a lot of the things I wanted to do with Agent Frank are possible with GreaseMonkey. Also, I wonder how long it'll be before I get sucked into further FireFox extension hacking. [ ... 740 words ... ]
-
Magic Microformat Forms Redux, Now with GreaseMonkey!
Update (6/9): One quick note-- I've noticed that this little hack of mine has been called a "hack for Movable Type". However, while I personally use Movable Type, this is a hack for textareas in FireFox. Movable Type just happens to use textareas. It's worth noting, however, that WordPress uses textareas too. So does LiveJournal. So do most comment posting forms. This is bigger than a single blog package plugin-- that's the point. Whew. So it looks like the book is out of my hands now, having finished the final reviews. I have some more to say about that, but first I want to post the results of the last day or so of hacking I've done. I've been working on the stuff for the book so long that I just had to do something else (ie. not RSS or Atom) to help clear my head. But, I'm addicted to learning and building stuff. So, although I did relax a bit since the main effort of the book passed--that is, relax as normal people define it--I just can't stop making things. So, I had a beer, cracked open Dive Into GreaseMonkey, and decided to make good on that idea I wrote about last month. Not only that, but I had a little free time over lunch today, so I downloaded a trial of Snapz Pro X 2 to try my hand at a little screencasting, ala Jon Udell. I've got more things to say about all this, and my new found excitement for GreaseMonkey, but first I'll share the goods. If you want to risk running my horribly premature code on your machine, here's the script: magic_hcalendar.user.js If you'd like a preview of what it does, here's a movie: magic_hcalendar.mov And, just for the sake of completeness, here's a quick screen grab: [ ... 584 words ... ]