Click here to show or hide the menubar.
Feed last built: 4/15/2014; 1:35:22 PM.

Scripting News

Old-time laptops

In the early-mid 80s the art of laptop computers was just getting started.

A picture named trs80Model100.gif

That's a picture of the TRS 80 Model 100.

It ran Microsoft software, if I remember correctly -- couldn't run what we now call "apps." But it had a little word processor and a BASIC interpreter, and could connect up to your desktop computer. I owned one, but never really used it. I was an Apple II guy at the time, about to transition to the IBM PC.

My first real laptop was the DG One. I was one of its early developers. Really made an impression. It was a real computer. Quite heavy, almost in what was then called the luggable category. The great thing about it was that it was not an almost-clone of the IBM PC, it was an exact clone. That meant it had lots of software. The near-compatible computers of the day all withered on the vine.

Reading Ted Nelson on an iPhone

Yesterday I wrote I was doing stuff with XML-RPC, but didn't say what I was doing.

I hit a conceptual stopping point on a user interface project I've been working on, inspired by Jay Rosen's use of Fargo as a presentation tool in his talk last week in Austin. I needed to move from the UI to the machine room, to plumbing and wiring and some of it, in computer networking terms, quite ancient!

Sometimes that helps clear the mind, switching what kind of puzzle you're working on. So if you hit a conceptual wall working on the user-facing stuff, switch gears and do some work on the plumbing.

My interest is in letting people use Fargo to edit whole WordPress blogs. So I started breaking the problem up into bits, and found that there really isn't a whole lot to it. Fargo can already create WordPress blog posts, and edit them of course. All I should have to do is 1. create the data structure that Fargo creates, and 2. effectively fool it into believing it had created it too. And that led me to creating a WordPress-to-OPML utility app, in JavaScript, of course (I already have lots of stuff like that in the OPML Editor).

And that led me to various approaches for talking to WordPress from JavaScript clients, but I hit CORS walls, and decided that it would be better to put this code on a server, esp since I've mastered the setting up of new node.js apps on Heroku. At first I found several packages that use XML-RPC to communicate with WordPress. I smiled when I saw the MetaWeblog API calls from the late 90s in a node.js wrapper. I suppose that's like reading Ted Nelson's book on an iPhone. Amazingly it not only works, in both cases -- but works really well! Some bits of technology move forward into the future, others don't.

It was so gratifying to come back after having left the world of XML-RPC, basically when I started doing app development on top of Twitter, I was using it as a I used to use XML-RPC. Now I find not only has WordPress continued to support their XML-RPC interfaces, but they have enhanced them. I was expecting a long slog to get the connection working, but it happened so quickly, just a few minutes, that it threw me off-balance.

Now I'm working my way through various example websites. I have it completely working with my concord test site.

I'm looking at all the WordPress blogs I have close at hand to see if they work with the new utility. I hit some problems with the Rebooting the News blog, which brings me full circle back to Jay. There are problems, so I'm reading the old posts as I work through it. More memories. Funny how there's a time for digging new holes, and then there's a time for going back to see how the ones I dug years ago are doing. Happy to report, everything still appears to be there.

Weekend linkblog posts

I haven't yet combined the linkblog feed with the main Scripting News feed. I want to give aggregator developers a bit more time to learn how to deal with title-less feed items. But if you're subscribed to this feed, I wrote a few mini-essays on the home page yesterday that you might want to read. Here's the link.

Podcast: What the Fuck!

I did a five-minute podcast with a revised idea of what the Internet is in light of what we've learned in the last week. It's not anything like what we imagined it was.

What to do? See the title of this post for a suggestion.

I'm trying to think but nothing happens!

Interapplication communication in JavaScript

How are we going to do interapplication communication between apps written in JavaScript running on the same machine?

I use localStorage

The client app stores a string in known location. The server watches that location. When a string shows up, convert it to uppercase, delete the string, and store the new string in another known location.

The client app is watching that location, when a value shows up, it displays it for the user.

A limit

There is a limit -- the two apps have to originate from the same domain, because only apps from the same domain can share space in localStorage.

Example app

The example app is in a GitHub repository.

Download the client and server and drag them into your browser.

Enter a string in the client. Click the Submit button. See the result.

Seeing is believing

