In a Quora answer I went back to a theme that I mentioned when discussing Bret Victor a few months ago.

Here’s something that struck me yesterday when reading Out of the Tar Pit which is a very good essay that seems to signal the direction that many smart people think software development should be evolving in : namely giving up on as much explicit state and control flow as possible and moving towards a declarative style or saying just what your program should produce without worrying about how it does it.

I can’t overemphasize how big this idea is. Most important and smart people thinking about software will sign up to the idea that we need to move towards more functional languages, more declarative style, abandon more state and explicit control flow. Perhaps even separate the essential logic of what you want done from the “accidental” hints that can enhance performance into separate languages / parts of the system.

And yet …

And yet, the most widely adopted, commonly used example of this separation of telling what the program should do in one language and performance hints in another, (acknowledged in the paper) was the good old fashioned relational database written using SQL; which did, indeed, allow programmers to declare what they wanted their queries to deliver without worrying about access paths, control flow or performance. And then database admins worked behind the scenes profiling, creating special indexes etc. to improve performance.

Now, since this important paper was written, there’s been an absolute revolution in database circles, called the NoSQL movement, a wholesale rejection of the relational database model and its replacement by systems that hark back to the hierarchical and network databases of the late 1960s, Although NoSQL was adopted by people working on enormous systems across hundreds of thousands of machines, its popularity is so great that a new generation of programmers reaches for NoSQL database solutions (and explicit modelling of data-structures and responsibility for traversing access-paths etc.) more or less by default, even for small prototypes.

So, I’d say that NoSQL is one of the most successful “contrarian” movement. It’s massively popular and “trendy” while going against everything that many smart programmers think and say they want, and what many people had forseen as the future of software development.

It signals either that the argument in Out of the Tar-Pit is wrong : namely because performance is so important that programmers never want to give up explicitly modelling state and defining control-flow, or that people’s intuitions are badly broken.

Having split the Ruby and node.js versions of the Smallest Federated Wiki, seems like authors are now moving to further refactoring.

Seems like the client code, and maybe some plugins, are getting separated to further projects.

Two random OWL thoughts :

– right now, OWL is basically functional when you do the majority of writing / editing on a laptop. And use the OWLdroid version for reading and minor edits. That’s kind of obvious, but worth spelling out. What would a “tablet-first” OWL look like?

– OWL is NOT the long-term name for this thing, it’s a temporary placeholder. The world is full of too many things called “OWL”. I’m still pondering what the real name will be.

Posted in OWL.

Bill Seitz notes that Instapaper can’t grab the meatier plaintext from Markdown files on GitHub.

I’ve noticed that GitHub doesn’t seem to play nice with other services at all. It breaks the WordPress bookmarklet I use (to write this post, for example).

No idea why. Is it a bug or a deliberate thing?

Having contrasted Quora, positively with StackOverflow, I find that Quora is also starting to play the “word-shaping” game by which either an algorithm or a tone-deaf moderator decides to constrain how you are allowed to express your questions 🙁

No idea why they really feel the need to do this. But it basically has the effect of driving out all personal voice, subtle context to your question, potential for jokes, creative wordplay, malapropism, coining neologisms or anything else that keeps language alive and a delight for the intelligent mind.

Here’s my original (rejected) question :

Should I learn Clojure for Android programming?

I’d like to get into Android programming. But every time I play with it, I find it full of that verbose Java bureaucraticality that we all know and hate.

I’d like to work with a nice modern, higher-level language. (I’m mainly using CoffeeScript / Python these days) So, would it be worth me learning Clojure to do Android programming?

By this I mean two things :

– can you write Android apps. in Clojure at all (is the tooling there?)

– does Clojure buy you anything in the Android world? Or will I still be making the same long sequence of imperative calls to the same Java libraries that I’d be doing in Java? Ie. for this kind of application there isn’t much “compression” in Clojure compared to Java

I’m not saying this is a great question. Or perfect example of writing. But it is MY question, the way I wanted to phrase it.

Update : Got into a certain amount of argument about this. (Partly because I’m complaining.)

Here’s what I found myself replying :

If people prefer not to answer the question, that’s their prerogative. No problem.

The point is, is Quora going to set a “maximum sophistication” limit on questions, so that people who are capable of understanding a question that requires three paragraphs to capture its full meaning, are nevertheless prevented from writing or reading such questions because Quora has decided that only single-paragraph questions are allowed?

I think that will be a catastrophic loss. For me because I like Quora. And, I think for Quora, because it will become a less interesting place to be. I’ve already seen this happen on StackExchange. A place where I used to hang out every day, but where I now spend as little time as possible.

Dave Winer tweeted that a “new webstack” was being built. I agree.

A big question is how to support / engage with Mozilla. To me, it’s clear that the new stacks needs to be more peer-to-peer and less dependent on other people’s clouds. And for that to work well we need support from the browser makers. Mozilla is the best hope, with the least currently invested in its own cloud. And no strategy to lock people in.

How can / should I be supporting Mozilla this year?

Update : Interesting to see this intro to Bugzilla. Gives an idea how the Mozilla is networked together.