Dev @ MacBlogs.org
Last updated: March 11, 2010 11:02 PM

March 11, 2010

Scripting News

Still waiting for my HTTP-scanner

A picture named hippieVan.gifMany years ago I wrote about an idea for simplifying hardware devices that scan stuff producing digital images. They shouldn't require any drivers and they should work effortlessly. But the architecture they use for these devices is still rooted in the 1980s, when it should have and easily could have made the transition to HTTP.

I'm thinking about it again because I wasted a bunch of time on a Canon 700F scanner that, because of driver problems, just won't work with my Mac laptop. Now that I've got the problem I see that dozens of other users had it too (the problems didn't show up in the Amazon reviews, but do show up in various support forums).

After all these problems I'm reminded how scanners really should work. Thus:

1. It has a power cord and an Ethernet jack.

2. You plug the power cord into the wall and the Ethernet jack into your router.

3. A new device appears on your LAN called "Scanner."

4. Type http://scanner.loc/ into your browser and a simple configuration screen shows up. It lets you change the name of the device, turn security on, give it a username and password.

5. The device has about three buttons on it. The first turns the power off and on. The second creates a JPG image, the third creates a PDF.

How to use it: Lift the lid, put a document in. Close the lid. Press a button. Refresh the home page of the scanner and click the Docs link. A list of docs in reverse chronologic order appears. To view a doc, click its link. To download, right-click its name and choose Open or Save or whatever other options your browser allows.

No drivers, no fuss, no muss. Nothing to go wrong. It just works.™

Please, please -- someone make this device. Thank you.

March 11, 2010 04:39 PM | Bookmark with del.icio.us

Location-based content

I can't figure out how the new location-based Twitter works. Firefox can't figure out where I am. No surprise, My 13-inch MacBook Pro doesn't have GPS. Is there some place I can click on a map to say This Is Where I Am? Not at all obvious. Other people say they see it. Not on my machine.

Anyway, that doesn't mean we can't have fun with location stuff.

On Twitter, I posted a link to a Google Map asking if this was the location of the Fillmore East.

A picture named hippieVan.gifI got back an answer that it was close, but the supermarket next door is where the Fillmore was. I tweeted back that I had read somewhere that that was where the Ratner's was, next to the Fillmore, and if you go in there you can even see a giant R on the floor. Ratner's was a great Jewish dairy restaurant. Until I read the article (can't remember where it was) I only knew about the now-gone Ratner's on Delancey St. I once took a blonde shiksa VP-Marketing from California to Ratner's on Delancey, and the waiter yelled at me for bringing such a fine woman to such a lousy neighborhood. That was before it all got gentrified and yuppified.

Both Ratner's are gone now.

Anyway, the same guy dug up a picture of the old Fillmore just before a Crosby, Stills, Nash & Young concert. My theory was correct. It's the site of the bank.

I went to the Fillmore a few times. The most memorable concert was a Grateful Dead show with a surprise toward the end. A bunch of dirty hippies with long hair and beards come out and jam with the Dead. The music sounds weirdly familiar but hard to place. They were being deliberately misleading. Then all of a sudden a rock and roll standard -- Good Vibrations. It was the all-new dope-smoking Beach Boys! Oh man those were the days. I also saw the Incredible String Band there. Ten Years After.

We're getting ready to do an East Village blog for the NY Times. Going down memory lane is my way of getting ready.

PS: I read about Ratner's on Jeremiah's Vanishing New York, an intriguing blog with lots of great stories about the ever-changing and not-always-for-the-best New York Shitty. smile

March 11, 2010 02:58 AM | Bookmark with del.icio.us

March 10, 2010

Michael Tsai

Web Standards for E-books

Joe Clark (via Cathy Shive):

The electronic book is the latest example of how HTML continues to win out over competing, often nonstandardized, formats. E-books aren’t websites, but E-books are distributed electronically. Now the dominant E-book format is XHTML. Web standards take on a new flavor when rendering literature on the screen, and classic assumptions about typography (or “formatting”) have to be adjusted.

by Michael Tsai at March 10, 2010 03:55 PM | Bookmark with del.icio.us

Scripting News

RSS enclosures from 2004 and 2005

I was doing some research for a blog post and came across this folder of RSS enclosures from late 2004 and early-mid 2005.

These were the months when podcasting was beginning to take root.

I was doing Morning Coffee Notes. Adam Curry was doing Daily Source Code. Together, we were doing the Trade Secrets podcast.

Dave Slusher, Steve Gillmor, IT Conversations, Dawn and Drew, Tony Kahn at WGBH, Engadget.

It occurred to me that this slice of early podcasting might be worth preserving, so turned it into a torrent and have uploaded it

http://static.scripting.com/misc/earlyPodcasts.torrent

If you have questions or comments, you can post them here.

PS: Another reason I like it is this is a non-infringing use of BitTorrent. We need more of those to protect this excellent distributed technology.

March 10, 2010 02:36 PM | Bookmark with del.icio.us

Please fix WordPress for podcast feeds

Jay and I use WordPress to do the http://rebootnews.com/ site.

It's a mixed bag. On the pro side, we both know how to use WordPress, and because Jay writes the show notes and I do the tech stuff, it's a good tool to put between us.

But WordPress doesn't do podcast feeds well.

And that's being generous.

Here's how the UI works currently. You edit your post and link to an MP3 or a movie or an AVI or some other media object. The first one that WP encounters as it parses your text, it will supposedly turn into an enclosure. If you happen to link to two MP3s but the second is the enclosure, you're out of luck. And for some reason if you store the MP3 on Amazon S3, as we do, it usually doesn't even find the enclosure. But this is variable. Today they've hacked up our link to point to some server on wordpress.com, totally without our permission. What a mess. And even so there's no enclosure in our feed for this week's show (which btw I think is one of our best, one I hope everyone listens to).

For the last three episodes of our podcast, it's failed to add an enclosure element to the feed. As a result none of our listeners get the podcast on time, and it always takes some fussing by the WordPress tech people to get it working, and for all I know a bunch of people never hear the podcast. I suppose it depends on whether or not the client sees an item as read if the guid doesn't change but all of a sudden the item has an enclosure. Imho a proper podcast client would just watch the guid, and therefore would miss the enclosure. Regardless, it's simply unacceptable that WordPress work this way and that Automattic doesn't do something to fix it.

This is how we did it in Radio 8, in 2002, eight years ago.

Here's a screen shot.

A picture named radioForEnclosuresThumb.gif

Click the screen shot for the full effect.

See the red arrow pointing to the box called Enclosure? That's where you paste the link to the enclosure. Anyone no matter how technical they are not, could be taught to do that correctly.

We never had the problem WordPress is having. Granted a lot fewer people did podcasts then than now. Maybe. I'd argue that the way WordPress works now is killing the art of podcasting because it's so unpredictable and it's virtually got the market cornered. Regardless, I'm a paying customer, and I'd like to continue to use WordPress, but eventually I'm going to have to switch because it's killing our product.

Please Matt and company, fix this!

PS: I wish Wordpress.com was more hackable, if there was a way for me to patch our feed I could fix this without their help. Alas it's not something I can fix myself and I don't have any interest in running my own installation or fussing around with PHP etc.

March 10, 2010 01:01 PM | Bookmark with del.icio.us

A nice boost for rssCloud

A picture named santa.gifIt's been a while since we could announce new major support for rssCloud, but today is one of those big days we'll remember for a long time.

Status.net has now enabled rssCloud support in the RSS 2.0 feeds for all its users.

This means that identi.ca, the server operated by status.net, has the feature, as well as all other sites they operate. I assume it will be baked into a subsequent open source release (status.net is GPL software).

What does this mean? Well, when I post an update to my account on identi.ca, any cloud-aware aggregator will receive an update notification. River2, the aggregator I've built for Frontier (it runs in the OPML Editor) has support for rssCloud.

For a demo here's a screen shot of an update I posted to identi.ca. Note the time of the update. I immediately refreshed the home page of my River2 server, and there's the update. Elapsed time ==> 12 seconds. That's what real time means. smile

This is my feed. A source screen shot shows the <cloud> element.

It's also a holy grail for the idea of a distributed loosely-coupled network of Twitter-like services, linked together in real time using RSS. (What a mouthful!) It's very elegant and lightweight and it works today.

March 10, 2010 12:36 AM | Bookmark with del.icio.us

March 09, 2010

Michael Tsai

RealNetworks’s DVD Copying Settlement

Glenn Fleishman (via John Gruber):

The post-RealDVD world means that unless there’s a major change to the law surrounding copy protection, there will never be a legal way to perform legal acts of copying or shifting protected movies, music, and games.

by Michael Tsai at March 09, 2010 10:41 PM | Bookmark with del.icio.us

Software Patents

Lukas Mathis makes some good points:

This trade-off does not apply to many software patents. I only need to spend five minutes on Amazon’s site to figure out how one-click shopping works. There is nothing useful I can learn from reading the patent. Likewise, I only need to turn on an iPhone once to figure out how to unlock it. This means that Amazon or Apple don’t give up anything when they patent these ideas.

Jonathan Schwartz (via John Gruber):

My response was simple. “Steve, I was just watching your last presentation, and Keynote looks identical to Concurrence – do you own that IP?” Concurrence was a presentation product built by Lighthouse Design, a company I’d help to found and which Sun acquired in 1996. Lighthouse built applications for NeXTSTEP, the Unix based operating system whose core would become the foundation for all Mac products after Apple acquired NeXT in 1996.

by Michael Tsai at March 09, 2010 10:32 PM | Bookmark with del.icio.us

iPhone Developer Program License Agreement

The Elecronic Frontier Foundation has obtained and published the iPhone Developer Program License Agreement. Jonathan Rentzsch:

Diabolical. Apple’s developer tools license mandates use of their distribution channel.

by Michael Tsai at March 09, 2010 10:26 PM | Bookmark with del.icio.us

Appropriate iTunes Window Sizes

Jakob Nielsen (via Adam Engst):

As an aside, why is the iTunes window so large in my screenshot, when it contains only a few icons? Because the same application manages both the phone’s apps and its music collection. When you work with several hundred sound tracks, you need a big space. It’s not always good to try to support highly distinct tasks within a single GUI.

Nielsen’s main point is about button proximity and is well taken. However, I found his example about updating iPhone applications confusing because my understanding is that the “Check for Updates” button always applies to all applications, and that nothing much happens when you select individual applications in iTunes.

by Michael Tsai at March 09, 2010 10:23 PM | Bookmark with del.icio.us

Scripting News

18 interesting firsts

A picture named crumb.jpgI stumbled across this very interesting list of 18 firsts on the Internet. It's a good way to look at things. You could argue who invented what first, and you often get nowhere that way, because "invention" is such a poorly understood concept. Everyone's work builds on other people's. The guy who invented the car used a lot of other people's work to create something with four wheels and an engine. Did it have to have a steering wheel to be a car? We could argue about that, and that would change who the inventor was.

It may be more useful to say who had the first car. Who drove it, and where did they go?

And on the Internet, there's no doubt, for example that Tim Berners-Lee had the first website. Unless someone else says they did. (Haven't heard anyone say that, btw.)

