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.
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.)
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.