I love that David Weinberger is narrating his fumbling programming work on his blog. It's great for a lot of reasons.
Everyone goes through what he's going through.
You never stop going through it, even if you've been programming for 37 years, as I have. You'd think after all this time I would remember the basic lessons I learned the hard way when I was in my early 20s. But nope, I often forget them.
It's very useful for me to read his narrative. I'm going to teach this stuff, and I have to remember that what seems second-nature to me now, once didn't.
One of the things I talk about with everyone I meet at NYU if they're willing to listen is that we're not teaching programming and we should be. I think every person who graduates with a bachelor's degree should have one semester of programming, just as they should have one semester of journalism.
If I ever get my book together, there will be a chapter on programming in it, where we'll cover the basics. Logic, looping, variables. I seriously think we can get political science students to experience a teeny bit of the magic of programming. It'll be a challenge for sure.
But it's a serious situation because there aren't enough students taking up computer science. New York wants to become a tech center, but it'll never happen as long as there are so few programmers graduating from our universities. Another way of saying this is that every student graduating with a compsci degree is much sought-after. They have their choice of jobs. This, in a major recession.
Now, my advice for David, and anyone else who is staring at code wondering how it could possibly be behaving as badly as it is.
Of course you're going to think it's the system that's screwing up. We all do. But that is so rarely the cause of the problem that it pays to put the theory aside and get the computer to reveal its logic to you. It's coming up with what you think is the wrong answer, but when you finally figure it out, you'll see why it's the right answer. You can't move on until you see this.
So step through it in the debugger, and watch what it does with your data. Eventually you will see it do something that isn't what you expected. Now figure out why and change the code, and test again.
I once stared at some code that was supposed to return the value 26 but it was returning 251. Must be a bug in the math processing code, because how could 25 plus 1 yield 251. But it did, ever damned time the code ran. Until I realized that the 1 was a string and the 25 was a number and the language coerced the number to a string so it could concatenate them. What was imperfect was not the machine, but my understanding of the machine.
BTW, I can only remember one time that a problem turned out to be a bug in the system. I spent a week chasing a bug in IBM's Pascal compiler in the early IBM PC. Of course there was no way to file a bug report, so once I understood what it was (I had to look into the code it was generating) I just worked around it.
Another time, there was some bad memory in my system. This was in the very early days of PCs, when there was no memory management. So I put a comment around the bad memory in my source, and was very careful not to add any code above it -- in all my source files.
Very early in my career as a programmer, I had an office in the Empire State Building, on the 39th Floor, with windows that open. I was there late one night, trying in vain to figure out which of the computers that was running my code had the bug. My problem was I had no idea how to approach the problem. That's 98 percent of the battle, clearing your mind, rolling up your sleeves, accepting the responsibility that it's your bug not some programmer in New Jersey, or the guy who wrote the operating system. I remember thinking, staring out into the NYC night that they shouldn't put young programmers in skyscrapers with windows that open.
I finally have been admitted to Flipboard, and have had a chance to try it out.
First the conclusion -- eh -- not so great. But maybe if they move forward in an interesting way, this version can be the foundation for something that leads the market in an interesting direction. But right now, I don't plan to use it, and I don't think very many people will use it, after the initial rush has died down.
Caveat: I could be wrong and I know it. My first reaction to Twitter was much the same, but I ended up being a devotee. I also initially misread desktop publishing. I didn't think anyone would want to do it. I've been wrong many times. So don't take this as a pronouncement, rather it's an opinion.
Basically, Flipboard is a client for Twitter and Facebook. It doesn't show you all the posts, it has an algorithm that somehow ranks them and mixes up the order.
They appear to have two ways to display a tweet.
1. If it contains a link, they load the page it points to, run it through Readability to get the core content, extract a picture or two, and lay it out in an attractive way. They only show the first few paragraphs, then link to the full story.
2. Otherwise they show the tweet in a full-screen mode, much the way Twitter shows it when it's displaying a tweet on its own page.
Since it only runs on the iPad, at least now, it has to compete with my current means for reading Twitter on the iPad, which is (I know it's boring) twitter.com in Safari. It works pretty well. I don't see why I should launch Flipboard to read articles I could just as easily read by clicking on a link.
If Flipboard, in a future version, allows me to push content into it via RSS, without going through Twitter or Facebook, then I've got an incentive to use it, and I probably will. This is something neither Twitter or Facebook does. Also, as a developer, and freedom-loving user, I am willing to invest alongside any company that's willing to help me be free of big companies. But this could just as easily be one of the other client developers. No special reason to look to Flipboard for this. Maybe they'll do it, but given the inbred nature of Silicon Valley, they probably won't.
The other hope is that Flipboard offers publishers a way to use a higher-level rendering capability to make their collections more useful to readers. We're waiting for someone to do this. Again it could be Flipboard, but it could just as easily be someone else.
What they've done is captured a lot of attention. That may be a good thing, or as Rex Hammock points out, it may just alienate the publishers, who ultimately they need cooperation from.