I was glad to get credit for creating the first podcast.

Who wrote the first blog post? They give credit for that to Justin Hall (and mis-spell his name).

I wrote in the About page for weblogs.com that the first blog was also the first website. TBL's info.cern.ch was a reverse-chronologic list of new websites. That's how central to the web I think blogs are. But if that wasn't the first blog, let's see Hall's first post, and decide if that really was the first one.

A picture named typewriter.jpgWho had the first feed? That's going to be an interesting debate for sure. I can show you mine, it was first published on December 15, 1997. But what makes something a feed? Can you have a feed with no aggregator? Is it the aggregator that makes something a feed? If so, we'll have to figure out who wrote the first aggregator and when, and what feed(s) it read.

One of the criteria for being "first" is, imho -- Did your work lead to other people imitating you? That test says whether or not your work commercialized or popularized the concept. The implies "hitting the spot" where being the only one seems, somehow, less significant. That's one argument against Hall as the first blogger, but in favor of TBL. As far as I know there were no bloggers that formed a community in the aftermath of his Links from the Underground.

Pretty sure the first blogging community, in the sense that we think of blogging today, was formed around Scripting News. Most blogs today can trace their roots back to Scripting News, if you go back far enough. I suppose some communities are disjoint. Did LiveJournal spawn out of a blog that spawned out of something that came from Scripting? I have no idea. But I do know that most of the early bloggers were readers of this site, and many participated in the discussion group here. There was a website that traced the lineage, called BlogTree, and it verified that the root of the tree was Scripting News. This is something I'm proud of, I think justifiably.

One of the reasons I'm proud of it is that blogging was created without the lock-in you see in systems like Twitter, Facebook and though they'll argue for sure, Buzz. Even Posterous, Tumblr and Wordpress.com don't give you easy ways off their servers. Blogging started without the concept of a single server, so there was no place to get off of. The whole point was to be as distributed as the web itself, to give people independence, to let billions of websites bloom. This is such an obvious feature of blogs that people don't usually see it. But it's there, and it's hugely important.

There are a lot of very vocal people who work to remove credit rather than give it. I'm sure some of them will comment here. As long as their comments are respectful they will stand.

March 09, 2010 12:27 PM | Bookmark with del.icio.us

Promising competition

Several interesting half-developments in the competitive landscape from non-dominant tech entities. I believe in supporting the second and third tier companies and startups, when they offer alternatives to the BigCo's. I like the little guys because they have an incentive to listen to and please users, without the strategy taxes almost always imposed by the big guys.

A picture named loverss.jpgFirst, there is Mark Fletcher's SnapGroups. It's basically a threaded discussion group with a modern browser-based UI. It's perhaps a framework that something like FriendFeed can develop from, although it's just a framework. There are no feeds in either direction -- you can't subscribe to feeds from within SnapGroups, and it doesn't generate feeds, so I can't subscribe to stuff from SnapGroups in other RSS-aware environments. But it does look nice, and Mark is the author of Bloglines, so we know he understands feeds. These days, you can't even get into the game without basic feed support. I'd of course also like to see him support rssCloud so the connections in and out can be real-time.

Second, I just got an email from Zach Copley at Status.Net saying their software, which is an open source Twitter workalike, now supports rssCloud. That is very welcome news. I tested it with River2, and while the initial handshake worked, I'm not getting the realtime updates. I expect we'll figure out the glitch quickly and then we'll have another realtime connection. What can we do with it? We'll have to explore that. Meanwhile, it's nice to have a reason to get reacquainted with Identi.ca, which is the mother ship of Status.Net. And thanks to Zach for sticking with it.

Finally, Marshall Kirkpatrick, who writes for ReadWriteWeb, says the big players in his market, TechCrunch, Mashable, AllThingsDigital, don't pick up stories once RWW has covered them. This gives vendors an incentive to give exclusives to the big pubs, assuming they want coverage from them. Vendors who buy that are making a mistake. The news will find the people who need to know it, more now than ever. Pick a reporter who you think will understand your product and give them enough time. That's one approach, if you think you can get the attention. Otherwise, just write your own blog post, and send the links around to all the reporters, and hope they find it interesting. I know this isn't the standard advice, but the gatekeepers figure you need them a lot more than they need you, and act accordingly. It's hard to get insightful reporting from them, and I think the readers have figured that out. All pubs should follow this simple rule: write up whatever you find interesting, whenever you discover it, no matter who has already written it. Anyone who plays it differently will eventually pay a penalty. And these days "eventually" is a lot sooner than it used to be.

Remember: "People come back to places that send them away."

March 09, 2010 09:46 AM | Bookmark with del.icio.us

Great photo of Jobs at Oscars

Zadi Diaz got this great picture of Steve Jobs on the red carpet at the Oscars last night.

A picture named jobsTux.jpg

Click the thumb above for the full effect.

March 09, 2010 02:10 AM | Bookmark with del.icio.us

March 08, 2010

Scripting News

This week's RBTN

This week's Rebooting The News podcast, recorded in the studio at NYU, was particularly good. It starts off a little slowly, but picks up speed.

http://mp3.morningcoffeenotes.com/reboot10Mar08.mp3

March 08, 2010 09:10 PM | Bookmark with del.icio.us

March 06, 2010

Scripting News

Best Picture 2009?

Tomorrow night they announce the winners of the Academy Awards, and for the first time in a long time, I don't really think there is a movie up to being called Best Picture.

The only one I haven't seen is Precious. So it might be the exception.

Of all the nominated pictures I have seen, if I had to choose one, I'd go for Up In The Air. Great acting, interesting plot, well done all around. Second choice: An Education.

Each of the others has something to recommend it, but none of them put enough of the pieces together to qualify as a Best Picture.

Curious what other people think.

March 06, 2010 10:57 PM | Bookmark with del.icio.us

Jeff Jarvis and BloggerCon

A picture named umbrella.gifI just watched the live webcast of two friends, Jay Rosen and Jeff Jarvis, give talks at TEDxNYED. They both did well. At the end of Jeff's talk he told a story about about a big moment in our friendship. Of course he tells it from his point of view. I'm sure they'll release a video of the talk so you can hear it. This is the story from my point of view.

I am an evangelist. I think I see how things are going, then I want to show other people, so we can get there faster. Sometimes if I have to, to get the idea going, I write some software, or create a format. That was my role in blogging, RSS and podcasting. And the unconference format that Jeff was describing in his talk.

I wrote that format up here a few days ago, because we're doing it again at NYU, but that piece was just an edit of a document that I wrote before the first BloggerCon. I sent links to all the discussion leaders. I talked with each of them before the conference. I knew the idea would be hard to get, because we all had a lifetime of training that said that conferences were mostly one-way affairs. I wanted to try something different, a conference where there were no speakers, no panels, no audience. I wanted the good stuff, the hallway conversations, to be drawn back into the formal conference.

Even though we prepared, and knew the format worked (we were running the Berkman Thursday meetings with it) most of the discussion leaders didn't get it at first. When I walked into the room where Jarvis was preparing to lead a discussion at BloggerCon, I saw that he had put a set of chairs in front of the room, and people were sitting in the chairs. It was an awkward fit, there wasn't enough room in front, but despite all the preparation, there was the old format trying to boot up!

So I asked the people sitting in the chairs to rejoin the rest of the people in the classroom. Then I said to Jarvis, "This is your panel..." -- and I opened my arms to embrace the whole room. From this point our stories are in total agreement. God you could almost see the light bulb go on over Jarvis's head. Immediately he started leading the discussion, and to this day he is one of the best practitioners of BloggerCon format, and is evangelizing it too.

This blog post is an instance of the philosophy that says that everyone's point of view is valid and should be heard. In the old world, the speaker's version would be the only one to get out there. Or the professor's or the reporter's. But in the new world, each of us have a platform to tell our story. That same principle can be applied to conferences, and if it's done well, and Jarvis does it well, with spectacular results.

March 06, 2010 07:48 PM | Bookmark with del.icio.us

March 05, 2010

Scripting News

Be wary of Google patents

A picture named elephant.gifGoogle has been pitching its use of open standards as a way to insure yourself against Google going away. That's much appreciated, no sarcasm. All companies should plan for their users' data surviving them. But my concern is what if Google doesn't go away. This is a company that's at least heavily influenced by lawyers, if not run by them. They aggressively patent. Personally, I'd rather not build a new ecosystem out of Google patents.

If you have a choice of using an already-existing format or protocol that works just as well as the new one Google is trying to replace it with, the rest of us, who don't patent, are better served if we all use the older one, including Google. That way we know that we won't be forced out of the market at some future date, when the cost of staying in is paying huge legal expenses, and royalties, for "technology" we could have had for free.

Unless Google also adds a disclaimer of all patents on all the new stuff, I'd be very careful about which ones we adopt.

March 05, 2010 11:59 PM | Bookmark with del.icio.us

NSLog

Who Still Uses SpamArrest?

Seriously? Who uses SpamArrest anymore? How is that thing still around?

SpamArrest completely shifts the burden of spam onto legitimate people. I wrote to a company today with a great proposal, and fortunately saw the SpamArrest alert in my spam folder (oh, the irony).

I'm sure it's reasonably effective at blocking spam, but at what expense? Missed emails from real people? The unprofessional message you send when you force someone to click a link and enter a captcha?


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at March 05, 2010 11:08 PM | Bookmark with del.icio.us

