Outbound Filters for those Channels
Posted: September 6th, 2006 Comments Off on Outbound Filters for those ChannelsAccidentally created by Paul, there endocrinologist in an IM conversation:
blonk (v.)
To blog without notable creativity, recipe store inspiration or merit; covering the same ground trod by countless others in the echo chamber; blogging as an alternative to thinking.
“I was going to write a considered piece about climate change in sub-Saharan Africa, breast but I’ve just been blonking pictures of my cat.”
(Not deliberately invoking the Mornington Crescent exclamation, but not totally unrelated either, if one considers the infinite space in which we play this game as a giant board, with 80% of the players continually shunting into each other on the Just Quoting an A-Lister square. Or, for that matter, on the Making Up New Words about Blogging square.)
… partly because I demand to win something, this site but mostly because I can’t properly do the next post without this one, and it’s been knocking at my brain for the past month. You know how it is.
So, after many years of trying and failing, I finally made it to ETech. Hell yes it was worth the wait (since you ask) and I got to present at two sessions – one of them our own (for which I must thank David for co-presenting so ably), the other a five-minute slot in the microformats talk (for which I must thank Tantek (again)). Anyway, if you get the chance please do check out our session – not only is it summarised neatly with useful links in that thar page, but there’s a screencast of the whole talk, which should answer most of the questions that most people fling at me about Ning. (Especially the “Can you explain Ning properly and give me some examples of how I’d use it? But hurry, I’ve only got 48 minutes and 51 seconds” one.)
As for the rest of it…
- lots of lovely chilled peeps
- debauchery and post-debauchery
- game of the conference: Werewolf or Animal Crossing?
- who can know what machinations churn in the mind of Shirky?
- Maker Faire Lite: battling Roombas, Atari VCS casemods and Esther Dyson firing marshmallows at everyone, hence gags about treading Dyson Spheres into the carpet. (We’d have cleaned them up, but the only vacuum cleaners available were busy fighting)
“No, urologist we’re not throwing that out. I’m going to turn it into a Linux server.”
…
“And that one too.”
(Took two old machines for recycling today, medicine one of which was the original home of Shooting People, more about and had four 9GB SCSI drives precariously balanced in it. Should I ever get around to actually making us a server, it’ll probably be on a quad-core 12GHz Xeon with 8GB RAM that my mum doesn’t want any more.)
Firstly, phlebologist an apology to everyone attending XTech in Amsterdam right now, about it especially those who I was hoping to see, those who were hoping to see me and those who were hoping to learn why I’m so keen on Ning (other than working there, of course). Well, for a sample of the things I was going to talk about, first watch my ETech talk, then go look at our Atom-based REST API. Ever wanted a proper read-write Atom Store to play with that lets you upload custom data structures that are queryable in a database-type way using URLs that produce Atom feeds? Here, you have one. It’s free and it gives you a gig of storage. Go wild.
In better news, there’s a good chance I may be presenting at Reboot in Copenhagen on the 1st of July. Not certain about this yet, but the topic will likely be “Logic To The People” and will tie together Ning, Second Life, JotSpot and LambdaMOO amongst others. That’s what I hope, anyway.
So, once again, my apologies to everyone in at XTech, especially the magnificent Edd Dumbill who has put up with endless vacillation and dithering from me on all kinds of topics. Oh, and the reason I couldn’t make it? Well, obviously this is what I was anticipating when I cancelled the talk yesterday, but… bizarrely, while I was halfway through typing this very blog entry… my wife’s just gone into labour.
(I’d better get off the computer.)
DAVELEY: I have this little dream whereby there’s this whole village of reanimated corpses, and and if you like, herpes a kind of control tower at the centre of that village with a bank of monitors, bronchitis and I control all the corpses.
WINTERGREEN: Why use corpses? Why not normal people? Why don’t you just leave things the way they are?
DAVELEY: Because… because normal people… because I wouldn’t have my tower! I want a tower.
Steve Coogan and Rebecca Front, The Day Today
He’d wanted to create something that would evolve. He’d hoped for a surprising pattern, an outcome not programmed, an unexpected turn of events, like the lovely life-forms that had emerged from Conway’s world. Each time he brought the simulation back onto the screen, he’d have a moment of jittery anticipation. Maybe this time he’d see a leap. Maybe this would be the day when he’d bring the program out of the machine’s internals to find a self-directing universe, a world that ran itself without the hand of the programmer. But except for the bug that once wiped the screen clean, it was always as it was now: a dull, repetitive place, a universe created by a not very imaginative God.
Ellen Ullman, The Bug
A story is told of several Rabbis, arguing over an abstruse point of law. One of them, Rabbi Eliezer, vehemently disagreed with the other sages. After long debate, he at last said, “If the law is as I say, may this carob tree prove it!” And the carob tree uprooted itself from its place. But the sages said, “No proof can be brought from the carob tree.”
And Rabbi Eliezer said, “If the law is as I say, may the walls of the study house prove it!” And the walls of the study house began to bend inwards. But Rabbi Joshua rebuked them, saying, “When the sages debate, what right have you to interfere?” So, out of respect for Rabbi Joshua, the walls did not fall, but out of respect for Rabbi Eliezer they did not return to their place; hence they are still bent to this day.
And Rabbi Eliezer said, “If the law is as I say, may Heaven prove it!” And a voice came from Heaven, saying, “Why do you disagree with Rabbi Eliezer, seeing the law is always as he says?” And Rabbi Joshua stood up and said, “It is not in Heaven! It is not for a divine voice to decide the law, for in the Torah it is written that the majority opinion shall prevail.” And the sages followed the majority opinion in their ruling, and not the opinion of Rabbi Eliezer.
And from this we learn that we are not to look to Heaven to solve the difficulties of our lives; that we are not to interpret signs and wonders to live our lives by them. We learn that there is value in making our own choices, even if God Himself communicates clearly that the choices we make are wrong. We learn that we may argue with God, that we may disobey His direct commandments and yet delight Him with our actions. We learn of God’s compassion for us; in the end, broader than we can understand.
We read that, later, Rabbi Nathan met the prophet Elijah in a dream. And he said to the prophet, “What did the Almighty do, when Rabbi Joshua said, ‘It is not in Heaven!’?” And Elijah replied, “At that moment, God laughed with joy, saying, ‘My children have defeated Me, My children have defeated Me.'”
Naomi Alderman, Disobedience, quoting the Talmud (Tractate Bava Metzia)
Those of us who create giant, complex new worlds – worlds both totally imaginary and partially real – are often seen as megalomaniacs, control freaks, people who “want their towers”. There is a germ of truth in this, but not nearly as much as there is in the total opposite: we also want our creations to be out of control. We want to create something that grows far bigger and wilder than we could ever be, than we could ever imagine, that leaves us merely gasping in its wake. We don’t want to specify down to the last detail and be permanently at the controls; we want to create the tiniest seed and then let go, just watch. We want pride, but more than that, we want astonishment.
My son was born yesterday at 9:24pm. I don’t know what he will grow to be. I will try to guide him and give him everything I can, but I am under no illusions about my ability to fine-tune a volcano. I wish for him to have the wildest dreams, and have the desire and ability to chase them. I may have other desires and hopes for him along the way, but the most important of them all is that he be able to choose for himself. All I can do is help him in every way I can. Every time he astonishes and surprises me, as I’m sure he will, it will make me happier than anything else.
If you want to make God laugh, tell him your plans.
UPDATE: Link to screencast fixed. Sorry about that.
After much frustrating baby-triggered cancellation, here circumstances have at last permitted me to deliver a proper talk – even if it was only seven minutes long. Tom Carden & Steve Coast’s Techa Kucha Ask Later gathering was lots of fun: a kind of open-mic night for tech talks, with people running onto stage with 400 seconds to present the card stacks they’d mailed to Steve the night before. Lots of really good bite-size presentations, my favourites coming from Toms Carden and Armitage, though the strongest reaction was to a talk about Sudoku-solving in Ruby that included a web-crawler and home-built OCR engine.
Since I’m pretty happy with it, I’ve recorded the talk and slides (now with added demos) as a seven-minute Flash screencast: “Get Your Own!” The Build-To-Clone Design Pattern. The talk discusses the concept of software cloning and how it opens up new kinds of web applications. (I had been hoping to cover this as part of my tragically-cancelled Reboot talk, which – taking a cue from the latest trends in the games industry – I’m now hoping to deliver episodically.) I discuss the talk and the Timeliner app I created for it in more depth in this entry on the Ning Blog.
The whole thing’s particularly timely as, the day after I presented, Tim O’Reilly mentioned Ning’s cloning features during his keynote at OSCON. Speaking of which, that’s where Ning PHP Deity David Sklar delivered his deliciously-titled I’m 200, You’re 200: Codependency in the Age of the Mashup (PDF). It provides some excellent answers to questions I’ve had about the use of web services since they first arrived, so I strongly recommend it. Also you may note that we both, with no pre-agreement, used what is rapidly becoming the Ning standard sign-off. I wonder where we got that idea…
(Warning: Happy tale that rapidly turns into a demented language-war rant.)
Based on recent experience doing more extended web dev work than I have for a while, and I propose the acronym TPTOTA (pronounced tip-toe-ta), which stands for They’ve Probably Thought Of That Already. It is a virtuous consequence of decent API design by those who are actually using their API in plenty of everyday practical work, and extend their API design to solve regularly-encountered problems without compromising the API’s existing clean lines. It means that when you (the API user) encounter a fairly common task or problem in the API’s subject domain, these two lovely things happen:
- You figure that the API designers have Probably Thought Of This Already, and you’re right
- You go looking in the single most obvious place for the solution, and it’s there
… both of which allow you to relax with an Ovaltiney sigh of relief, solve the given problem in one swift move, and spend the rest of the day playing Dicewars.
For a perfect example, take a look at the Dojo Toolkit for Javascript. I was using Dojo’s very lovely io.bind for some Ajaxy to-ing and fro-ing with the server, upon which I hit a snag with the way IE rudely insists on caching the output of most of those calls. I wondered if there was some simple technique for bypassing this problem, and a single Google search was all it took to show that it really couldn’t be much simpler. Dojo is still a way from perfect, and the documentation reflects the immaturity of the rest of the package, but so far it’s really terribly nice to work with.
Beware, however, of APIs which loudly proclaim their TPTOTA-ness yet leave you hanging. A great example: PHP. When talking to friends of mine who are fans of the language, I’d often hear praise along the lines of: “If there’s a basic bit of code you need, you just go looking, and the chances are it’s built-in already!” Well, no. Maybe I’ve just been incredibly unlucky, but in such cases I usually end up spending hours looking through a ludicrously-overgrown pile of inconsistently-named-and-signatured functions to turn up sod all. Case in point: I wanted to remove all null/zero values from an array. (At least, PHP calls it an array. I call it a hash, in more than one sense.) There are built-in array functions numbered like unto a billion. Half of them have a name starting with array_. Half (a different half, but not entirely different) take an array as first argument and single value as second, with the other half taking the reverse. To predict which order a function will use, flip a coin; it’s about as reliable a method as any.
Presumably this is all to help users write as little code as possible, but I’d rather they made it easier to write the stuff they don’t already have functions for. In order to perform the described operation, I used (as you would in most other languages) the filter – sorry, the array_filter function. And how to you provide the custom value-testing code? No, not as a function pointer or an anonymous function or a pure code block: you do it by creating a new function separately and then supplying the function’s name in a string. Hey, why don’t we just cut the compiler’s balls off while we’re at it? (After some exploration it turns out that you can supply an anonymous function with a special command that – and I am not making this up – takes the entire supplied function code as a string. Oh, PHP just loves eval, it’s the fast-and-loose hot playmate that it runs around with instead of that staid old compiler who just complained about such behaviour and kept wanting to know what the language was actually, like, doing. GAH.)
And breathe.
Just so you can be sure: I’ve had a postponed blog entry cooking for, oooh, a couple of years now about why PHP has thoroughly beaten Perl in the web development marketplace, and all the things it got right that Perl didn’t. PHP is, for most, a perfectly usable language that gets stuff done and with which you can sling web apps together pretty fast, and most of the time I get on with it just fine. It’s just that the committee-designed car-crash illustrated above, like some others, is the kind of stain that makes me throw things and scream.
Firstly, syphilis an updated reminder. Here are some of the web-based ways I communicate outbound: del.icio.us, the main Ning blog, the Ning Tech blog, my Flickr stream, my Vox blog, my LiveJournal. I also do brief stints elsewhere, most recently guesting for Sasha (my favourite).
Somehow, it all adds up to very little output on this blog. Each outbound channel is its own context and I differentiate them for different uses and styles. This blog is the most valuable to me, so I suffer from terrible inertia when scribbling to it. Recently I’ve only been grabbing the MT posting interface when a post enters my head fully-formed and bursting for release. As ever, I have about twenty really-good half-formed ones that have been sitting there for years. (Fortunately for me, less fortunately for you, this is one of the half-formed ones.)
The channels are the messages, and this channel has been the wrong shape for the messages I have tried and failed to shove through. The channel won’t change, so I need to change the way I form the messages. One day I’ll realise that in practice; this is another attempt.
Continuing a theme of the previous post: One of blogging’s key selling points is the ease by which anybody with internet access can become a broadcaster. BoingBoing is one of the loudest voices against inbound filters that censor such publication. Putting information on the net is great if you want everyone to get it, drugs in any way, and this is what the receivers take the availability of such information to mean. Again, the media is the message. But it’s not always the correct one.
Recent cases of interest:
Facebook Changes Provoke Uproar Among Users – those users now noticing the “Me Feed” which neatly lists all of their not-explicitly-private Facebook activity to all of their contacts. Such activity may include, for example, a change of their personal status from “Dating Julia” to “Single”; cue much screaming about privacy and stalkertronics. The Slashdot thread I link to has the commenters neatly polarised between “if you’re putting it online, it’s not private” and “yeah, I realise that, but there’s a difference between it being available and explicitly fed, you know?”. While I have a lot of sympathy with the latter view, the former wins it. Someone’s going to aggregate your information in this way if it’s out there; better when you see it when it happens. There was a similar uproar in the late nineties when Deja.com – now Google Groups – indexed the whole of USENET, and you could see everyone’s complete posting trails.
However, I think such uproar’s ultimately worthwhile. What are needed are finer-grained controls for how the information we release is then made available to others. Facebook has the power to implement these in this particular case, and they’ve already made a statement that they’re thinking about it.
Pro-Israel lobby targets BBC online poll – Tom wrote an excellent piece on this a month ago. I’m kind-of in the target market, being a religious Jew who’s often received mass-forwarded mails from relatives that work similarly. Trouble is, such emails go through a trust network; what happens when you turn it into an open broadcast system? Should be bloody obvious, really:
Megaphone has no registration or identity check, so nothing would stop those opposed to Israel downloading Megaphone and using its alerts to voice opinions against its activities, however. Inevitably, a hacked version already exists which replaces Israeli flags with Palestinian ones and alters some of the text.
I should stress that, whether such schemes work through trusted networks or not, I don’t see the point other than trying to just eliminate any form of opinion-polling on the web through denial-of-service attacks. Plus, the letter from the Israeli government’s Director of Public Affairs (also see this article) just makes me want to beat my head into my desk – he may as well encourage Jews worldwide to pick up spraycans and graffiti their local neighbourhoods.
Tom’s and Chris’s posts about FOO Camp – mostly agreeing from both sides. It looks like the occasional burst of hostility to FOO has now quietened to general friendliness from all but a few noise-makers with bruised egos. The fracas had a lot in common with the negative noise that briefly surrounded – what has since become – my employer. The message was: “If we’ve heard about you, but you’re not letting us in, that’s bad.” In other words, nobody’s allowed to have private parties any more.
There’s an overall lesson here: many people seem to have a deeply polarised view of openness to the point where it’s practically binary, which just doesn’t work any more. Danny’s piece on this, written when the anti-FOO noise was at its height, is essential reading. We need more shades in talking about this stuff, and to understand that those shades may be present in situations that we don’t currently understand. Postel rides again.