Some people don't believe this works. It does.

I've deployed it in a real-world app, and there have been no support issues.

And with this demo, you can see with your own eyes.

Dropbox tone-deaf? Hardly

TechDirt has a story calling Dropbox "tone-deaf" for adding Condoleezza Rice to their board of directors, given that she played a central role in creating the surveillance state that we now find ourselves in. (Yesterday Ed Bott said the same on Twitter. I argued with him. A more detailed version of the argument follows.)

Tone-deaf is an interesting idea. Literally it means that someone can't carry a tune. Using it as a metaphor for a company, I think they're saying they have an integrity issue. Dropbox seems to be a company we can trust to fight the government on our behalf. Hiring Rice seems contrary to that and to the interests of its users. They aren't what they say they are, therefore they're tone-deaf.

But it's only tone-deaf if you were expecting a different tune. I think it's refreshingly honest and open. It tells the users that it's very important for Dropbox to have a way to communicate with governments at a very high level. Someone has to rep the company at meetings that are now taking place regularly where new rules are being created to govern the Internet. Private rules that we may not know anything about.

The net never was as open and liberal as it seemed to us. That's what we learned from Snowden's leaks. Every large tech company is quickly becoming part of the governmental structure of the world. Eric Schmidt, for example, travels with a former aide to the US Secretary of State. I'm sure at times when he meets with world leaders he's carrying messages for our government and vice versa.

That's the reality. Dropbox could have tried to hide it from users, but they chose not to. That appears to be in harmony with other tech companies. We may not like the song they're singing, but it's not tone-deaf.

Secret may be the next thing

Twitter and Facebook

Twitter and Facebook are part of my "rotation." When I take a break from work, I go to each to see what's up. It's a habit, like checking email was a decade ago. I check even though there's usually not much there of interest.

I don't have any early-days memories of Facebook, because I wasn't part of its early adopter crowd. But I was there for the beginning of Twitter. And I remember what an eye-opening experience it was. All of a sudden the lives of the people I related to on the web were opening up to me. I could see where people go, even learn about their families. But then the experience got diluted, as I followed more people, and more people, strangers, talked to me as I tweeted. The experience re-formed into a sort of social media haze, people promoting this and that. Although we don't call it spam, that's really what most of what's on Twitter is.