Scripting News

Alice in Wonderland

I am a big huge fan of Tim Burton movies.

He's right up there with Quentin Taratino and Martin Scorcese. When one of these directors ships a movie, I'm often the first person in line on opening day.

So this morning I took off and went to the 11AM showing of the newly released today Alice in Wonderland, at 850 Broadway.

First a caveat. Don't read this if you haven't already seen it. No matter what anyone said about the movie I would have seen it, even though I did read the NY Times review before going.

1. The Times review is right. The movie is pointless, lifeless.

2. It's not even remotely a Tim Burton movie.

3. It's almost as if as they were nearing completion someone said "Hey wait a minute this doesn't have any Tim Burton stuff in it," so they quickly added a bit of buffoonery, but it is totally embarassing.

A picture named beetlejuice.jpg4. Hollywood has a formula that it can't seem to escape. A hero forms a posse of colorful allies with big hearts who are in love with the hero. There's an evil adversary and she has a posse of despicable, frightening and evil allies. The movie is a buildup to the final showdown. The two do battle. The hero wins. The adversary is humilated and most of his posse is killed. There's a closing scene where everyone agrees life is great and the credits roll. It's Star Wars meets Harry Potter, Avatar meets Indiana Jones. Every movie with a budget fits this template, with the exception of parts of recent Pixar movies (they always include the basic elements but it doesn't always completely dominate the plot). Once you realize this is what you're watching, unless you really get off on special effects, you might as well walk out.

5. A few people walked out. I stayed to the end, but I started checking email on my Droid during the movie.

6. Zero suspension of disbelief. I was always thinking "I'm in a movie theater watching a dumb movie." The plot never sucked me in.

7. Next time let Tim Burton do a Tim Burton movie. Break new ground. Big Fish was great. At least the parts that sucked represent risks taken. This movie took no chances, it was boring. I want great acting, and stuff to think about and to laugh about. I like dark comedy. Sweeney Todd and Alice in Wonderland were great titles, but neither produced an interesting Tim Burton movie.

8. If you like Tim Burton, go see it anyway. The next movie you see can only be an improvement.

9. Probably because it's a Disney movie, the characters lacked the usual Burton depravity, seen in Beetlejuice, Nightmare Before Christmas or Corpse Bride. The ghoulishness in Burtonia can be very friendly, like the zombies in Corpse Bride. Or musical like Oogie Boogie in Nightmare. Or humorous like the cigarette-smoking angel of death in Beetlejuice. Or the poor misunderstood Frankenstein -- Edward Scissorhands, who was only trying to do good, yet was run off by the villagers. Other reviewers say that Burton movies lack plot direction, but I disagree. The plots don't always end happily, but they often end with a song, nonetheless. I doubt if Disney would let the film be anything but colorful, but even children like a little depravity as long as it's not too dark.

10. Wait a minute -- I don't think there were any songs in Alice! WTF.

March 05, 2010 08:24 PM | Bookmark with del.icio.us

Real-time search

A picture named elmersGlueAll.jpgKara Swisher reports on a study that shows people are ignoring "real time" search results. This matches with my experience.

The reason? It's impossible to convey much information in 140 characters. So when a search hits a tweet you get at most a soundbite, telling you something you probably already knew. When you search you're looking for information you don't have but want.

I have a collection of Google Alerts that report once a day or immediately, via email, telling me about occurrences of my name, products I've made, other topics I'm interested in. These used to be pretty useful until they started including tweets in the body of stuff they search. Now the alerts are mostly useless. So in this case, adding real-time stuff actually subtracts value.

If Twitter wants to make money by inserting ads into search results, and all indications are that they do, they should seriously consider relaxing the 140-character limit, so tweets can carry information worth searching for.

Update: Liz Gannes has the report too.

Josh Young adds: "Yes, real-time results in search suck because the feed is what's important, not the individual tweet."

March 05, 2010 07:42 PM | Bookmark with del.icio.us

NSLog

Sick of Spaces/Keyboard Bug

Yesterday and today, for some reason, have been horrible days for my computer regarding the Spaces/keyboard-go-bye-bye bug. Virtually every time I switch spaces I have to quit my Dock.

I've quit TypeIt4Me, too - it's not that. I can reproduce the bug when TypeIt4Me is not running. Plus, version 5 is an application instead of a preference pane with a daemon (for the menu), so it's a bit "less involved" with the system as it is.

So annoying.

If 10.6.3 did nothing but fix this bug and slow down my computer 25%, I doubt I'd last three more dock re-launches before I was upgrading my OS.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at March 05, 2010 03:11 AM | Bookmark with del.icio.us

March 04, 2010

Scripting News

Renewed Evangelism: BloggerCon Format

A picture named classroom.jpgAsk anyone who was at BloggerCon I and BloggerCon II to explain the format that evolved there, and you're likely to see their eyes light up, as they wave their hands, but until you've experienced it, they'll just be words. I hope to renew the evangelism for this format while I'm at NYU, and have access to the meeting facilities of the university.

The format is not far from the Socratic classroom, a discussion leader who pulls the interesting bits from the minds of the people in the room, with no sense of one person being a speaker and another being audience. Everyone is both a source and destination of thought.

The format solves the problems of the typical professional conference, the problem of droning self-important speakers who bore the audience and force the good stuff out into the hallway. The first goal of the format is to suck the good stuff back into the room. Everything about the format is designed to eliminate the boring, self-serving droning. But to do it respectfully. We're not running the Gong Show.

Fred Wilson wrote a piece this morning on Panels. He went on to say what he doesn't like about conferences. I am so sure that Fred would love the BloggerCon format. It was designed for people like Fred.

The format is outlined on the BloggerCon site. But I'm going to reproduce that outline here, and edit it and bring it up to date.

1. We don't have speakers, slide shows or panels.

2. No Powerpoints.

3. Every room has a discussion leader, a reporter who is creating a story with quotes from the people in the room.

4. The discussion leader is also the editor, so if he or she feels that a point has been made they must move on to the next point quickly. No droning, no filibusters, no repeating an idea over and over.

5. The discussion leader can also call on people, so stay awake, you might be the next person to speak! smile

6. Think of the conference as if it were a weblog. At the beginning of each session, the leader talks between five and fifteen minutes to introduce the idea and some of the people in the room. Then she'll point to someone else. She may ask a couple of questions to get them going, then she'll point to someone else, then someone else, then make a comment, ask a question, etc. Each person talks for two to three minutes. Long enough to make a point.

7. The attention is focused on the discussion leader. You can ask questions, you don't necessarily have to wait to be called on, use your judgment. But ask the question of the Discussion Leader, and let him find the answer for you in the room. Experience has shown that when others in the room assume the moderation function, the ground rules break down, and droning happens, and people move into the hallway.

8. The leader's job is to keep it moving. Sometimes this means cutting people off. Don't take it personally if it happens to you, any more than you would if a reporter only quoted part of what you said in the article. Life's not perfectly fair. You don't have a right to be heard. Sorry. (But you do have a right to get new ideas, meet new people, have new experiences.)

9. Since every person in a session is considered an equal participant, everyone should prepare at least a little. Think about the subject, read the comments on the conference website. Follow weblogs from other people who are paticipating. Think about what you want to get out of the session, and what questions you wish to raise, and what information or points of view you'd like to get from the session.

10. This is an unusual conference in that almost everyone participating writes publicly. So we assume that everyone present is a journalist. Every badge is a press badge.

11. All conversations, whether to the entire room or one-to-one, unless otherwise stated, clearly and up front, are on the record and for attribution. You do not need to ask permission to quote something you hear at BloggerCon. Of course you may ask for permission to quote, and you may choose not to quote things you hear.

12. Where I come from, the technology world, most conferences are centered around the vendors. This is not like those conferences. Here, vendors are welcome, and we hope they will help by sponsoring a party, dinner or brunch, but they participate mainly by listening.

13. Most of the people who are talking are users. In my opinion, these are the revolutionaries. Vendors make a living by creating tools that these people use to change the world. So much attention is focused on technology, too much imho. At this conference we turn it around and focus on what people are doing with the technology. So if you hear someone say it's about the technology, expect me to challenge if I'm present. If not, stand up and say "That's not correct."

14. If they say the technology is too complicated for a user to understand, ask them why, and if they could simplify it so we can understand. And if not, why should we use it? Perhaps a new user-centered philosophy will emerge.

15. Sometimes conferences bog down in meta-discussions, discussions about what it's okay to discuss. I want to try to head some of that off in advance by stating some assumptions, and asking people who want to discuss these things to either discuss them here on the Web beforehand, or to find another venue to discuss them.

16. Weblogs are journalism. Not all weblogs, and not all the time. People have said weblogs aren't journalism, and that seems foolish, as strange as saying telephones aren't journalism. It's kind of a moot question. Weblogs can be used for journalism, or not. When people say they're not journalism, I think they haven't thought it through well enough.

17. "What is a weblog" is an interesting question. I've heard people say it's not a good question. At BloggerCon if you have an idea that requires you to say or ask what a weblog is, please go ahead. It's totally on-topic. I would consider the conference a success if that's the only thing we figured out. (Chances are we won't, btw.)

18. No commercials. This is a user's conference, it's non-commercial, you may not promote products. If a discussion naturally turns to products, it's okay to talk about them, but it's probably not okay to talk about your product, unless the discussion leader asks you to. No matter what you must ask for permission, and don't be surprised if the answer is no. There are good reasons for this, if one person talks about his or her product, then their competitors will feel they are entitled to, and pretty soon the user's needs are drowned out by the needs of the vendors. The point of this conference is to focus on users.

19. You are welcome to bring your own recording equipment, cameras are allowed, basically the rules allow Grateful Dead/Phish style recording. Bring your microphone or camera and recording device, and record it and broadcast it any way you like. Be innovative, but please don't interfere with the sessions.

March 04, 2010 04:23 PM | Bookmark with del.icio.us

Google and RSS

A picture named rsspizza.jpgThe first years of Google's existence and the first years of blogging coincide. Google started in 1998, shortly after I started blogging (depending on what you consider the start, which is always a subject of debate). Then blogging begat RSS, and then OPML and podcasting -- and so on. And blogs became influential in Google's ranking algorithms, and we bloggers loved Google, and we gushed over them here in the one and only year we gave awards on Scripting News.

They were a small company, very excited. Great food in the cafeteria, and our meetings were always interesting, high energy affairs. Coming out of those meetings were a list of ideas that I shared with them and the readers of this blog.

The most important idea was this -- Google could pay special attention to RSS and OPML files when they encountered them in their indexing of the web. They contained rich data which could be used for two purposes:

1. To make searches more current, what I called just-in-time, what people are calling realtime now. This has always been a big deal for me. I wanted search to be part of news and that means new -- and the faster the indexing happens, the more useful it is as news.

2. Use OPML to allow anyone to create Yahoo-like directories. Open that process up, let a billion flowers bloom. I suspected there was a lot that could happen with organizing information on the web. The right place to present it, I felt, was in Google, not in a separate directory structure. And with users actively relating topics on the web, that long-term probably could help search engines make sense of the information. Another, more deliberate, form of linking.

Now, in 2010, Google is going to start reading feeds, but if I understand correctly, they're going to ignore the billions of RSS feeds out there, and ask everyone to convert to Atom to get more currency in search. You can imagine that I don't like this. I wouldn't like it even if I didn't play a big role in getting those billions of feeds out there. I wouldn't like because I have thousands of RSS feeds on my servers, and believe me -- they are not changing to Atom anytime in the next few decades. I don't think I'm alone in that.

Now a little preaching. Big companies always feel they can push the rest of us around, but I gotta say -- I've never seen it work. Usually the lesson they learn is that they would be better off if they would just Go With The Flow, and let the users guide them. Nothing wrong with reading Atom feeds, but to ignore RSS, well guys that's just plain dumb.

Give up the fight Google. You don't have to acknowlege me, but RSS -- that's a force of nature. That's why I did rssCloud -- for you -- to give you the impetus to do what you should have done naturally, support the formats that the users have chosen. It's not too late to get our relationship back on track. I'm not your enemy, I'm just one guy in an apartment in the West Village writing on my blog. I'm not Apple, suing you for patent infringement, or whoever else you are worried about. Worrying about me is a waste of energy.

March 04, 2010 03:17 PM | Bookmark with del.icio.us

Last night's SoHo party

A picture named glass.jpgLast night Nick Denton and Jonathan Glick co-hosted a party at Nick's fabulous SoHo apartment to welcome me back to NY.

There were about 100 people from media, some entrepreneurs, academics, financiers, lawyers, writers. Some very well dressed, and some like me, in more comfortable clothes. It was unmistakably NY, as Boston has its signature, as does Silicon Valley. Columbia and NYU aren't Harvard and MIT, or Stanford and Berkeley. This is the big city, but tech here isn't yet so cut-throat, media still is a much larger business. I found it was more of a party and not so much a chance to share business models as California tech parties.

Thanks! I had a lot of fun last night, and it gave me a good warm feeling about what we can get done in the coming months and years. I'll have more about that in the next piece.

PS: One surprise was how many of the people read this blog, and were prepared to discuss the post on local business models I had written about an hour before the party. I'm always surprised by that. I don't get a lot of mail, and I know the numbers aren't even remotely in the same league as the big blogs. But when it comes to interesting people, well I guess it makes sense that I'm biased about that, but my readers are the best. smile

March 04, 2010 02:47 PM | Bookmark with del.icio.us

Michael Tsai

What Your iPhone Apps Know About You

Andy Greenberg (via Nicolas Seriot):

There’s no doubt, Shields says, that phones are still much safer from spying software than PCs, which allow software to be installed from any source, often invisibly, as in the case of “drive-by downloads” by infected Web pages or booby-trapped e-mail attachments. But the wide privileges given to phone apps still create exploitable vulnerabilities in devices, says Shields.

I’m more worried about software from the App Store. I don’t believe Apple’s screening process can offer significant protection, and the phone is so locked down that users can’t easily audit what the apps are doing.

by Michael Tsai at March 04, 2010 02:42 AM | Bookmark with del.icio.us

March 03, 2010

NSLog

Digital Card Readers

Do you own and use a digital card reader?
View Results

I can't fathom being without one. I have a Firewire 800 one for my CompactFlash cards (5D, 5D Mark II) and a USB 2.0 one for my SD cards.

Why anyone would plug their cameras directly in to their computer is beyond me. Maybe on occasion for a portable I could see it, but for a desktop? Buy a card reader, plug it in, and leave it there.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at March 03, 2010 11:08 PM | Bookmark with del.icio.us

Scripting News

Where is the money in local blogging?

A picture named pizza.jpgI'm sitting in a class at NYU listening to a discussion about local blogging and the NY Times. Rather than speak up to the room, I thought I'd just write a blog post that explains where I think the money is in local.

First, where I don't think it is -- getting ad dollars from the local pizza parlor or stationery store. There may be nickels and dimes there, but the mega-dollars come from slicing the pie differently from the geographic way people are slicing local news up now.

Instead, pick the businesses that generate billions of dollars in the local economy that are information-based, where the information currently being supplied is inadequate. That's not restaurants and entertainment.

When I started looking for an apartment in Manhattan, one of my requirements was FIOS. I naively assumed I'd be able to get it because my mother had it in Queens. Manhattan is a bigger, more lucrative market than Queens, so of course Verizon has it covered. Turns out, for a variety of reasons, it's not true. There's almost no FIOS in Manhattan. But if you went to the Verizon site you'd never find that out unless you punched in every address in Manhattan and found out that very few return positive.

Time-Warner Internet is not bad, in some parts of the city, and awful in others. If you want great Internet service, where should you be looking? The only way to find out is word-of-mouth.

Business on the Internet is driven by finding places where dollars are spent, where people need lots of good information to make a decision they're going to spend a lot of money on. Become the place where people go for that information and then sell space on your site to businesses that sell products and services in that space.

This is local. But it's local on a wide scale. This is where I think the money is.

March 03, 2010 10:42 PM | Bookmark with del.icio.us

WordPress supports PubSubHubBub

WordPress announced today that they've added support for PubSubHubBub to their product.

This is great news. More realtime support is a good thing.

I'm sure some people will use this moment as an opportunity to say bad things about RSS, that's just the way it goes. I've always encouraged people to see more realtime support as a just plain old good thing.

I would love to see Google support rssCloud in Google Reader and their other products. It would show that they support all ways of doing this stuff.

March 03, 2010 05:02 PM | Bookmark with del.icio.us

What is Apple up to?

This is a continuation of the Big Change in the Tech World thread, February 25.

We may look back at these as the Good Old Days before the tech guys clamped down and closed off all the loopholes that allowed us to create and share our own content, as well as program our own use of the content created by the entertainment business.

The norm in entertainment, the system I grew up in -- the entertainment industry controlled what you watched and listened to, and when, where, and how much you paid for it. You could make your own special mix tapes, but that was hard and most people didn't do it, so they looked the other way. Napster was a big breakthrough. All of a sudden all the music was there for the asking, whenever you wanted.

People were talking about music in supermarkets and on airplanes. We all bought iPods.

Charles Mann called it the "heavenly jukebox." I found I could listen to a Cat Stevens song about fathers as many times as I wanted. "I don't just want to listen to music, I want to study it, and let it really sink in, soak it up, and then go on. No medium before the Internet made this so easy."

A picture named twoTerabyte.jpgI had a phone talk with John Gruber from Daring Fireball the other day, which I requested, after reading a piece he wrote suggesting that Apple's closing of the Flash hole in the iPhone/iPad was a way to enforce "web standards." I said it's a lot simpler and more insidious. Apple doesn't care about web standards, nor do any other large companies. That term, and "open" are just fig leaves that cover up what they're reallly doing. Instead of opening things up, they're doing just the opposite. Closing as many holes as they can as quickly as they can. Because they're doing what the media business wants to but hasn't been able to do, yet -- control and monetize user programming of content. Apple and many (if not all) of the tech companies want to get the control back from the users. Of course they can't say this, and they won't. But actions speak louder than words.

Then I read this article in CNET that says Apple wants to cut a deal with the entertainment industry to store all their content on Apple servers. There's a chilling comment in the middle of the story saying they want to get rid of hard disks. That, my friends, is Hollywood's dream. The real culprit, the real cause of their economic problems isn't the Internet, it isn't the wires that connect computers. It's the under-$100 terabyte hard drive. With a terabyte you can store hundreds of hours of movies and TV shows. That enables you to do your own programming.

To Hollywood, a perfect world would be one without hard disks.

To Apple, a perfect world is one where every moment a user is reading, listening or watching causes cash to flow back to Apple.

March 03, 2010 04:01 PM | Bookmark with del.icio.us

Michael Tsai

Apple Suing HTC

Nilay Patel (via John Gruber) has a breakdown of the patents in question. Wil Shipley to Steve Jobs:

But when you sue someone for doing something you do yourself, you become one of the bad guys. Can you name a company you admire that spends its time enforcing patents, instead of innovating?

Update: Great post from John Gruber.

by Michael Tsai at March 03, 2010 02:47 PM | Bookmark with del.icio.us

Visio 2010 and Transmit

Neven Mrgan:

The new version of Microsoft Visio—which, in case you’re not cursed with a sucky office job, is a very popular diagramming application—includes a rip-off of Panic’s Transmit truck.

A high-profile addition to the Rip-Off Express.

by Michael Tsai at March 03, 2010 02:39 PM | Bookmark with del.icio.us

March 02, 2010

NSLog

Teaching in the Open

This relates to a conversation I've had with Dave Wedzik a few times now, and we both agree and always reach the same conclusion.

In the winter, Dave's been forced to teach at the Golf Dome here in Erie, PA. I've watched a few of his lessons, and I've seen a few lessons given by some of the other local area instructors.

Virtually all of the other instructors go to the far end of the range to the right, where they have "teaching stations" set up. There are only two differences between a teaching station and the other hitting stations: they're a bit wider (ostensibly so the instructor can stand near the student and watch them make swings) and they have a curtain you can pull to prevent nearby golfers from listening in or watching the lesson.

Dave likes to teach in the open, and if I were teaching anyone something like the golf swing, I would too. If you believe in yourself, why wouldn't you want to teach in the open? It's the cheapest (free) form of advertising possible! It's "hey, look at me, I'm an instructor, and not only am I good enough that this guy here has hired me, I'm confident enough to do it right out in the open!"Contrast this to "the man behind the curtain." What's he saying to his students? Sure, maybe he's worried that someone will overhear something he says and he'll improve, but that's stupid - nobody's going to overhear a tip for someone else and become a PGA Tour level golfer. If the tip even works for them - people don't have the same flaws, after all - it'll just be a crumb that whets their appetite. They'll want to come to you for more of the cake.

When possible, teach in the open.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at March 02, 2010 09:22 PM | Bookmark with del.icio.us

Michael Tsai

What I Miss From Java

Dave Dribin:

Before settling in on Objective-C, I was a Java guy for about six years or so. Overall, I much, much prefer coding in Objective-C to Java, and have no intentions of going back to Java. But that doesn’t mean there’s some things I miss. Here’s a quick list…

A good list, although I’ve come to like NSError.

by Michael Tsai at March 02, 2010 04:00 PM | Bookmark with del.icio.us

March 01, 2010

NSLog

Flummox the Plane

Toby Ziegler: "We're flying in a Lockheed Eagle Series L-1011. Came off the line twenty months ago. Carries a Sim-5 transponder tracking system, and you're telling me I can still flummox this thing with something I bought at Radio Shack?"

Everyone knows that "rule" is just to prevent people from yapping on their cell phones the entire time they're in the air, right? And the "no electronic devices" is so you'll pay at least a little attention to the stewardesses (or whatever they're called these days). Right?


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at March 01, 2010 03:58 PM | Bookmark with del.icio.us

February 28, 2010

NSLog

Crosby 2, Ovechkin 0 and Olympic Hockey

The score is now Crosby 2, Ovechkin 0.

And I'm sorry, but hockey involves more than just scoring goals and racking up points.

But I digress. Despite the title, I wanted to talk about the USA vs. Canada game. I think that, if the U.S. was to lose, this is the only acceptable way (for me, as a Pens fan) to lose: by having Sidney Crosby effectively do the last athletic thing in the Olympics, period. The guy's had the weight of the world (well, of Canada anyway) on his shoulders for a decade now, and he keeps delivering.

No doubt the NHL will find a way to screw it up. They've got to have more interest in hockey now than ever - even non-hockey fans I know were watching and the game was GREAT - but part of that starts with getting Versus back on DirecTV so millions of people don't miss the goddamn playoffs.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at February 28, 2010 08:59 PM | Bookmark with del.icio.us

Redeyes and Zzzzzzzzzz

Dave's voice is gone. He can barely whisper. His sinuses have been dripping into his throat for days now and it's not good. At least he's not actually sick.

Our 1:30am flight left on time. So did the other flights. I managed to grab about 2½ hours of sleep on the first leg of the flight, but stayed awake for the rest. Yippee. Fortunately, 2/3 of the flights (the two legs with three seats per side) weren't very full, so Dave and I were able to sit with an empty seat between us. That does wonders for your ability to get comfortable.

I returned home to a driveway we couldn't drive into due to all of the snow. Two feet of nicely packed snow took half a gallon of gas and 90 minutes of snowblowing (with a 12 HP snowblower that usually cleans up in 10 minutes). Just what I wanted to come home to after spending three glorious days in the sun! :-)

I'm going to crash now. What a relaxing - and yet invigorating - couple of days.

P.S. I could go for about 50 of those P.F. Chang's pork rolls right about now.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at February 28, 2010 03:43 AM | Bookmark with del.icio.us

February 27, 2010

NSLog

Friday in Scottsdale

We're taking the redeye later tonight (1:30am) so we're staying up late. I'm writing this from a Barnes & Noble near Kierland in Scottsdale. I picked up a copy of The Three Pillars of Zen: Teaching, Practice, and Enlightenment thanks to a comment on this post. Thanks Brad (or Brad's friend).

Today was a bit of a fluky day. I wanted to play golf, but since I'm not in control of the rental car's keys, what I wanted was irrelevant. ;-)

At any rate, since we figured we had all day and just wanted to practice, we lollygagged around a bit in the morning. We drove around, we ate breakfast, we settled a bill at Grayhawk, we had lunch, and we finally showed up at Troon North at 1:30 to hit balls. Problem: they closed the range at 2:15 to pick it. D'oh.So we drove to another course. A demo day had shut down the range for the day. So we had a chipping contest… but the fact remains that we had all day to hit balls, and we were only able to get 45 minutes in.

After chipping, Charlie, Dave, and I spent three hours at a Morton's steakhouse. Yum. Scottsdale gets chilly in the evenings, but the steak, a toasted almond, and the outdoor heaters they had did wonders to keep us warm. We had good conversation as Dave and I killed time waiting for the drive to the airport.

Barnes & Noble, a little perusal of the golf magazines (Brady Riggs is a friggin' moron), and we were off.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at February 27, 2010 03:38 AM | Bookmark with del.icio.us

Inessential

Core Data post follow-up notes

(This is a follow-up to the previous post.)

I like Wolf’s NSManagedObjectOperation idea.

I’m checking out Aaron Hillegass’s BNRPersistence. I ran across Tokyo Cabinet a couple months ago when building mutt, and it sounded pretty cool, though I didn’t try it any projects.

Justin asked me if it was worth doing this optimization for the extreme case — 10,000 unread items on a first-generation iPod Touch. It’s not always worth optimizing for extreme cases, not at the expense of other things. But there are several reasons why it was right this time:

  • High unread-items-count isn’t the only cause of performance degradation.

  • Lots of people still have original iPhones and iPods Touch.

  • The performance difference is significant even in a more typical case, say 1,000 unread on an iPhone 3GS.

  • The performance difference allows me to do other things that people are asking for.

Update 5:45 pm: I just looked, and the Tokyo Cabinet license is LGPL. Even with the leading L that means I can’t use it, because I don’t want to be a legal test case. (If it came pre-installed on Macs and iPhones, I would feel okay about using it.)

February 27, 2010 01:30 AM | Bookmark with del.icio.us

February 26, 2010

Inessential

On switching away from Core Data

A lot of the work I’ve been doing the last several months is optimizing performance for NetNewsWire for iPhone. The changes haven’t shipped yet, because I’m not quite finished. But one part of this might be interesting to other developers, so I figured I’d write it up.

I optimized as much as I could, spent tons of time in Shark, went all multi-threaded with Core Data, switched away from my own queuing system to NSOperationQueue, optimized the XML parsing, etc. But performance and memory use on my first-generation iPod Touch (my development test device) was still not nearly good enough with a big unread count (of around 10,000 items).

At that point, having done everything else, the remaining issue was clearly Core Data. So I tried more things, re-read everything I could about Core Data performance (for the nth time), ran experiments, spent tons more time in Shark. Trying to get it good. No go.

Finally I realized I had to switch away from Core Data and use SQLite more directly. Not completely directly — I use FMDB, a lightweight Objective-C interface that works on Macs and iPhones. Gus wrote it. It’s good.

That meant a bunch more work — it’s not like Core Data and FMDB are similar or meant to be similar. So it was no drop-in replacement. Not intended to be.

But why?

I bet Core Data is the right way to go 95% of the time. Or more. It’s easy to work with. It’s fast (in most cases). It has schema upgrade tools.

The important thing to know, though, is that it’s not a database. It’s an object graph and persistence manager. (Check out the post on Cocoa with Love that goes into detail.)

But surely you’re using objects

The difference between Core Data and a database was never that clear to me — until I found concrete examples.

After all, under the hood, in the code, every news item in a feed is an object. Why wouldn’t I use an object persistence framework for that? They’re objects, and I want to persist them. Duh. Seems like I should use Core Data.

So here are some concrete examples where direct database access made more sense than using Core Data.

1. Marking lots of news items as read or unread

The app gets from the Google Reader API a big list of item IDs that have been marked read or unread.

In Core Data, I had to loop through the list, change the status for each individual item. The list could be up to 10,000 items long. Not a good idea.

This is a very database-y operation. With one query the app can set the status for a whole bunch of items at once, without having to instantiate them as objects: update newsItems set read = 1 where...

2. Deleting lots of items

Similar to #1 above — from time to time the app deletes old, read, non-starred items from storage. We can’t just let storage grow forever, especially not on an iPhone or iPod Touch.

With Core Data, I ran a query to figure out what items to delete. Then ran a loop that deleted them. Expensive.

With SQLite access, I just did a sinqle query: delete from newsItems where...

3. Dealing with unique IDs from outside system

Core Data does uniquing, but that’s not what this is. The news items have an assigned unique ID that comes from another database.

When refreshing feeds, it’s common to see news items that the app has seen before. They might have been downloaded previously or they might have changed. (We try to avoid the former, of course.)

This means that for each item in a feed, before it’s saved, the app first has to get the existing news item. This is slow. (I tried various techniques: pre-fetching, fetching as needed, fetching only IDs of existing items for a feed, storing existing IDs in a set or dictionary, etc. Nothing helped much. Usually the solution was worse than the original problem.)

Because many thousands of items may come in during a refresh session, and every item has to be checked to see if it exists already, this was a huge performance hit. Better not to do the fetch, right?

With more-direct access, I could just do a insert or replace into newsItems... and it would add the item or replace the existing item. Fast.

4. Testing for the existence of an item

Sometimes the app just needs to know if something exists in the database. With Core Data, it’s a fetch.

With SQLite, here’s one of my favorite tricks: select 1 from someTable where uniqueID = whatever.

In theory it should hit the index only, since it doesn’t actually retrieve anything from the table itself. It’s fast, at any rate.

My favorite magic

Once I had the above (and everything else) working, there was still more optimization to do.

I had created a set of indexes that I thought would do the trick — but there’s nothing like actually seeing what will happen when a query runs. With direct access, with control over the indexes, I could test and iterate until I got the right set of indexes.

The magic is SQLite’s explain query plan command. It tells you what indexes will be used.

In the end

I didn’t entirely switch away from Core Data. Feeds and folders are still Core Data objects. Since there was no performance gain to be had by switching those over, I left them as-is.

It’s just news items that got switched — but that’s almost all the data.

Making the switch did mean I had to do some things manually that Core Data would have done for me: keeping any in-memory items synced with the database storage, mostly.

But, still, in the end, the new version of the system was less code than the Core Data version. That will not be the case for most apps. I took it as further indication that this was the right move for this particular app.

Warning

This isn’t about being a hardcore low-level developer or some crap like that. I like Core Data a ton. (I recommend Marcus Zarra’s book, by the way, which I read twice.) If I could have stuck with Core Data for everything, I would have. (Rule: always work at the highest level possible.)

But how do you know when you might be better off with FMDB or other more-direct SQLite access? I think it goes like this, at least based on my experience:

  1. Is performance good? Then stick with Core Data. (That should cover 95% or more of data-driven apps right there.)

  2. Is Core Data really the cause of your performance problems? Can you optimize other things? Can you optimize your use of Core Data? Will going multi-threaded do the trick? Try. If you can get performance good, then stick with Core Data.

  3. Are your remaining performance problems really database-y things? In other words, are you doing things like setting one or a few properties across a big range of items; deleting lots of items based on a condition; or having to handle unique IDs from another database, and so you’re constantly doing fetches? In other words, can you benefit by not treating your data as objects sometimes? If switching to direct database access won’t help, then stick with Core Data.

My warning: you probably don’t need to switch away from Core Data. It’s the right answer almost every time.

(By the way, were this a Mac app only, Core Data would probably have been fine. But it runs on iPhones too, and that’s where performance optimization becomes so much more critical.)

Anyway: Core Data is the right answer, except when it’s not, and hopefully I’ve made it a little easier to figure out when it’s not the right answer.

February 26, 2010 11:41 PM | Bookmark with del.icio.us

NSLog

Thursday in Scottsdale

Wake up 6:30. Shower. Eat some Wheaties "Fuel" (it's pretty good - and very dense). Pack up in the car and head off to Grayhawk where, despite arriving at 8:00am for a 9:00am clinic start, some students are already there. Hey, I can't blame 'em - I'd be there early too.

The clinic is a golf school, specifically one organized by Dave Wedzik, with Andy Plummer and Mike Bennett. Thirteen students were signed up, with one observer. Another instructor or two was there, and I was there to take photos (and, when not doing that, to listen, observe, and to help by recording some swings).

First, notwithstanding how great it is to be in the presence of someone (two people) who have done a lot to revolutionize the golf swing swing, several things stood out about the day.

  1. One of the golfers was missing both of his legs from the knees down and his right arm from the elbow down. Dave walked up to him, stared down at his legs, and deadpanned. "I can't teach you… you're a lefty." The guy was amazing, inspiring, and humbling in equal doses. Particularly when you realize he can beat 3/4 of golfers in the U.S.
  2. One of the student, a kid named Andy, is basically a scratch golfer with a "horrible short game and terrible putting" (in his words). He's been golfing for two years, but seriously for only just over six months. Dave and I talked about how quickly he's able to assimilate things into his swing because it's very easy for him to "clear the machine." Incredible.
  3. Every golfer improved. Every golfer probably shaved two strokes off his scores, at least, from the swing with which he came to the school. Wow.
  4. The weather couldn't have been better. Well, from a golf perspective, anyway. Obviously as a photographer I'd have taken an overcast day, but I don't think they get many of those in Scottsdale.

Aperture 3's brushes are incredible. I spent about a minute retouching this photo primarily to brighten the golfer (the same Andy as above) and to enhance the sky and ground colors a bit (targeted color adjustments brushed into the proper areas):

Andy Patnou

Adjustment brushes rock in Aperture 3. Nice job, Apple.


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at February 26, 2010 04:02 AM | Bookmark with del.icio.us

February 25, 2010

NSLog

Wednesday in Scottsdale

Today's a bit of a "free day" in Scottsdale. We don't have anything to do until tomorrow. Well, nothing terribly serious, anyway.

The four of us wake up and shower at about 6:30. Four being me, Dave, Steve, and Charlie. We head out to a Starbucks where, when I order a bagel, they don't even have a toaster to toast it. Gee, thanks. I drink some sort of protein juice thing that's a bit chalky but quite tasty.

Then we head to "Crackerjacks" - a fun center with a driving range, mini golf, bounce houses, water balloon fighting areas, a small arcade, batting cages, etc. We're there to meet Kirk, who has been teaching himself the Stack and Tilt swing. His swing is impressive and intriguing - he's one of the few people who seem to have gone too far in doing some of the particular moves, and he's over-drawing the golf ball. He's also a lefty, which I'm happy to notice confused Dave and Steve into saying "right" when they meant "left" and vice versa as often as I said it in my mind.

After that, we wandered over to Grayhawk Golf Club to meet the guy responsible for helping to set up the clinic/school tomorrow. We had lunch while Peter Kostis sat at the next table. Steve was tempted to say something, but chose not to. The burger wasn't very good at all.

We asked to hit balls on the range "for an hour or so" and ended up staying for five. Oh well. :-) My own swing has progressed to where my position at P2 is pretty good and so I started cleaning up some things at the top of my backswing. Elbows closer, push away with the left arm, no cupping. PGA Tour player (and major winner) Rich Beem hit about 30 balls next to us.

We drove back to "The La Hacienda" and chilled out before Dale showed up to take us to dinner. We decided on PF Chang's. I'd never eaten there, but everything was fine - some sort of honey chicken, Mongolian beef, rice, some spicy green beans, and pork rolls. Good stuff.

We returned to The La Hacienda, hung out with Dale for a bit, and discovered that Cheeseburger Doritos are grosser than gross. Yuck. Blech.

Tomorrow, the clinic!


© iacas for NSLog();, 2010. | Permalink

by Erik J. Barzeski at February 25, 2010 04:33 AM | Bookmark with del.icio.us

February 22, 2010

Ranchero

Two upcoming iPhone dev conferences

In April I’ll be going to two iPhone/iPad developers conferences: iDev 360 in San Jose and Voices that Matter in Seattle. (I’ll be speaking at 360 iDev. For the Seattle conference I’ll be playing the part of a local, since, well, I live in Seattle.)

February 22, 2010 09:08 AM | Bookmark with del.icio.us

Inessential

Voices that Matter iPhone conference - Seattle, late April

Join me at Voices that Matter iPhone Developers Conference

I missed the Voices that Matter iPhone developers conference last year in Boston — but I heard great things about it, and I ended up being sad I missed it.

Then just recently I heard the next one is in Seattle, which is where I live. Not going to miss it this time, no way. :)

Let me get the money thing out of the way: use the discount code PHBLOGS when registering to save $100. Register before March 12 for early-bird pricing to save another $200. That’s $300 total, ’kay?

About the conference

It’s put on by our friends at Addison-Wesley — the idea is that the speakers are the folks who literally wrote the books on iPhone development. Folks like Aaron Hillegass, Jonathan Wolf Rentzsch, Kevin Avila, and more.

Aaron Hillegass, by the way, taught a ton of people Cocoa programming in person — and the ones he didn’t teach in person he taught by way of his Cocoa book. Me included. Aaron is responsible for just about everything and everybody.

I’ve seen him talk — and he’s so damn good.

About Seattle

Have you been to Seattle? It’s beautiful. Green. Lush. Alive. Waters fresh and salty plus two nearby mountain ranges plus a view of the tallest mountain in the lower 48 states.

The conference is on the waterfront at the Bell Harbor conference center. I’ve been to two Gnomedex conferences twice at that same location — it’s very nice, with a view of downtown, the waterfront, Elliot Bay, and the Olympic mountains.

The conference hotel is the Edgewater. The Beatles stayed there in like 1964 or something. In those days they used to give you fishing poles so you could fish from your hotel room.

About the Seattle Cocoa community

I don’t know who all of the locals are going. (I hope they all are.)

You might even wonder if there are any locals. Seattle’s gotta be a Microsoft town, right?

But here in the shadow of Mordor we’ve got a pretty hot bunch of developers. By way of proof I could just mention the magic kingdom of Omni and be done.

But there’s also the cool cats at Rogue Sheep, the amazing Flying Meat (Gus Mueller), Joe Heck (ringleader), some Cocoa-y Google folks, the madmen at Black Pixel Luminance, the unclassifiably hip Corporation Unknown, Professor Hal Mueller, the artisans at Zumobi, and plenty more.

After hours

I’m thinking pinball at Shorty’s. (Not like it’s the only place in town. But don’t us geeks love pinball? And it’s walking distance — just up the hill from the Edgewater.)

Anyway, that’s the scoop. Come to my neck of the woods for a change, wouldja?

February 22, 2010 08:30 AM | Bookmark with del.icio.us

360 iDev iPhone/iPad Conference - San Jose, April

Going to the 360 iDev iPhone conference?

I am. I’m speaking, even, on the topic of content-based apps. (On feeds, XML parsing, performance, networking, the beauty of NSOperationQueue, image caching and scaling, SQLite and Core Data, etc.)

I went last year to the San Jose conference and then to 360 iDev in Denver. Had a great time both times and totally look forward to this conference.

The iPad should actually be out by then, which is cool — I don’t know exactly what iPad content is lined up, but I have to figure lots of speakers will incorporate iPad into their presentations. And I bet lots of folks will bring iPads with them. I want to go just to see a whole bunch of people’s iPad apps and ideas.

I think it’s the first iPad conference with actual iPads. That’s kind of like Woodstock, right? I don’t want you to say you were there when you weren’t really there — you should actually be there.

Not enough? Here are some other randomly-jotted notes, then...

  • It’s near Cupertino. One night we all go over to Steve Jobs’s house for barbeque and Cuban cigars. It’s totally chill. (Wait. Okay. Maybe not. But it is near Cupertino, though.)

  • Last year I almost got in a fight at Linda’s Light Rail Lounge. Lesson learned: don’t ever joke about NASCAR with somebody who cares. He said he liked so-and-so as a great driver, I said something about Jeff Gordon (the only driver’s name I know) — and apparently the guy thought Jeff Gordon was a sissy or something. I had to talk fast. It’s possible that I bought him a drink, or maybe Joe or Dan handled it and saved me.

    What I mean is this: you and me, we should hang out.

  • My friends Brad Ellis and Dave Wiskus — great designers — are doing a co-presentation on something designer-y-ish.

    Don’t know who they are?

    Check out some apps Brad’s worked on: Apple Design Award winner Postage, Word Spin, and SnoGlobe.

    And check out apps Dave’s worked on: Coathangr and the wickedly addicting Typewar.

  • Oh, whatever, shut up, at least it’s always open.

  • Marcus Zarra will be there. And speaking. Don’t miss your chance to hear from the double-fisted wizard of Cores both Data and Animation.

  • Colin Donnell will be speaking. He has great hair and brains to match.

  • I sometimes judge a conference by who I met and keep in touch with. Last year I met Ryan Nielsen and the previously-mentioned Dan Burcaw.

  • In fact, the conference has such great mojo that last year Dave Wiskus was in town — for other reasons, only coincidentally in San Jose — but he hung out with us at night. And a year later he’s a successful indie iPhone developer and a speaker at 360 iDev. Imagine if he had actually attended the conference. He’d probably be an App Store billionaire by now. (Which is just $150 million in regular money, but still nothing to sneeze at.)

    (That App Store money thing didn’t make any sense. Sorry.)

    What I’m saying is: this conference has the power to launch entire careers!

  • Check out the entire list of speakers. Julio will be there! Joe-with-the-hat! More! It’s a great line-up.

  • TapLynx is a sponsor. That means, yes, we’re paying for some of your fun and awesome learnings. :)

  • It’ll be months before WWDC. Hard to wait, right? Especially with all this cool iPad grooviness.

Anyway... you should go to the website and check it out. Here’s the registration page.

Also, they might set up Rock Band again. You haven’t lived till you’ve seen Joe Pezzillo do No Sleep Till Brooklyn. You can hope.

February 22, 2010 04:33 AM | Bookmark with del.icio.us

February 16, 2010

Inessential

Kevin

I got email asking me if I was doing some kind of public shunning of Kevin Ballard. By no means! He’s a totally great guy — smart, friendly, funny, way more interesting than I was at his age — and I’m sorry I didn’t see him at Macworld. It’s just that 1) he’s fun to tease and 2) he’s a super-good sport.

My kind of fella.

Now pretend you didn’t read all of the above. :)

February 16, 2010 08:28 AM | Bookmark with del.icio.us

February 14, 2010

Inessential

Email sent to a developer on supporting 10.6 and up

The below is an email I sent to a fellow Mac developer on reasons to support 10.6 and up on his next major release. (It’s barely edited: I just changed a couple sentences that would have made identification easy.)

Here are the reasons to go with 10.6 and up:

1. Millions of people are using 10.6. Every new Mac since last September or whatever is running 10.6. Apple is selling lots of Macs. Lots of people have upgraded to 10.6.

2. People who don’t upgrade their OS are, in general, the kind of people who just don’t buy software anyway. (Particularly in the case of 10.6, given how inexpensive the upgrade price was.)