I tried Napster in the winter of 2000, found nothing there of interest, but I was looking for a specific song on June 18. Father and Son, by Cat Stevens. (It was Father's Day.) I had just heard it on the radio, and wanted to hear it again. Back then, if you can believe it, this was a problem. Unless I had a song in my personal collection of CDs I had bought at a record store, the best I could do was wait until it came on the radio again. Then I had a thought -- maybe it's on Napster. It was. That, and everything else. In the period between my first and second visits, the system had boomed with people of my age, and now our music was there too. It was an amazing experience to be able to browse old tunes the way I browsed the web. I wrote about it, a lot. The experience of music had been transformed. People were talking about music in the supermarket and airports! This was new.

Father and Son still reaches inside me to find the confusion that reigned between my father and myself when I was younger. I'm 58 now, but the Dave-of-17 is still very much alive inside, and is moved by that song. "From the moment I could talk I was ordered to listen." That's the power of a new medium, in this case, Napster.


Now it may be Secret's turn. True, there's no API, and no web client. It's not politically correct. It's possible that there can't be an API for a service that tries to deliver anonymity. I don't know. All that said, I'm having the kind of experience with it that I had in the early days of Napster and Twitter. I'm learning things, meeting people and hearing things from them they could never say if we knew who they are. Sure there's a lot of the first time thrills that come from saying nasty shit about people we all know. I've even read nasty shit about me. Big deal. The first time people used SimCity they destroyed the built-in cities. That's fun for an hour or so, then you try building a city, and that was fun (for me at least) for years.

Secret is not in my rotation yet, I have to remember to check it. But when I do, it gives me lots to ponder, makes me want to ask questions, and gets me thinking about who else is in this world, and how different some of them are from me. Sure the stories are probably mostly fiction, but this is what people dream about -- their fantasies. Who they would like to be. They do something no one can afford to do on their blog or on Twitter or Facebook, they show vulnerability. And that's interesting, and in Internet communities, new.

PS: There are cats all over this piece. The logo of both Secret and Napster are cats. And Cat Stevens wrote the song that got me into Napster.

Heartbleed is serious

I'm not waiting for various businesses to contact me, I'm contacting them asking if they're vulnerable and if so what's the plan.

Changing your password is not a fix. Every site that is using a version of OpenSSL that has the bug has to be updated or patched. Obviously, the sooner the better.

Technical details here including the C code for the bug and the fix.

So far I've only heard from only a couple of very seriously technical sites, and It's not clear if credit card companies, online stores like Amazon, banks and brokerage firms, are vulnerable, and if so how quickly they're installing the patched software. We're in that awful period where the vulnerability has been fully documented publicly. No one knows if any hackers were aware of the problem before it was discovered, but there is no doubt the bad guys know about it now.

This is one of the reasons why the Internet of Things hype is so scary. Right now, in 2014, our entire financial system is accessible through a compromised system. That's bad enough. But what happens when our bodies are wired to the net. And our cars, homes, everything. It's great to think about when everything is working and everyone plays nice. But if you know anything about software and networks you know that's a naive dream.

Ideas for Google Glass

A couple of ideas, probably not even close to original, but I wanted to get them down.

  1. I go for a walk every day, or try to -- and I usually take a podcast with me. This American Life, Planet Money, something from the New Yorker, or the NY Times. I'd like to take an episode of Nurse Jackie with me, a TV show. It seems like it would be a perfect application for GG. I could keep my eyes focused both on the show and where I'm walking. (I hope!)

  2. Scoble got a new toy -- a drone with a beautiful video camera. While the drone is flying, you can watch it on your iPhone. But wouldn't it work much better with GG? I want to use my hands to control the drone, and the effect of having my vision being directly wired to the "vision" of the drone would probably be amazing. Esp if it were 3D (which suggests using something like Oculus). It might give you a real sense that you're flying.

What's the cost of failure?

You could spend months or years to know that your approach is correct before trying it. If the cost of failure is high, say you're firing a rocket into space, then you want to put enough time into being sure you're right. But if it doesn't take long, and it's easy to revert, why not try it and see what happens?

I do this in programming all the time. Whether something works or not is data. I don't like to leave a solution in place that I don't understand, so I will usually do the work to know it's correct. But it's easier, less stressful, and takes less time if you already know it works.

And of course if it doesn't work, that's data too.

How to do new things

The best way to learn something is to start doing it. Don't wait for full knowledge to come to you. Often it won't. Just pretend you know what you're doing, and hit the walls. That helps define the shape of the problem. Make it small enough that you can start solving it right now, without waiting. Each part of the problem is smaller than the whole thing. And tell yourself you can do it, because you can.

A story

Back in 1994, I wanted desperately to learn how to create and update a website. I was reading all the docs I could get my hands on, and at the time there wasn't very much.

I read and read, but somehow it just didn't come together. I understood the intent of each HTML tag. But how to actually get that into a place where the browser, at the time Mosaic, could get to it? I kept looking for the answer, but I wasn't finding it.

Until one day I found a service at Ohio State University that you could send mail to containing HTML and it would put it on the web and send you back the URL via email. I tried sending a simple message -- Hello World -- to the Ohio mailbox. It sent back a URL and when I went to the page, it just contained the text. I think I got it, I said to myself. I tried another experiment. I went to the HotWired website, did a view-source, copied the text to the clipboard and sent it to the Ohio mailbox. It sent back a URL and when I went there I saw a facsimile of the Wired site, with broken images. I understood. I didn't know what was happening back in Ohio, but I understood this much: I was sending it text and it was putting it "on the web," whatever that meant.

What are the questions?

Now I know what question to ask. How did the Ohio mailbot get my text on the web? From there, the whole thing just came to me, and I understood that the web is so simple it can be hard to understand. There really is nothing but files and folders and a piece of software running on port 80. Sometimes the problem is you don't know what questions to ask. Solving part of the problem could uncover them.

The basic method is ths. Figure out what's on the way there, do a few of them -- puzzle over it, try out an idea, if that doesn't work, try another. Feel your way around in the dark, try to find the shape of the thing you're looking for.

I've called this method Divide and Conquer at times. Same idea.

How to display title-less feed items

I've written previously about why title-less feed items exist. In a nutshell, some posts are so short they don't have titles. Prime example: Tweets.

Sometime soon the Scripting News feed will have title-less items. If you develop feed reading software and want to offer Scripting News links and posts to your readers, your software must be prepared to handle title-less items.

This piece shows how a feed reader can intelligently handle items with and without titles.


For this howto we may need up to four ingredients from a feed item: title, link, description, guid. When displaying the item, we need up to two bits: headline and body. Depending on what's in the item, the headline might link to something, or just be bare text linking to nothing.

How to

If the item has a title, the headline is the title.

If the item has no title, but has a description, the headline is the first N characters of the description. The value of N is up to you, based on how you lay the items out on a page, or if it's a river. In this case the body is empty. We've already used the description once. This is where a few aggregators repeat the text. There's no need to do this, it's unsightly, confusing, and shows lack of care for the reader.

The headline usually links to something. If the item has a link element, the headline links to that. If it has a guid, but no link and the guid is a permalink, the headline links to the guid. If it has no link, no guid, or the guid is not a permalink, then the headline is bare text, it's not an anchor element.

If the item has no title and no description, it's not valid RSS -- skip it.


  1. An item with a title, link and description.

  2. An item from a linkblog feed, has no title. The same item in my feed.

  3. How Chrome displays my linkblog feed.

  4. A river that's made up of feeds with a mixture of titled and title-less items.


This is the method I've used in all my river software going back to 1999. They have all been able to handle title-less items. However, I wrote this howto from memory, not from code, so there might be omissions, mistakes or typos. Corrections are appreciated.

Disclaimer: This isn't a standards body convening in the comments here. I just wrote a howto to help people out, not to begin a "process" or to debate. The Scripting News comment guidelines apply. Use your own space for essays, posts, opinions, screeds, memes, rants, etc that don't fit the guidelines. Thanks!

What if litmus tests become common?

You're applying for a job.

On the application they want to know your position on various human rights issues.

You believe your values don't match the "correct" answers for this employer. Do you...

Lie about your values.

Answer truthfully, knowing you won't get the job.

Refuse to answer.

Walk out of the interview and call a lawyer.

My Prop 8 blog post from 2008

Yesterday I was going to write a post trying to explain what it was like for me when I first met a man who was married to another man, but I found that I didn't need to. I had written a post in 2008, just after Prop 8 passed, where I told the story. In 2008 I had the politically-correct opinion for today, but in a way I wish I hadn't. I resent anyone trying to force me to think one way or another. And retroactively!

This is one of the reasons writing a blog is so important. I wanted to remember that moment, just after Prop 8 had passed, because I was sure change would happen, and things would flip around. Because I have the post, I have no doubt what I was thinking at the time.

The obvious point -- eventually the shock will dissipate, and there will be a time when people don't understand why something like Prop 8 would pass. Transitions like this take time. There's no other way. But this change is coming, for sure.

It shouldn't be so hard to remember what it was like before we changed. This is a skill we need to use and develop, if we want to avoid mistakes of the past and make progress on the vexing problems before us.

When I was a kid, if you had asked me would the US ever again fight an optional war, I would have said no. Not after the misery of Vietnam. But not only did we do it, we did it while the generation that grew up with Vietnam was in power.

Now that the Mozilla conflict has been resolved, perhaps now would be a good time to reflect not so much on what's right and wrong, because we all have different values about that, and they change, but on what outcome we want.

Suppose in eight years we have in-your-face evidence that we've destroyed the climate. Millions of people displaced, homeless, everywhere, on every continent. What will we do? Find and punish the people who stood in the way of preventing this? Or will we get on with saving what we can of our lives? Obviously the second choice is the best answer.

We're at a point where we can change re same-sex marriage and CEOs of corporations, and litmus tests, etc. Political diversity and freedom of expression are at stake, regardless of what the advocates tell you. If you haven't spoken up, now would be a good time to. Only people with extreme positions tend to speak on these matters. And that's why most of us get caught in the middle of their fighting, without really understanding what it's about. This is one of those times when it would be good to say what you stand for.

BTW, remember the guidelines for comments. Add a fact or simple perspective, no speeches, or posts-in-comments. Use your own space to be passionate. Comments are just for simple, not personal, ideas.

Politics necessarily creates divisions

A few years ago a friend switched parties, went from being a Democrat to a Republican. Usually not a big deal, but in this case it was, because he was a political operative, a guy who works on campaigns. When you have a defection like that, the danger is that all the secrets of one party are transferred to the other. If it's high-level enough, and you change the labels to country names, this becomes a crime punishable by death. It's serious stuff.

But where do you draw the line? How much politics does there have to be in what you do for it to be wrong to have positions that are unpopular to enough people to make your employment a problem. I suppose it depends on how involved your company is in politics, and how important you are to the company. If you're not very important then the inconvenience doesn't have to be very great.

About Eich

On to the resignation of Brendan Eich as CEO of Mozilla, announced earlier today.

Had Mozilla been an executive recruiting firm, had Eich given to a political cause that advocated job discrimination against a class of people, it's hard to see how he could continue in that job and still have the trust of people in that class. But Mozilla isn't in that business, and the law that Eich supported was about marriage, not jobs.

What about JavaScript?

Eich is also the creator of JavaScript, a popular language that's the runtime environment of the web. Was his leadership in that role also questioned, and will he be able to continue to lead? If so, why the difference? Are we willing to throw out a standard when it turns out the guy who created it has incorrect political positions? Is there a litmus test for contributing to open source software? And if you wanted to fire him, how would you do it?


We haven't heard from people who still support the position of Prop 8, but they are out there, and some of them are politically active, and aren't ashamed to make their position known. Are you concerned that there might be retribution? (Update: They've noticed.)

What about other highly moral political positions? What if you can't be pro-choice and be the CEO of a major corporation? There's a major political party that won't elect people who are pro-choice. There are many states where that party is the majority. They control a branch of Congress, and might win the other one in the election later this year. They have lots of money to fund campaigns and pay off politicians. If you supported the removal of Eich as CEO of Mozilla, how would you feel if the CEO of another company was removed because he or she contributed to a pro-choice cause?

An approved dry cleaner

Will you have to know the politics of every person you do business with in the future? What if your barber gave to a cause you don't support? Your doctor? How close a relationship does it have to be for their politics to be approved by whoever you look to approval for?

On the other side, if you want to be a supplier or goods or services, will you have to be as neutral as a Supreme Court nominee, in order to have a job, make a contribution? I know that's extreme, but I want to know where the line is.

This will become weary

The Internet is very powerful, we're learning. I think we just crossed a line that we should have avoided. There was no need to force out Eich. Prop 8 was overturned, same-sex marriage is legal in a lot of states now, and is on its way to being legal everywhere. People may have forgotten how quickly this change happened. In 2008, when Eich made the contribution, the proposition passed in California. It wasn't a minority opinion. So if change happens again, and maybe it's not the kind of change you like, anyone who gave to any political cause is in danger.

I think we'll be dealing with this for a long time to come. Right now victory must seem sweet to the people who wanted Eich out. But, I think before this is over, everyone, on all sides, will be weary of it.

About comments

This piece is not an invitation to re-litigate Eich's advocacy in the comments here.

I haven't said anything about it, pro or con, so if you want talk about his ideas, do it on your blog, not mine.

Update: After a while, all comments are from people who just paste in their standard talking points. So I just turned off comments. We've had ample opportunity to hear people's ideas on how a CEO should behave. That's not what this blog post is about.

Technology and evolution, day 2

A quick followup to Technology and Evolution.

The apparent paradox, eyes that evolved underwater can't re-evolve when life moves to air, has many parallels in software. Thanks to all the commenters who provided explanations. I needed quite a few approaches from different perspectives in order to understand.

A couple of examples from the world of software.

A very long time ago, there was a famous rich entrepreneur who would, every so often, make a pronouncement of intention to revolutionize the world. This way, then next year -- another way, and the year after that yet another. The press, who loves rich tech people, to them it's the best kind of catnip -- touted his vision as the next wave. That he never delivered didn't seem to dampen their enthusiasm. Artificial intelligence! Object oriented! No forget all that -- something else -- new and daring and fantastic!!

Bill Gates complained, as did others who shipped real software, with customers -- for naught. All the hype was drowning out the legitimate innovations, which were, as always, coming in small increments from people who weren't as famous or rich or fabulous keynote speakers. (Gates eventually learned to sing along with the tune of the times, his breakthrough was more breath-takingly fabulous any anyone else's.)

A second example -- Google Reader. It squatted in RSS Land, and forced all other players to become clients for its undocumented API. They didn't fund the project. No one at Google loved it. For years it stopped any of the incremental progress that could have come through small, evolution-like mutations. When they finally shut it down, a bit of progress, competition, came back. Survival of the fittest? We don't yet know how this will turn out.

Technology and Evolution

I touched on this yesterday, writing about Cosmos and evolution, and how I had the feeling that I wanted to "Do that!" -- when thinking about evolution. I know this may sound weird but I think we're not just subject to evolution, but we are also agents of evolution. In other words, evolution acts through us. Things we do intuitively are in the service of evolution. It's obviously true for some things, like sex -- that to us seems like an act of pleasure, at another level it's about procreating, and at yet another level it's about competition between our genes to form or influence the next generation of humans. But I think there's an even higher level of service, that our intellectual creativity is an evolutionary process as well.

If you look at the evolution of programming languages, you'll see a parental lineage going back to "the beginning." Algol borrowed ideas from Fortran, and C and Pascal from Algol, and Python, JavaScript are also Algol-like. I'm sure this is partially because the designers of the languages grew up using the predecessors. It's why our habits in America are familiar to Europeans and others probably to Africans and Asians, because our ancestors brought their familiar ways with them when they emigrated. Why should they change just because they live on a different continent? Same with languages. If "while" meant something in one language, it's not very useful if it means something else in a new language.

But there's another reason for a language to make small evolutionary changes relative to the languages that came before -- it's because they arrive in an environment that must be ready to use them. Languages that depart radically from prior art will have a hard time getting uptake because they are familiar to no one. That's why change is necessarily gradual. It's why we still use QWERTY keyboards instead of a superior design.

One of the most striking ideas in Cosmos, and a new one to me, is that evolution never goes back and re-invents something. Once there's a basic design for an eye, Tyson teaches, all eyes from then on work that way. This was less than optimal, he says, because eyes evolved when animals only lived under water. Because our eyes are largely made of water, there is distortion when they're used in air that isn't present in water. Basically fish have better vision than birds, reptiles and mammals. Why can't evolution go back and re-do the design of eyes now that they are used in air? I don't understand, but I find the idea fascinating.

Anyway, I think we'd do better if we were more careful about discontinuity in software environments. More people want to use computers in a mobile context today. Why does that mean that our languages have to change? Apple's C-based language is no better or worse than JavaScript, yet there are significant differences in the languages, ones that are difficult if not impossible to factor into a common interface. It means that change comes at a price, we lose capabilities we had before, unnecessarily, just because we want to use iPhones in addition to Macs.

It would all work better, imho, if we used natural evolution to form basic principles for software evolution. That developers not place so much emphasis on changing the world, and more on careful and thoughtful evolution. Only steal from the best, is a very good design principle, imho -- as well as Postel's Law -- strive to interop, of course, but also strive to make interop easy.

Podcast: Different-size bits of content

There's been a lot of change at in the last few weeks, and now that the dust is settling, I want to explain my thinking, using the new site structure as an example.

21-minute podcast.

Unpopular truths

A point that's very hard to make on the Internet, even if you tiptoe up to it, is that employers are people too, and they make decisions the way all people do, with a lot of input from lawyers and public opinion of course. As I said in the piece, if that story took place in 2014 instead of 1985, public opinion would have been a much larger factor. And, age discrimination, which was the subject of the story, today, is just beginning to be a topic of public concern.

Today ageism is prevalent. A lot of the abuse I took in response to that piece was ageist. For whatever reason this is a form of hate that is openly tolerated. We all get to deal with this one, if you live long enough, so there's some satisfaction in knowing that at some point people who hurt others based on age will learn what it feels like to be on the receiving end. However, it would be better if it just stopped, of course.

I don't remember writing the paragraph that caused so much fury, it was at the end of a long piece. I write much as if I were giving a talk at a conference, with a light edit after the first pass. But reading the words in the paragraph, clearly I anticipated abuse, because I disclaimed exactly what people accused me of. It would ridiculous for me to advocate age discrimination, not only because I am exactly the opposite kind of person who does that (for good reason, I did eight years of therapy to understand why I am like this) but also because at 58, I deal with a lot of ageism myself. No matter, the howlers found their handle, and they howled away, all kind of nasty shit -- fiction -- about who I am. It's okay -- I'm used to it, because I've been blogging now for almost 20 years.

It's okay, but in another way it's totally not okay. According a few very controlling people there's only one set of opinions that are valid. It's taboo to say that an employer who feels unjustly penalized might avoid risk and try to hire people who couldn't make claims of discrimination. It's obviously true if you just think a little. What happens in press releases and legal filings isn't always exactly what happens in the minds of people making the decisions.

Fact: Some portion of the wrongful termination suits are scams. Maybe it's a very low percentage. I doubt if anyone knows, because we're not allowed to discuss it in public. I do know that in this one case, the only time I've had to deal with this, it was a scam. Every time someone points a finger, no matter what the howlers on the Internet say, all reasonable people wonder if the accusations are true. If a friend is accused of sexual harassment, for example, someone you know and trust, and they swear they didn't do it, would there be no doubt? If not, then we're giving too much power to people to ruin the lives of others. Because sometimes there is harassment, and other times it goes the other way, the abuse flows from the accuser to the accused.

These things are discussed privately all the time. I believe in opening up discourse, that's why I deliberately challenge these limits. If there's a truth that's taboo, I'm the kind of person who wants to talk about it in public. We're at a point in human evolution where we desperately need to be truthful with ourselves. A small number of people controlling everyone else, preventing them from speaking, that's exactly the wrong direction for us to be going in.

That's why blogging is so important, and why we should protect the speech of people with unpopular ideas and opinions. I believe the things we least want to hear are the ones we most need to hear.

Best way to parse XML in Node.js?

  1. I have a sizable base of code that does stuff with XML written in JavaScript that runs in the browser.

  2. I want to run some of the code on a server, running in Node.js.

  3. I've created a layer between jQuery and my software. I would like to use it as-is if possible, or if not, make the fewest modifications possible.

  4. I hoped I would be able to access XML structures in the server app using jQuery or something exactly like it. Why? Well, I'm far from the first person through this space. I assume other developers want the same ability to write XML-processing code that runs in both places, without having to convert it.

  5. So, how to do it? I've asked a couple of programming friends who are fairly expert in JavaScript and the question seems to stump them. There are of course ways to walk over XML structures, but not jQuery.

  6. I thought then I should post this question publicly and ask for advice from readers of this blog.

Update: For some reason I don't see people recommending this. Why? Or maybe I'm missing something?

The second guy makes the standard

Another thing about standards that most people don't realize is that it's not the first guy who makes the standard, it's the second guy.

Seth Godin calls him Guy #3 because in his video it was the third guy who made the dance movement happen, not the first or the second. But it's the same story, very graphically demonstrated. Go watch the video, it'll inspire you, I'm sure of it.

How I tell the story

When I tell the story it goes like this. Someone has to stand up and say "This is the way we'll do it." Usually the second guy says "Fuck you, this is the way to do it" and proposes a method that's not compatible with the first guy. We don't get a standard. That's why they're so rare.

However had he said "Excellent, let's make our stuff work together!" then boom, it works. You get a standard. It's the cooperative nature of the second guy that gets the ball rolling down the hill. It makes it much harder for the next guy to blaze his own trail.

So the second guy can't kill the standard, exactly -- but he can ratify it. The second position is imho the more powerful one.

How this applies to RSS

In 1997 I came up with a syndication format for my blog, and implemented it.

Early in 1999, Netscape came up with an incompatible format. They were the usual second guy. I guess they figured, we work for a big company, so we don't have to pay attention.

At first, for a brief moment, I was angry. But then I saw how to turn it around.

I said OK -- I'll do it your way. So I got to be the first guy and the second guy.

It worked. My blogging software which a lot of people were using, was compatible with the format Netscape proposed, which a handful of big pubs were using. A level playing field and a small but critical mass. From there, I think -- it was pretty much assured that something would happen. That it was so huge was due to a very powerful user coming on board.

Users make standards

In my experience, users make standards, although I'm fairly sure that they don't understand that they do.

  1. RSS coalesced around RSS 2.0 because that's the version the New York Times feeds used.

  2. Podcasting became a phenomenon because NPR used the RSS 2.0 enclosure format to distribute its radio programs over the net.

I don't think either of those would have happened without the support of these two leading editorial organizations. At the time, there were very few programmers in either shop (2002 for the RSS and 2004 for podcasting). So you don't need to spend a lot of money to have major influence.

In the first case, the Times gave the rest of the news world something to emulate, and that's exactly what they did. And NPR was and is such a huge part of the podcast-like content, that whatever they did was bound to be the standard.

In each case there was a single decision-maker, someone who was listened to and respected in their organization. Martin Nisenholtz at the Times, and Tony Kahn at NPR.

If I wanted to displace an installed standard like RSS (I don't of course) I wouldn't look to nerds to make it happen. I'd look for an editorial organization that for whatever reason agrees that RSS needs to be replaced. I don't guess you'd find many. Hard to imagine why they would care.

A picture of a slice of cheese cake.

Update: Scott Gatz, in a tweet: "When we integrated RSS into MyYahoo, we called media cos & showed them NYT & the RSS2.0 spec, we also made all our own feeds 2.0." Exactly what I would have done in his shoes. When you see the opportunity of a new standard, jump on board with both feet. Each level has its own rain-makers. Scott and his team at Yahoo also, certainly, brought RSS 2.0 to new highs. We all won because of their contribution.

There's more: The second guy makes the standard.

They love horse shit

These horse shit lovers were stationed on the island in the middle of 59th St at the southwest entrance to Central Park. I love the audacity and honesty of New Yorkers. They love horse shit and they don't mind if you know it.

A picture named horseShit.jpg

Horse shit is pretty popular, judging by the amount of it in the world, esp on the Internets. But most horse shit purveyors are not so honest as to hold up a sign advocating their passion.

Seriously -- the new mayor should pick his battles. The horses of Central Park are lovely throwbacks. Sure they shit on our streets. But it's a vestige of Old New York. In a city that sheds its past, quickly without nostalgia, it's nice to see one small tradition persist. What the fuck, let the horses shit, and we'll deal with it. NYers are good at dealing with horse shit.

Update: Here's a picture of one of the controversial horses.

Civilization is made of interop

Interop is the most precious thing.

Interop means that I can give you a text file, and you will have a program that can open it. Interop means you can pull into any gas station and put fuel in your car. Interop means you can give me $100 and I'll give you my Knicks ticket, and when you go to the arena, they will let you in.

In each of these cases, text files, gasoline, pump nozzles, cash, tickets -- you're using the fact that long ago people agreed to do things the same way so that multiple vendors could provide a product or service. So an entire industry could develop. Interop is all around us, it's why things work, when they do.

Imho they should teach interop in business school, because without it there would be no business. But when it comes to tech, people who are supposedly experts in business seem not to understand the first thing about it.

In the land of the web, the basis for interop is fragile. We have a few formats and protocols that make it work. Yet all around us are tech companies undermining it, far too many to list. You'd do better by asking which tech companies are doing anything to improve interop -- there aren't many.

Take a stand for interop. Not throwing out interop for something that will supposedly be much better some time in the future. When you have interop, protect it and nurture it, because it's the least likely thing to happen. Once you let it go, it's pretty much impossible to get it back.

The "noteblog" format

I say the new Scripting News is a "noteblog," to differentiate it from a Twitter stream and a WordPress, Blogger or Tumblr-style blog.

The new format is inspired by the pre-2006 format of Scripting News.

I switched from that format because:

  1. Google Reader didn't like my feed with little snippets, they insisted that a blog post be a title, link and description.

  2. Twitter looked like the future, with their API and Internet-scale notification system.

Now Google Reader is gone, and Twitter doesn't look like the future anymore. Most of my ideas don't fit into 140 chars, and the Twitter API stopped being a place to build new user experiences.

Now that Fargo 2 is maturing, I brought back the shorter posts, and mix them with links, to writing on my own site, and elsewhere.

For writing that's not full enough to be a blog post, but too full to fit into 140.

I would call them medium posts, but someone else already thought of that.

I'm trying to think but nothing happens!