3. Every second you spend dealing with 10.5 (in terms of testing, code, whatever) is a disservice to your customers and your software. It’s very nearly irresponsible.

4. Quality is the most important aspect of your software. Quality drives sales. Dropping 10.5 support means you can spend more time on polish; it means you can use 10.6-only features that make your app better and easier to maintain. Continuing with 10.5 support means that your software is not as good as it could be.

5. Rule of thumb: don’t ever code for a shrinking OS version.

Wayne Gretzky: "I skate to where the puck is going to be, not where it has been."

There will be n 10.5 users on the day the next version of your app is released. The next day there will be n minus some number. A month later it will be n minus some big number — but you’ll still be supporting 10.5, you’ll still be writing software for people who don’t buy software anyway.

There are x 10.6 users today. Tomorrow there will be x plus some number. A month from now it will be x plus some big number.

6. Current users of your app still on 10.5 have a perfectly awesome piece of software to use.

7. If you don’t drop 10.5 now, when do you drop it? On a major release is when it’s easiest, and you don’t want to wait for the major release after this next one.

February 14, 2010 07:33 PM | Bookmark with del.icio.us

February 10, 2010

Inessential

Advice to new developers on networking

This is for folks new to the Mac, iPhone, and iPad development community who are going to their first conference...

You might wonder if this “networking” thing you’ve heard about is really a thing. “I’ve got Xcode,” you think. “Do I really have to, you know, meet people and stuff? Isn’t networking something my Dad did? What about the meritocracy?”

While you’re busy asking yourself questions, other people are having a good time.

Here’s the deal: you don’t actually need to know anybody else to be successful. You totally don’t. It’s fine.

But it helps.

It’s not really networking, anyway. Or, at least, I’ve never gone into a bar or a party thinking I’ll advance my career or my software. That would be weird and yucky.

Rather, there’s a great community of developers and journalists and bloggers, and they’re roughly in your age range, and you have some interests in common, and almost everybody is nice, and — hey, it sounds like kindergarten, I know — but you can make friends.

That’s all there is to it. It’s not networking: get that dumb word out of your head.

Okay, here’s some practical advice.

Two types of geeks

The first type is exactly what you’d expect: they’re the technologists, the guys who would invent computers if they didn’t already exist. On their nth beer they can discuss the fine points of objc_msgSend_stret().

While they’re talking to you they’re also, in their heads, optimizing the queueing algorithm at the bar, writing their first quantum computing application, and stepping through the code they wrote just an hour ago.

The second type is tech-inflected liberal arts types. (I sometimes wonder if this surprises new computer science graduates.) Journalists and bloggers are often of this type — but a perhaps-surprising number of developers are too. They’d rather discuss Gogol and Gaga, Kafka and Kubrick, Borges and Black Eyed Peas.

What both types have in common, though, is Apple products. “Hey, how ’bout that iPad, huh?”

Both types also love well-designed software.

Some things not to do

Remember that everyone sits at their desk most of the time working on hard things. But not at the moment you’re talking to them. At that moment it’s time to have fun, take a little break from the hard things.

I think many of the technologists can deal with bug reports and feature requests in person. For others it’s too much like being back at the desk. (For me it is, anyway.)

I don’t know anybody who likes being cornered or monopolized, or who can stop what they’re doing to spend 30 minutes looking at a demo.

What you should do

Remember that all geeks are shy, just like you. Even the boisterous ones. Or especially. The word “shy” is so universally applicable among geeks that it means nothing: it’s no excuse for you or anybody else. (What do you think beer is for? It’s not just a FIFO stack.)

But if someone ever seems stand-off-ish or awkward — take it as shyness. That’s all it is. (Countless times I’ve heard people say “so-and-so doesn’t like me, I think” — when it’s always just that geek social skills are a little rough-edged. Mine included. In some cases these people have become best friends.)

So, yes, remember that they’re all people, just folks, not different from you in some fundamental way.

Though I will caution you not to stare directly into my third eye, or make fun of the extra head on the side of John Gruber’s regular head, or try to grab Wolf’s tail.

And if you think you actually just saw Thor himself, well, yes, but we call him bbum (the Norse god of Tequila).

(And, one more time, though it should go without saying by now — if you find yourself anywhere near Kevin Ballard, just slowly back away and move to the other side of the bar. Don’t move too fast — his eyes are freakishly sensitive to motion. You’ll be okay. Eventually. I know it burns.)

February 10, 2010 08:14 PM | Bookmark with del.icio.us

Last

This is the last Macworld Expo where you won’t see iPads. I’m nostalgic already.

February 10, 2010 06:15 PM | Bookmark with del.icio.us

Ranchero

The Listening Engine

Tim Bray on being well-informed or not: “This might signal a new kind of stratification in society.”

February 10, 2010 04:58 PM | Bookmark with del.icio.us

Inessential

Super-quick guide to Macworld Expo

The Expo and trade show is during the day. Walk the floor. Pay special attention to the smaller companies — that’s where you’ll usually find the most interesting things. I tend to avoid any exhibit with a big video screen, and that’s served me well.

In the evening is when you get more of a chance to meet people and talk. It’s easy to find out where to be:

  1. Consult the Hess Memorial party list.

  2. If you’re an indie developer, be at the Chaat Café 6 pm Thursday.

  3. Follow Mac developers and journalists on Twitter — they usually make themselves pretty easy to find. (And you’ll often find that a bunch of them are at the same place.) (They’re very needy people. It’s sad, really. At that hour what they usually need is a beer.)

  4. Trust your iPhone Map program. Search works.

Also, as always, drink plenty of water, remember to eat and sleep, and see some of San Francisco if you’re new to the city. And, for the sake of all that’s good and right in the world, do not engage Kevin Ballard in conversation.

February 10, 2010 04:24 PM | Bookmark with del.icio.us

February 09, 2010

Inessential

On the benefits of thin-server RSS syncing

I’ve had a bunch of people ask me about the thin-server RSS syncing system I talked about yesterday.

The main question: what are the benefits?

First let’s define things a little. A thick-server RSS syncing system is something like Google Reader, NewsGator, Bloglines — where the server actually downloads the feeds, and client apps talk to the server rather than to the original sources.

There are lots of benefits to this kind of system. There’s every reason for this to be widely used — it’s the right choice for lots of people, probably for most.

A thin-server syncing system doesn’t read the feeds: it only knows about users, subscriptions lists, and the status of news items. No actual feed content. Loosely coupled to the actual RSS readers.

Here are some of the benefits of a hypothetical thin-server system (in no particular order):

No latency

The thick-server systems have to read millions of feeds. So they don’t usually get updates the moment they happen — they check a feed once an hour or whatever. (Maybe it’s every 15 minutes or whatever for popular feeds.)

This means that news gets to the client apps a little less quickly than it would otherwise.

With the thin-server, the clients read the feeds directly, so they get exactly what’s available at that time.

Security

Say you read a password-protected feed. A thick-server system would have to support that, and you’d have to send your credentials to that system. That system would have to store the content: it would treat it like any other feed it reads.

It’s not economical for thick-server systems to handle password-protected feeds, since each one can’t be re-used. It’s one copy per username/password pair.

With a thin-server system, you never transmit your username and password. It never sees the feed data, just the URL of the feed and IDs of news items. No problem syncing password-protected feeds.

Reachability

Say you read feeds from a local intranet that a thick-server can’t reach. You can’t sync these, since the thick server can’t read the feeds.

But, again, a thin server doesn’t care. All it sees are feed URLs and IDs of news items. No problem syncing intranet-only feeds.

(This also applies to things like script subscriptions. A thick server isn’t going to run an AppleScript, for example, but multiple clients might run the same script. The news items status would still be syncable.) (But not the script! No way would I want to sync executable code.)

Server downtime doesn’t prevent you from getting your feeds

If a thick-server system goes down, you can’t get your feeds. (Unless you turn off syncing.)

With a thin-server system, you still get your feeds. The clients wait to sync up.

Decentralized

So far, all the thick-server systems are on one big (conceptual) server. This means one point of failure for everyone who uses that system. Downtime is a big issue.

It’s conceivable that you could write a thick-server system that can run anywhere. Something open source, something easy to install. But it would use so much resources and bandwidth (reading the feeds every hour, returning entire feeds to client apps) that it would be prohibitive for many people. You couldn’t just install it on your account at your web provider and hope to get away with it. (Well, depending on lots of factors, of course. If it was just for you, and you didn’t have too many feeds, it’s probably okay.)

A thin-server system, on the other hand, would be easy to run. Minimal bandwidth, no content system where it downloads and stores feeds. It should be easier to set up and run than WordPress.

Easier to move from synced to non-synced and back

The thick-server systems rewrite the feeds, and usually substitute their own unique ID for whatever was in the feed. (Though, in the case of Google Reader, it also provides the original unique ID, if there was one.)

Because the feeds are rewritten, it can be very difficult to match up a non-synced item with its synced equivalent. This can make turning on or off syncing very rough, as you end up with duplicates.

Longer limits on news item status

This isn’t inherent, but it’s practical. Thick-server systems tend to serve a ton of people, so they have to have limits on the length of time news items status data will be stored.

For instance, NewsGator’s was two weeks or 200 items, whichever was first. (If I recall correctly.) Google Reader’s is, I believe, roughly twice that (but with some special cases, like when you do a mark-all-read in Google Reader and when you first subscribe to a feed).

But a thin system can afford to keep news item status data longer. Make it six months or a year.

No data loss

Because thick-server systems rewrite the feeds, they’ll often toss out parts of the original feed that they don’t care about.

Again, this doesn’t have to be inherent, but for practical reasons it’s often done this way.

With the thin server, you read the feeds directly, so you miss nothing.

Twitter and other feed-like things

This system would work for anything feed-like: it just needs a URL and individual item IDs.

Imagine pointing not just your RSS readers but also your Twitter clients at the server — your Twitter clients could know which items you’ve already read. Want that? I do. :)

Your data in your control

You could use someone else’s server, if they allowed it. Maybe there’d be inexpensive for-pay services.

But, at least conceptually, you could run it yourself, and control all your data yourself. The opportunity would be there, at any rate.

Anyway

That’s all I have in my head at the moment. There are more benefits, surely, but I think the above is plenty.

February 09, 2010 11:01 PM | Bookmark with del.icio.us

Jens on RSS syncing

Here’s Jens Alfke on RSS syncing with a couple interesting suggestions. (Jens has a lot of experience in this area.)

February 09, 2010 06:52 PM | Bookmark with del.icio.us

Idea for alternative RSS syncing system

Google Reader is an RSS reader that can be used for RSS syncing. Bloglines used to have a very basic syncing API (maybe it still does). NewsGator had a syncing API. FeedSync is a way to use feeds to sync other stuff (as far as I can tell). Sync Services (MobileMe syncing API) is a generalized syncing system that might be able to do RSS, but works just between Macs.

WebDAV is cool. DropBox is super-amazingly-cool. But these are storage systems, not syncing systems for things like RSS.

Not one of the above is a really great system for just syncing RSS between apps.

(For people who remember NewsGator’s system with fondness: it had drawbacks too, including that it was limited to the past two weeks or 200 items for each feed.)

Now, that said, I think Google Reader is cool (both as app and API), and I’m very glad we can use it, and I totally appreciate the help we’ve had from Google. But I do also hear from NetNewsWire users who’d like an alternative.

With everything else I have to do, I don’t have time to create an alternative. But I could make NetNewsWire work with an alternative, if one existed and was worthwhile.

What is a worthwhile alternative?

There are a few criteria to meet, in no particular order:

  1. It would have to be more like email servers — that is, not just one big server or cluster of servers somewhere, but the kind of thing people can run on any server. My web service provider might run one for me, the same way it runs an email server. (Or I might run one on my LAN. Or I might install it myself on my own website.)

  2. It would have to be free and open source, so that it could be everywhere, so that it would be developed by people who just want to make RSS syncing work. (I’m a capitalist, totally, but there are times when free and open source makes sense.)

  3. It would have to work over http and https. REST API.

  4. It would have to not require that clients download the feeds themselves from the server. (This is the way Google Reader, NewsGator, Bloglines and others worked. Status info was added to the rewritten feeds. I’m saying this system should not work that way: clients would download feeds directly from their sources, just as they do when not syncing.)

  5. The API should be as simple as possible and still get the job done. The job would be defined as syncing subscriptions lists and status of individual news items in RSS and Atom feeds. (And nothing else!)

  6. It would have to be easy to configure an RSS reader to use a given server. No more than URL of server, username, and password should be required. (Less, if possible.)

  7. It should not be limited to the last 14 or 30 days (like some systems) — it should have a much larger limit, like a year.

  8. The server itself wouldn’t ever read any RSS feeds. It wouldn’t have to — it’s entirely just about syncing data between apps. It would only ever talk to client apps.

  9. It should use as little bandwidth as possible, and be as fast as possible.

  10. Authentication would use standard HTTP authentication. (Not cookies or anything else.)

  11. There should probably a PHP + MySQL version, just so it can be deployed as widely as possible. (Though I know you’re thinking Rails.)

  12. Despite its being open source, if someone did want to offer it as a for-pay service, they should be allowed to.

Notes about the API

There are some obvious things. Get subscriptions list as OPML-with-folders. (Feeds could live in multiple folders, which means folders are just like tags, so call them tags if you want to.)

API calls would support conditional GET, so getting a subscription list would usually result in a 304.

You’d probably add, delete, edit subscriptions by addressing into the tree. (That way you could delete one instance of a feed that appears multiple times. You could add/remove folders that way too.)

The other half is the status of news items. Most have a unique ID (always in the case of Atom) or a guid (usually, in the case of RSS). For items that don’t, an agreed-upon way of constructing a unique ID would have to be developed. (Pick things that don’t usually change but are enough to identify an item: pubDate in a specific format + link + feed URL, as a UTF-8 string, then MD5-hashed. Maybe. Something like that, something that would be largely reliable.)

You’d sync status incrementally: get all the status changes since a certain date (the last time you made the call). Status would probably be read, unread, deleted, starred, and saved. To set status, it would be great to address each item in individual calls, very RESTfully — but that would be a giant bandwidth waste. Better a single call that takes a structure of some kind (XML, JSON, whatever) with item IDs and status/value pairs, where you can update a bunch of items all at once.

As you can see, the server doesn’t have to do that much. It stores some small bits of data with timestamps. I don’t think it needs any cron jobs (at least not conceptually) — it just responds to requests. It doesn’t even have any idea what this data is about.

You probably have the database schema mapped out in your head already plus more specific ideas about the API.

(I don’t recall if I’ve said before, but a couple years ago we found that the average NetNewsWire user had 26 subscriptions. That should give you an idea of the storage requirements this would need. Obviously some people have hundreds or thousands, of course, but not most.)

Most of the time clients are just getting the subs list (usually getting a 304 back), and getting/setting news item status changes.

In other words, none of this sounds that hard. And it doesn’t sound like a taxing job for a server.

Invitation

If I had time, I would have written this years ago, offered it for free, made it open source, had NetNewsWire support it, and I’d have tried to get other RSS readers to support it too.

But I didn’t and don’t have time to write it.

However, if there are people who are interested in writing this, I can help. I have client apps, and I’ve been thinking about this for years, and I’ve written to several sync APIs.

If you’re seriously interested in writing some software that could end up deployed far and wide, and that would solve a real problem for real people, get in touch with me.

P.S. Here’s the business case

So you might want to make some money. That’s cool. Two business ideas:

  1. Charge people money to use the service.

  2. Collect information about popular feeds and popular news items. You could provide a real-time view into what people (in the aggregate) are reading. This might be interesting to sell, or it might be interesting as a website itself (where you could display ads). Given all the metadata in feeds, plus your user’s folders/tags, you might even be able to figure out categorization. You might even be able to provide trends, too. Certain topics are gaining/losing ground. Certain feeds are getting more or less popular. Etc. Don’t forget the pretty graphs! All of that stuff would be an add-on, of course, something you’d be able to build because you have the sync system underneath.

Compelling? I don’t know. Just what I thought of off the top of my head.

February 09, 2010 06:18 AM | Bookmark with del.icio.us

February 03, 2010

Ranchero

Cocoa and Cocoa Touch Intro

Peter Hosey: “Welcome, new Cocoa or Cocoa Touch programmer. Here are some things you will need to know.”

February 03, 2010 04:34 PM | Bookmark with del.icio.us

On Removing Features

Lukas Mathis: “Eventually, you will find yourself in a position where your application contains features it should not. Even if you’ve been vigilant, this will happen.”

February 03, 2010 01:48 AM | Bookmark with del.icio.us

February 02, 2010

Ranchero

February 01, 2010

Ranchero

iPad as revolution

Macworld: “For Apple, it’s not about killing off tinkerers, but ensuring that not everybody who wants to use a computer has to be a tinkerer.”

February 01, 2010 07:15 PM | Bookmark with del.icio.us

Citizen Reporter Plug-in for TapLynx

Tyree Apps: “I’ve created a little view controller that lets a TapLynx app offer the user a quick way to snap a photo and then email it to someone without ever leaving the TapLynx based application.”

One of my favorite parts of TapLynx is that it’s extendable: you can create new views with new features. (Note to programmers: TapLynx is a static library. You still use Xcode to build apps, though TapLynx makes it so you write code only if you want to.)

February 01, 2010 06:52 PM | Bookmark with del.icio.us

Blogs

Add a feed
Can't get enough blogs? Check out the archive where each day's blog entries are archived.

Powered By: Planet Planet Logo!

MacBlogs is a blog of blogs. The site is powered by the Planet software, developed by the Gnome and Debian communities.


For more information, please email macblogs@gmail.com