July 04, 2009

Simon Willison

A quote from Alan Storm

Yes, it’d be nice if everyone kept up to date on the progress of the various W3C working groups. They don’t. There are a lot of people who asked what professional markup looked like and were told (right or wrong) that XHTML was the future. So they went ahead and learned XHTML, built their websites and chose watching a DVD or spending time with their kids over watching Mark Pilgrim and Sam Ruby do battle over Postel’s Law. Now all of a sudden they’re told XHTML is dead. Some wailing and gnashing of teeth is to be expected. What’s needed is less “boy aren’t I smarter than them” snideness, and more Hey, here’s what’s up.

- Alan Storm

July 04, 2009 12:51 PM

Jeffrey Zeldman: XHTML WTF

Jeffrey Zeldman: XHTML WTF. Reading the comments, it’s scary how many people are totally ill-informed about HTML5 and XHTML5.

July 04, 2009 01:22 AM

July 03, 2009

Graham Lee

Just because Brucie says it...

Bruce Schneier claims that shoulder-surfing isn't much of a problem these days.



Plenty of people discovered "my password" at NSConference, so I disagree :-) (photo courtesy of stuff mc).

by leeg (noreply@blogger.com) at July 03, 2009 10:59 PM

Simon Willison

FAQs about the future of XHTML

FAQs about the future of XHTML. The XHTML 2 Working Group charter will not be renewed after 2009—as far as the W3C are concerned, XHTML5 is the future of XHTML.

July 03, 2009 01:37 AM

July 02, 2009

Simon Willison

Newspaper Club - A work in progress

Newspaper Club—A work in progress. “We’re building a service to help people make their own newspapers. This is the blog where we’re alarmingly honest about where it’s all going wrong.”

July 02, 2009 07:34 PM

Video for Everybody!

Video for Everybody!. Reminiscent of the early days of Web Standards, Kroc Camen has created a fiendishly clever chunk of HTML which can play a video on any browser, starting with HTML5 video then falling back on Flash and eventually just an HTML message telling the user where they can download the file. No JavaScript to be seen, but conditional comments abound. Requires you to encode as both Ogg and H.264, but Kroc includes details instructions for doing that using Handbrake.

July 02, 2009 07:33 PM

Garrett Coakley

At the book fair

At the book fair

The first shots from the Zeiss Ikon I bought earlier in the year have been developed. I think I have a new favourite camera.

by garrett at July 02, 2009 12:56 PM

Simon Willison

Modernizr

Modernizr (via). Neat idea and an unobtrusive implementation: a JavaScript library that runs feature tests for various HTML5 features (canvas, box shadow, CSS transforms and so on) and adds classes to the HTML body element, allowing you to write CSS selectors that only apply if a feature is present. Detected features are exposed to JavaScript as boolean properties, e.g. Modernizer.multiplebgs.

July 02, 2009 10:56 AM

Codecs for <audio> and <video>

Codecs for <audio> and <video>. HTML 5 will not be requiring support for specific audio and video codecs—Ian Hickson explains why, in great detail. Short version: Apple won’t implement Theora due to lack of hardware support and an “uncertain patent landscape”, while open source browsers (Chromium and Mozilla) can’t support H.264 due to the cost of the licenses.

July 02, 2009 10:16 AM

Natalie Downe

A quote from Tom Morris

"I love you, Verified by Visa, you protect my credit card details from tigers and from MRSA!"

- Tom Morris

July 02, 2009 07:18 AM

July 01, 2009

Graham Lee

KVO and +initialize

Got caught by a really hard-to-diagnose issue today, so I decided to write it down in part so that you don't get bitten by it, and partly so that next time I come across the issue, I'll remember what it was.



I had a nasty bug in trying to add support for the AppleScript duplicate command to one of my objects. Now duplicate should, in principle, be simple: just conform to NSCopying and implement -copyWithZone:. The default implementation of NSCloneCommand should deal with everything else. But what I found was that there's a class variable (OK, there isn't, there's a static in the class implementation file with accessors) with which the instances must compare some properties. And this was empty by the time the AppleScript ran. Well, that's odd, thought I, it's only being emptied once, and that's when it's created in +[MyClass initialize]. So what's going on?



Having set a watchpoint on the static, I now know the answer: the +initialize method was being called twice. Erm, OK...why? It's only called whenever a class is first used. It turns out that there were two classes with the same IMP for that method. The first was MyClass, and the second? NSKVONotifying_MyClass. Ah, great, Apple are adding a subclass of one of my classes for me!



It turns out that TFM has a solution:





+ (void)initialize

{

if (self == [MyClass class])

{

//real code

}

}





and I could use that solution here to fix my problem. But finding out that is the problem was a complete pig.

by leeg (noreply@blogger.com) at July 01, 2009 08:28 PM

Simon Willison

PubSub-over-Webhooks with RabbitHub

PubSub-over-Webhooks with RabbitHub. RabbitMQ, the Erlang-powered AMQP message queue, is growing an HTTP interface based on webhooks and PubSubHubBub.

July 01, 2009 08:22 PM

Address Extractor

Address Extractor. Running on App Engine, an address extractor web service using code from the EveryBlock open source release.

July 01, 2009 08:03 PM

EveryBlock source code released

EveryBlock source code released. EveryBlock’s Knight Foundation grant required them to release the source code after two years, under the GPL. Lots of neat Django / PostgreSQL / GIS tricks to be found within.

July 01, 2009 08:01 PM

Ben Werdmuller

Building the user-centered web

The following post contains my notes for a talk I gave at the Hauser Center for Nonprofit Organizations at Harvard University on June 25, 2009.

What is a social network?

I would like to reclaim some language:

Social is an adjective that means relating to human society and its members.

A network is an interconnected system of things or people.

Therefore, I’d suggest that we can define a social network as just being an interconnected system of people.

The audience of this talk is a social network; so are your friends, colleagues, interest groups and so on. Social networking tools facilitate social networks. The universe of social tools certainly includes web applications with social functionality, but it also includes structured face to face interactions, telephone, post, SMS, email. In other words, the web is just one possible tool for this purpose – albeit a very effective one.

If you build it, they will come

You can’t install a social networking tool and instantly expect usage: Field of Dreams is not a good model for community development. The web is littered with ghost sites created using Ning, Elgg and more that have been established in the hope that a user-base will magically appear; however, if your main selling point is the social network itself, nobody’s going to join until that network of people exists and is actively using it. It’s a chicken-and-egg problem.

Therefore, you either need to have an existing network of people to facilitate interactions between (for example, when Facebook launched at Harvard) or compelling functionality that is useful without a network of existing users (for example, Delicious).

If we’re creating a tool that’s useful for the first user who signs up, without a pre-existing social network, then what we’re really talking is a software application that uses the web as an interface, and happens to have social functionality as one of its features.

The web as applications

When the web was conceived, it consisted of documents and pages linked with hypertext: linked words and phrases that, when clicked, would load another, relevant document. Each page had its own Uniform Resource Locator, which allowed you to return to that specific page at any time. Each page could be a destination in itself, and although the sites (collections of pages) could be linked together through hypertext, each one had no need to know about your activities elsewhere on the web. Why would they? Documents don’t have memory; their role is simply to impart information.

Step forward to today, and the web is not entirely made of pages: applications now represent a large amount of the web. (Princeton WordNet defines an application as “a program that gives a computer instructions that provide the user with tools to accomplish a task”; Google Docs, Remember The Milk, Flickr, Delicious etc are all applications by this definition.)

The benefits are tangible: you can access an application’s functionality from any web-compatible device, anywhere in the world. You’re no longer bound to the software you happen to have installed on a particular machine, and you no longer need to worry about whether you’ve remembered to save a particular file onto a particular drive. Because of historic resource limitations, web applications tend to be easier to use, and entirely bypass the need for IT departments, which have unfortunately earned a reputation for being obstacles to productivity in many organizations.

This change of web usage has been reflected in the ongoing development of HTML, the markup language that all web interfaces are written in. The first four versions were largely orientated towards documents; however, HTML 5, currently in development, is the first version that explicitly contains functionality to support web applications. That includes offline storage and usage, sessions, and more advanced interface features. However, aspects of the document-orientated model remain.

Silos of information

Each application is its own atomic destination with its own URL, and is by default only aware of data created within it. That means we need to register for each application we want to use, fragmenting our accounts over potentially hundreds of products and company data centers, and that the documents, files and data we create within them can’t easily be shared with other applications. On my desktop, I can write a document in Word and open it in OpenOffice, or take a Paint doodle and load it in Photoshop, but there’s no easy, generic way to take my bookmarks from Delicious into another bookmarking tool, or to take my Google Docs and open them in Acrobat.com.

Currently, each web application is like a silo: they exist on their own, and if they interoperate at all, it’s through specific links between applications that have to be individually developed. Certainly, data created in an application stays in that application; sometimes you can check your GMail address book for contacts in order to find existing friends on a service you’ve just signed up to, for example, but it’s rare that you can actually export data fully into another product. As many of these services are free, a significant portion of their business models revolve around being able to control user-contributed data, keep users coming back, and sell user-generated activity data for marketing purposes. (One has to question whether the market for personal details will continue to be profitable, or whether, like the web advertising market before it, it will saturate and crash.)

In a social networking tool, the site model means that your contacts, the information you share and any detailed access permissions all relate solely to the application they were created in. However, collaborative spaces in social web applications are like documents: they’re one of the currencies of the social web. Just as I need to be able to use my wordprocessor of choice to edit a document, I need to be able to use my social tool of choice to collaborate with others.

Turning the model upside down

Right now, we have to register with each application we want to use. What if we required each application we used to register with us, in digital identities under our own control?

What if, using these identities, anyone could connect to anyone else, and anyone could store their data anywhere as long as the storage provider followed the same broad standards?

The web itself would become a social networking tool.

This is far more flexible, and future-proof:

  • Your ability to collaborate is not subject to a single company’s success: social functionality and application infrastructure are inherent in the web itself
  • The possibilities for collaboration are not subject to technology beyond common open standards, which can evolve
  • A wider range of application possibilities is ensured, because web applications gain the ability to interoperate in a general way
  • Privacy and user control are established by allowing a person to determine which application has access to which data

By establishing a general standard for social application interactions, the services and technologies used to make connections become less relevant; the Internet is people, one big social network, and users no longer have to worry about how they connect. We can all get on with communicating and collaborating rather than worrying about where we connect.

User-centered identities

Under this model, providing the software that hosts your digital identity becomes big business. This hasn’t gone unnoticed by the main service providers, and they’re already fiercely competing to be your identity on the web:

  • Facebook wants your central identity to be a Facebook account (and arguably have made the user-centric model for the web part of their strategy for a very long time)
  • Google wants it to be a Google account
  • Twitter wants it to be a Twitter account
  • Microsoft wants it to be a Live ID
  • OpenID want it to be any OpenID-capable URL

Because I use all of these services, the result is a very complicated identity space. These are a subset of my profiles:

For identities to be usable as a generic standard, you should be able to use any of these – or all of them. Nobody has just one facet (or persona) comprising their identity; everyone has a collection, representing the different parts of their lives. Ben Werdmuller the web strategist for hire doesn’t need to be connected to Ben Werdmuller the Doctor Who fan, who in turn doesn’t need to be connected to the Oxford resident. They can be connected if I choose to make them, but separating parts of your life is part of a user’s control over their identity.

However, that needs to be context-specific, not application-specific. Currently, for example, my Facebook account tends to be personal, while my Twitter tends to be professional. That doesn’t make sense: in order to write personally on Twitter, I either have to accept the collision of those two parts of my life, or I need to create an entirely separate, fragmented Twitter account. Wouldn’t it be better to be able to control who sees which interactions, and choose tools based on the functionality they add to a conversation? Otherwise you have the situation I present above: one identity per communication context per application. That will quickly become unmanageable, and the web will be littered with dead profiles.

Conversely, I believe the future of the web is in atomic digital identities based on permissive, open standards, linked together as an application framework.

How do we make this work?

Problem to solve: user control

First and foremost, the framework for decentralization must be established – in other words, the actual social mesh standards that will make it possible.

Technical mechanisms need to be established for controlling access to a resource or collaborative space, which should be easy to use without removing any of the flexibility of the platform, and should allow for the maintenance of multiple personas.

Another part of access control is allowing a resource to expire gracefully. It’s important to know when to lose data: sometimes documents, resources, spaces, personas or entire identities may be transient and only required for a certain length of time. There’s no need for everything on the web to exist indefinitely; currently, rigorous indexes like Google ensure that much of it does.

Finally, the tools and standards we create must be permissive of goals, content and structure that we might not have thought of. There certainly doesn’t need to be an overarching structure or taxonomy between individual identity spaces, and constraining the technology to a rigid set of activities and data types would limit the scope of the platform.

Problem to solve: ownership

Existing web applications tend to have a single-ownership model for resources. However, Silona Bonewald rightly pointed out to me that this isn’t always the case, and in a free-flowing social mesh, multiple ownership needs to be represented. For example, all collaborators on a resource should have ownership access, unless they explicitly choose to rescind that right.

In a company environment, a user’s employer may have shared ownership (or full ownership, with author access available to the employee). The same may be true with students in a university environment. On sites like Facebook, the service owner may in reality have some ownership rights over the content.

How can we maintain this granularity, but also retain user control?

Problem to solve: privacy & transparency

There is a very public attitude of "when you put something online, it’s published" in some parts of the software development community, which is a useful concept that gives developers carte blanche to share data freely. In a fully user-controlled environment, this public-or-completely-private binary situation can no longer be the case; a resource may have been published to a few select people. Ignoring this trait disallows the platform’s use in important environments like enterprises or public bodies.

When you sign up to a service, you agree to that service’s terms and conditions and privacy policy. However, your data may be farmed out to a collection of other, secondary services via APIs, without your knowledge or consent.

An important aspect of user control is knowing how your data is used and where it is transmitted by the applications you use, so I propose a simple, human-identifiable and machine-readable mark that:

  1. Applies permissions to how my data can be used by applications (like Creative Commons does for shared content)
  2. Tells you in a visual way what happens to your data when you visit a site
  3. Incorporates multi-ownership

It may be that these issues are addressed within the terms and conditions of a service. However, it’s very unlikely that a user will actually read the full contract. Therefore, a simple graphic icon with a link to a plain-English description, with an underlying microformat for machine-readable use, would be a welcome addition to the user experience. As the web becomes more mesh-like and data moves around more freely, conveying what happens to data owned by less-technical end users will become more and more important.

Problem to solve: platform

Finally, while it’s great having a conversation about this, these ideas aren’t useful to anyone unless someone goes ahead and builds it.

There are some existing projects and thinkers who are on these tracks:

  • The Diso Project is turning the WordPress open source blogging tool into a decentralized digital identity through an array of open standards, and the project’s Chris Messina has a lot of wise things to say about its development.
  • Laconi.ca is a decentralized microblogging platform, whose Open Microblogging standard may be adaptable into a more widely-scoped technology.
  • The Open Stack is a set of developing technologies that address some of the issues.
  • Marc Canter’s Open Mesh treatise goes into detail on many of the issues.

All of these are important contributions that strongly address some of the issues; however, we’re still a long way away from the vision of an open, social web.

Conclusion

I believe strongly, for the reasons stated above, that a decentralized, user-centered model for the web is the best way to advance it as an application platform.

Needless to say, I have my own ideas about how to actually build the platform, based on my Making the most of the web principles. However, it has to be a collaborative process: there’s no sense in building an open collaborative standard by yourself. My main concern is that the platform is created and works in an open, lightweight, flexible, easy-to-develop-for way while remaining secure and yielding control to the main user. The result will be an entirely new kind of platform, and presents a unique opportunity for anyone who wants to jump on board.

Images:

  • WOW! My 1000 Friends by Cavin was released under a CC Attribution Generic 2.0 License
  • Lonely Tree by Jule Berlin was released under a CC Attribution Generic 2.0 License
  • Logo 2.0 part II by Stabilo Boss was released under a CC Attribution-Noncommercial-Share Alike 2.0 Generic License
  • Upside Down by Johnny Jet was released under a CC Attribution Generic 2.0 License
  • Pro Control 24 by Aud1073cH was released under a CC Attribution-Share Alike Generic 2.0 License

Related entries



Comments

by Ben Werdmuller at July 01, 2009 01:58 PM

Natalie Downe

OMG KITTENS! Colorado Biologists Discover Litter of Lynx Kittens : TreeHugger

OMG KITTENS! Colorado Biologists Discover Litter of Lynx Kittens : TreeHugger. awwwwww! 10 baby Lynx kittens discovered in Colorado, so cute! (was searching for the Lynx web browser and got distracted)

July 01, 2009 12:45 PM

A quote from Peter-Paul Koch

Some mobile WebKits don't show an &lt;input type="search" /&gt;, either. iPhone does, though (as a normal text box).

- Peter-Paul Koch

July 01, 2009 12:20 PM

A quote from Peter-Paul Koch

Interestingly, most mobile WebKits do not show an &lt;input type="range" /&gt; at all (no normal text box either).

- Peter-Paul Koch

July 01, 2009 12:19 PM

A quote from Wilson Miner

Oh, look it's the EveryBlock source code. http://blog.everyblock.com/2009/jun/30/source/

- Wilson Miner

July 01, 2009 12:08 AM

June 30, 2009

JP Stacey

Oxford Geek Night 13: it’s actually happening

Today I got in touch with the venue for Oxford Geek Nights, to confirm rather late in the day that we were definitely on for Oxford Geek Night 13 on Wednesday 15 July. Luckily we are, and we’re also now able to book a date for OGN14 which we should hopefully be able to announce on the night of OGN13.

As already announced, the Guardian Open Platform has kindly agreed to sponsor OGN13. Torchbox will with their typically good grace be sponsoring the venue and my time, so that leaves Open Platform free to provide some refreshments. After today’s nervous phone conversation, I could do with a drink myself.

by jps at June 30, 2009 11:32 PM

Simon Willison

Using Mongo for Real-Time Analytics

Using Mongo for Real-Time Analytics. MongoDB supports an “upsert” query, which when combined with the $inc operator can cause counter fields to be incremented if they exist and created otherwise. This makes it a great fit for real-time analytics applications (one increment per page view), something that regular relational databases aren’t particularly good at.

June 30, 2009 07:28 PM

MongoDB

MongoDB. Lots of discussions about this at EuroPython today—it’s a document database, very similar to CouchDB but significantly faster and suggested for production use. Best of all, trying it out on OS X is as easy as extracting the tarball and running “bin/mongod --dbpath /tmp/test-mongo-db run”.

June 30, 2009 07:13 PM

Firefox 3.5 for developers

Firefox 3.5 for developers. It’s out today, and the feature list is huge. Highlights include HTML 5 drag ’n’ drop, audio and video elements, offline resources, downloadable fonts, text-shadow, CSS transforms with -moz-transform, localStorage, geolocation, web workers, trackpad swipe events, native JSON, cross-site HTTP requests, text API for canvas, defer attribute for the script element and TraceMonkey for better JS performance!

June 30, 2009 06:08 PM

June 29, 2009

JP Stacey

New alpha version of Drupal EditInline module

My Drupal module for editing nodes inline EditInline is at version ɑ-0.4. Just to summarize, the module lets you edit either the current node (or any other node where the title comes from Views or node template rendering) in a lightbox overlay. That means you don’t always have to navigate to (or even know how to navigate to) a piece of content in order to edit it, making editing more accessible and intuitive.

Now you can also edit nodes in nodereference fields, while you’re on the page to edit the current node! That means you can be on the edit page for e.g. a publication, but edit the author biography node attached to it by a CCK nodereference field. There’s little edit buttons to the side of nodereference autocompletes which . Also, once you’ve edited the node in the lightbox overlay and it’s closed, any title edits are also changed in situ to help you envisage how the page will look without having to refresh.

I did some of the work—mostly that leading from ɑ-0.2 to ɑ-0.3—during handy gaps between talks at Drupal Camp UK, held at BBC Manchester a couple of weeks ago. I wish I’d caught the wave of blogging about it at the time, as it was tremendous fun. The talks were all of a very high standard, but what felt more important to me was meeting people in the UK’s Drupal community, and realising at first hand that the fun-loving, Drupal-interested, hard-drinking weirdos (that I’d always hoped were hiding here and there on the IRC channels and forums) really do exist.

by jps at June 29, 2009 08:23 PM

Jon Hicks

Icons for Interaction

ifori

Last week I had the pleasure of attending @media 2009 in London, where it has to be said, I had the best conference experience I’ve had for a long time. I prefer the more cosy nature of the event – a single track, not too large and overwhelming quantity of people, and simply great talks. I can’t pick one favourite presentation, as I came away feeling really inspired and energised by everything.

It was also the last @media curated by Patrick Griffiths, who is moving on to follow other passions (from next year the conference will be in the able hands of the Web Directions Team). I want to take this opportunity to thank Patrick for encouraging me to talk, and giving the best possible environment to do it in.

ifori2

After giving the presentation, I realised that there are 2 areas, only touched on briefly here, that should be expanded on: Icon Accessibility and Icon Usability Testing. Those are big topics for another day/talk/blog post, so until then here are my slides for my talk on ‘Icons for Interaction’:

Download the Icons for Interaction PDF (18mb). All links are available on my delicious account, tagged icondesigntalk. My speaking notes are also included in the PDF, hopefully this will be enough to make the slides meaningful.

The typeface I used for this was Comic Crafts Astronauts in Trouble.

by Jon Hicks at June 29, 2009 07:41 PM

Natalie Downe

A quote from SXSW

You'd better hurry up and send us your panel proposals through Panelpicker! http://www.sxsw.com/node/1850

- SXSW

June 29, 2009 07:33 PM

Graham Lee

Going indie!

This is sort of a message from the past. I wrote it yesterday, but had people I needed to talk to before I could hit the big old publish button. (Including this bit, so I really wrote it "today", but the earliest you can read it means that "today" will be "yesterday". This is one of those uses of the past-perfect-nevertense that blows up lesser recording equipment.)



Today (the real today that this thing was posted), I handed in my notice at Sophos. Six weeks from now, I will be officially an unemployed starving artist. I'm working on lining up a project to take up most of my time for the first few months of the new era, which really looks like it will work out, and of course need to solve the "marketing presence" problem. Although the fact that you're reading this probably means you already know who I am, and something about what I do. If you want a Cocoa or UNIX developer for a contract - especially one with experience in the worlds of security and scientific computing - then please see my LinkedIn profile to find out a bit more of what I've been up to, and drop me a line - here, at @iamleeg or to iamleeg at gmail dot com. I know there are a load of interesting people out there working on a load of interesting projects, one of the great things about WWDC every year is meeting you all and sharing in the excitement. Well hopefully I'll get to work with you on some of that cool software, too!



So, like many people who go self-employed, I've got little idea of what will happen next :-). I've got some ideas for apps which I'll be working on in the (probably too copious) spare time I'll have. But I'm going to focus on contracting and consulting in the short term. This is going to be an exciting time, if somewhat daunting...but you'll be able to check on my daunt levels right here, dear readers.



I promised at the turn of the year that there would be lots of blog posts on various tech things during the first half of the year. Unsurprisingly that didn't quite pan out, and I'm hoping to rectify that over the next couple of months now that I have fewer (perceived) content restrictions on the blog. And this first project I have lined up should certainly be producing some good'uns, assuming it all works out. I'll be the first to admit that if it doesn't, I'm heading for trouble very shortly. Which is why I know that it, or something very like it, will work out :-).



To fellow Sophists who are hearing about this for the first time here, I'm very sorry. I tried to let people know today but there are hundreds of you, one of me and lots of loose ends to tie by mid-August. But don't worry, there will be beer.

by leeg (noreply@blogger.com) at June 29, 2009 06:22 PM

June 28, 2009

Andrew Godwin

South 0.6 news

It's about time I posted an update on what's going on with South development, so here it is.

Firstly, there hasn't been much work done in the last few weeks, due to exams and there being a Ball to help run. Now that's over, development will crack down. 0.6 is going to focus on the following new features:

  • Less parsing, more introspection. The default way of getting fields' definitions will be to introspect them; the implementation of this is pretty much complete already, and can be found in the 'noparsing' Mercurial branch. Custom fields (which cannot be introspected withour prior knowledge) have two options; provide a south_field_triple method to tell us their definition (preferred way), or as a fallback the parser will be used. This feature solves many issues, including dynamic models, and also doesn't lose the ability to work with most custom fields right from the start.
  • Reverse dependencies. Just brought up by one of the Ella developers, this is a good idea that should have been in South a while back. You'll be able to specify 'this other migration depends on us' as well as 'we depend on that other migration' - this helps pluggable apps around a common core.
  • Fixture migration. Since I know this is going to bite me in the ass at some point, I'll be rolling in the fixture-migration someone mentioned at EuroDjangoCon (uses the test runner to make a temporary database, loads an old fixture set, an old schema, migrates, dumps the new fixture). I haven't fully tested this yet, so it might not make it for reasons of impossibility, but I'm reasonably confident.
  • Signals. There will be post-migrate and pre-migrate signals added to help developers add in custom code that needs to be run after migrations or before migrations (the latter helps people trying to carry out a deployable app rename, for example)

As well as those new features, there's also around 25 bugs that need fixing, and will be tackled soon, hopefully. I aim to get a beta release of these out in the next month, especially in the light of South's allegedly high penetration rate.

The last piece of news is that I'm moving my main development efforts to Mercurial (and specifically BitBucket), and only pushing mostly-stable trunk phases to Subversion. There's a github mirror of whatever hg-git deems to be main development, but that's for convenience only, and because I can do it in one command.

June 28, 2009 11:49 PM

JP Stacey

Twitter Weekly Updates for 2009-06-28

  • Cotes d’Armor version of Truck Festival has a lot more harmonica. #
  • Waiting outside ‘Cash Affaires,’ French for ‘Last Days of Peak Oil.’ #
  • Support your local businesses, unless they’re ferm�s vendredi. #
  • Never thought I’d be so relieved to be able to buy milk after 5.30pm. #
  • Thankfully our home is still standing, and far tidier than we remembered. If we HAVE had burglars, they just cleaned and left empty-handed. #
  • Who do I know going to #opentech next weekend? Trying to make decisions. http://www.ukuug.org/events/opentech2009/ #

Powered by Twitter Tools.

by jps at June 28, 2009 05:17 PM

Simon Willison

cache-money

cache-money. A “write-through caching library for ActiveRecord”, maintained by Nick Kallen from Twitter. Queries hit memcached first, and caches are automatically kept up-to-date when objects are created, updated and deleted. Only some queries are supported—joins and comparisons won’t hit the cache, for example.

June 28, 2009 03:17 PM

Twitter, an Evolving Architecture

Twitter, an Evolving Architecture. The most detailed write-up of Twitter’s current architecture I’ve seen, explaining the four layers of cache (all memcached) used by the Twitter API.

June 28, 2009 03:09 PM

BashReduce

BashReduce. Map/Reduce in Bash is no longer a joke project (if it ever was)—Richard Crowley is extending it and using it for analysis at OpenDNS.

June 28, 2009 03:03 PM

What's New In Python 3.1

What’s New In Python 3.1. Lots of stuff, but the best bits are an ordered dictionary type (congrats, Armin), a Counter class for counting unique items in an iterable (I do this on an almost daily basis) and a bunch of performance improvements including a rewrite of the Python 3.0 IO system in C.

June 28, 2009 03:02 PM

June 27, 2009

Ben Werdmuller

Adapting to the real world

I’ve spent the last week in a series of very interesting mind-sharing meetings. First, the American Association of Colleges & Universities flew me into Washington DC to discuss the future of assessment in higher education with education professionals as well as new techsphere friends like Silona Bonewald and Amber Case. Second, Michael Byrne from Harvard University’s Hauser Center for Nonprofit Organizations invited me to speak there about the open, social web, the notes for which I’ll write up and post here soon. A great big thank you to both organizations for inviting me; I’ve felt privileged to have such insightful and interesting conversations over the last few days.

It seems like the shift in innovation in social tools has gone from developing new and interesting technologies to developing interesting models that happen to use technologies. This is a big step, and in some ways represents the space coming of age. There’s still plenty of technological development and innovation to do, but the platform and concepts are at a point where they can be adapted into all manner of social collaborative spaces, business tools, social experiments, games, art projects, and combinations of those things. It’s becoming a very exciting field to work in.

That said, some adaptation needs to happen, and it’s important to realize that these ideas only work in an effective way when they’re made relevant to the outside world. The social web is extremely political: it imposes an opinion about how the world should be open and social, democratic and centered on individual preferences, but ironically doesn’t allow for differences in that point of view. That makes it very hard for late adopters, enterprises, governments and public organizations to feel the benefit.

Over on Persona Prime, Silona makes this point about technology-inspired government transparency:

Where is the change management?  We are doing some big stuff here and we are poised to make serious mistakes and I see no prelim work being done to prevent this.  Where are the best practices in open govt documents?  All I see are “I want” lists.  I have not seen us doing anything serious to ally [the fears of people who might be wary of transparency].

It would be cool if every Fortune 500 company wanted to be on Twitter, but the reality is that they don’t, and often for very legitimate reasons. If what we’re doing is establishing a new, global, decentralized way to create, share, disseminate and discover information, then we have to take into account the differences in all the decentralized nodes. Embracing different corporate cultures, and different opinions on how communication should be, is part of that. Compromising and addressing the fears of companies and late adopters will build a larger userbase for all our tools, and make the platform much more useful in the long run.

Related entries



Comments

by Ben Werdmuller at June 27, 2009 10:57 PM

June 26, 2009

June 25, 2009

Simon Willison

The Resource Expert Droid

The Resource Expert Droid. Like the HTML Validator but for your server’s HTTP headers—extremely useful.

June 25, 2009 10:06 AM

June 24, 2009

Natalie Downe

The Fallacy of Page Zooming

The Fallacy of Page Zooming. Top notch article by Drew, I couldn't agree more with his arguments for not using px.

June 24, 2009 03:17 PM

Simon Willison

Test-Driven Heresy

Test-Driven Heresy. Tim Bray advocates TDD for maintenance development, but argues that it may not be as useful during the exploratory, greenfield development phase of a project.

June 24, 2009 11:03 AM

A quote from Auren Hoffman

Software engineers today are about 200-400% more productive than software engineers were 10 years ago because of open source software, better programming tools, common libraries, easier access to information, better education, and other factors. This means that one engineer today can do what 3-5 people did in 1999!

- Auren Hoffman

June 24, 2009 11:00 AM

To Sprite Or Not To Sprite

To Sprite Or Not To Sprite. CSS sprite images are decompressed to full bitmaps by browsers before they are rendered, so sprite files with large numbers of pixels will dramatically increase the memory footprint of your site.

June 24, 2009 10:33 AM

June 22, 2009

Simon Willison

A quote from Jared Spool, via Jeremy Keith

You can buy an iPod nano on Apple, Best Buy, etc. for about $149. Amazon sells it for $134. That’s probably cost price. It turns out that Amazon can sell almost everything at cost price and still make a product because of volume. It’s all down to the Negative Operating Cycle. Amazon turns over its inventory every 20 days whereas Best Buy takes 74 days. Standard retail term payments take 45 days. So Best Buy is in debt between day 45 and day 74. Amazon, on the other hand, are sitting on cash between day 20 and day 45. In that time, they can invest that money. That’s where their profit comes from.

- Jared Spool, via Jeremy Keith

June 22, 2009 05:13 PM

Natalie Downe

Travel full-time for less than $14,000 per year

Travel full-time for less than $14,000 per year. Fantastic article on traveling, slightly misleading title but the article is by a travel writer who spends her life living what she writes. Loads of useful tips for travels of all lengths, for weekends away and living the travel lifestyle.

June 22, 2009 04:45 PM

A quote from Paul Boag

I am beginning to think this hate campaign against IE6 has gone too far - http://tinyurl.com/nqngqx - browsers have feelings too!

- Paul Boag

June 22, 2009 10:43 AM

Ben Werdmuller

Beyond the echo chamber

It’s exciting to see some of the big names in the Silicon Valley web scene shift gears from evangelizing about the power of the social web to explaining how it can be used to the outside world. For example, Robert Scoble, sometime Microsoft videoblogger and latter day net celeb has started Building 43:

A few people here and there are trying. I watch what Chris Messina, David Recordon, Marc Canter, Joseph Smarr, Kaliya Hamlin, and a group of others are trying to do by pushing a more open web. Those are the kinds of efforts that inspire me and are inspiring Building43. Can we build on what they are trying to do and take it to main street?

Marc Canter is taking it a step further and moving to Cleveland, Ohio, in order to start a new company that helps create Digital Cities:

Where workforce development, content production and local foods meet in the valley of health care, medical digitizing and the history polymers.  Add to that some Seniors interviews, green jobs knowledge bases and authorized venues, community services and common constructs – and you have our project!  Oh yah – and a business directory of……

In both cases, they’re taking the ideas that the web community has created – open, democratic platforms for content agnostic collaboration – and bringing them to communities and people who might not have been exposed to them but could benefit in real, tangible ways. The message I’m getting is that the theory has gained momentum and is rolling into something great; now it’s time to bring it to the world.

And me? I’m in Washington DC this morning, talking with the AAC&U about how these ideas can be used in education.

Related entries



Comments

by Ben Werdmuller at June 22, 2009 10:28 AM

Natalie Downe

Workshops | dConstruct 2009

Workshops | dConstruct 2009. Early bird tickets have just gone on sale for this year's dconstruct tickets at £345. I am running an HTML5 and CSS3 workshop with Richard and Jeremy. "HTML5 and CSS3 may be considered by some as distant concepts: far in the future and irrelevant to their daily lives. However, in this day-long workshop by Clearleft's expert client-side engineers Richard Rutter, Jeremy Keith and Natalie Downe, you will learn how these exciting new concepts can be applied today!"

June 22, 2009 10:28 AM

June 21, 2009

Graham Lee

Reverse-engineering stringed instruments

Despite being able to play some instruments, I probably couldn't do a good job of making any of them. I don't have the patience required to boil a horse for long enough to stick a fiddle together, for instance. Luthiers would probably get incredibly bored by the following post but for fellow apart-takers, it'll hopefully be quite interesting.



I once made a stringed synthesiser, when I was at college. The basic principle is that of an electric guitar running in reverse. A metal string is stretched between two bridges, and sits inside a horseshoe magnet. Now rather than plucking the string and letting the magnetic pickup detect the vibrations, we pass an alternating current through the string and use the magnetic field to cause the string to vibrate. Mount the whole shooting match on a soundbox roughly the shape of an appalachian dulcimer, so it makes a decent amount of noise. And there you go!



Well, there bits of you go, anyway. While you can drive the string at any frequency you like, it'll be really quiet on any note which isn't a natural harmonic - it's being forced at one frequency, and trying to vibrate at a bunch of other frequencies, so can't really resonate. Assuming that the materials of the string aren't up for grabs, it's the length and tension which choose the fundamental frequency. What you currently have is capable of playing bugle tunes. Put a few different bugles together and you can play chromatic scales, so putting a few different strings together increases the likelihood that our synthesiser has the ability to play some notes in the tune we want.



In fact, it's still going to have a fairly nasty volume characteristic, because most of the noise doesn't come from the string, it comes from the soundbox. In that regard, violins and pipe organs have quite a lot in common. But they differ in that pipe organs have one soundbox per note - the pipe itself - and violins have a single box. So it'd better be possible to get it to resonate at a whole bunch of interesting frequencies, which is one of the reasons for making them (and acoustic guitars) the shapes that they are. Now what the real acoustic characteristics of a fiddle body are, I'm not entirely sure. But what I do know is that a violin is surprisingly small - the "concert pitch" A pipe in an organ is a little under 40cm and the lowest note a violin usually has (a ninth lower) will therefore be almost a metre long. Even though an enclosed box like a violin needs to be half the length of an organ pipe playing the same note, it will still naturally accentuate the higher frequencies that the strings have on offer because it isn't big enough to do much else. And it's that which gives the instruments their sound. My synth's soundbox was cuboid-ish, so had two characteristic "loud" notes and their harmonics. The z-axis wouldn't have resonated much as the box was on a table which absorbed the momentum.



The remaining interesting point is that the violin is forced to extract the sound from a rubbish part of the string. The bridge is both responsible for translating the motion of the string into the wood and for stopping the string from moving. The string moves most somewhere out toward the middle (it's mainly vibrating at its natural wavelength, which is twice the length of the string) and not at all near the ends. That's why pickups on electric guitars sound "warmer" further away form the bridge. There they pick up more of the lower harmonics, but the nearest pickup (and the bridge) get proportionally more of the higher harmonics.



by leeg (noreply@blogger.com) at June 21, 2009 07:00 PM

JP Stacey

Twitter Weekly Updates for 2009-06-21

  • At home, recovering. Wonder how Bryan’s going on. Whether he’s even got as far as the breakfast buffet yet. #
  • @ollyw wow, is that really from Book for Boys? Scaling from the ladder, it’s huge. Own up: you’ve already found space for a beer fridge, no? #
  • catching up on my @ replies. Maybe I need a smarter phone than just one that does SMS after all. #
  • @robertdouglass thanks for elucidating. Wonder if reactive client services - helplines etc. - could ever be run usefully in an #agile way. #
  • @wesayso let me guess: your list was “food contained in other food” and “snacks with hole in middle”. Were you after Ginsters and Cheerios? #
  • BHF Oxford to Cambridge cycle ride. Sept 27, 20 quid for coach back etc. Hmm…. #
  • Making a zero-minute connection is almost as satisfying as joined-up public transport. #
  • We *have* to get tickets: RT @robertdouglass Yes! @add1sun is going to co-present the presentation on DrupalDocs … http://is.gd/12Hhm #
  • @didlix great to meet you and everyone else at #drupalcampuk over the weekend. Well, not everyone else: I’m sure I missed some people. #
  • New blogpost: #Django internal architecture: a nice PDF http://bit.ly/tGRYz #
  • After this weekend’s hashbrowned extravaganza of full English and #drupalcampuk pizza, I’m on the yoghurt and cherries for lunch. Go me. #
  • RT @griffinkate: Police attack a man as he lies on the ground “resisting arrest” in Nottingham: http://qurl.com/wnd1w (via @bloggerheads) #
  • So sad to hear that Barbara Wright, translator of Raymond Queneau’s Exercises in Style, passed away in March. #
  • Explaining authentication versus authorization, through the medium of BEER: http://qurl.com/1b3kg #
  • @addedentry I checked the foxholes on the way to work and they were all empty, except one with a black swan inside. I think that proves it. #
  • Carol Ann Duffy’s first poem as Laureate, and it’s a powerful one: http://qurl.com/gql3q #
  • @griffinkate just tweet a lot more to cover it all up. I think other people can only see your last 200 tweets, so get cracking. #
  • Big announcement about Oxford Geek Night funding in the next hour or so… can’t wait to tell you all! #ogn #
  • New blogpost: Oxford Geek Night 13 sponsored by the #Guardian Open Platform #ogn http://qurl.com/8qfnj #
  • Late packing, yowling cats and even noisier binmen all mean I’m not exactly on the ball today. MOAR COFFEE. #
  • @brighty a vCard is too big for 140 chars. Depending on the software, it sends it as many SMSes or one MMS. Typically the latter is “safer”. #
  • #helpiranelection - show support for democracy in Iran add green overlay to your Twitter avatar with 1-click - http://helpiranelection.com/ #
  • #helpiranelection Show support for democracy in Iran; add green overlay to your Twitter avatar with one click: http://helpiranelection.com/ #
  • Banjo Sandwiches have upgraded their car horn to something even more annoying but no less illegal when used to attract custom. Bravo! #
  • Just had a big #drupalcampuk debriefing to the rest of @torchbox. Hint: knowing people only by their IRC name cuts no ice with non-devs. #
  • @NickRhind I liked the name badges that had spaces for IRC name and Drupal.org login on them. Maybe the IRC name should’ve been the biggest? #
  • RT: Drupalcamp UK (http://mulpo.com/drupalcamp-uk) (via @ipwa) #
  • Without a vocative comma, ‘Come on, England!’ has unsanitary connotations. #grammar #
  • Train doors closing early meant we had to drag 50kg case through 3 carriages. Great. #
  • Travelling with novels poems LRB is like settling into a warm bath with chocolates. #
  • Getting ready for the ferry. Whoof, it’s a bit early. #
  • We’re moving. We’re moving. #

Powered by Twitter Tools.

by jps at June 21, 2009 05:17 PM

June 20, 2009

Simon Willison

Google asked people in Times Square:"What is a browser?"

Google asked people in Times Square:“What is a browser?”. Stuff like this makes me despair for creating a secure web—what chance do people have of surfing safely if they don’t understand browsers, web sites, operating systems, DNS, URLs, SSL, certificates...

June 20, 2009 01:25 AM

June 19, 2009

Simon Willison

The breakneck race to build an application to crowdsource MPs' expenses

The breakneck race to build an application to crowdsource MPs’ expenses. Charles Arthur wrote up a very nice piece on the development effort behind the Guardian’s crowdsourcing expenses app.

June 19, 2009 10:16 PM

Towards a Standard for Django Session Messages

Towards a Standard for Django Session Messages. I completely agree that Django’s user.message_set (which I helped design) is unfit for purpose, but I don’t think sessions are the right solution for messages sent to users. A signed cookie containing either the full message or a key referencing the message body on the server is a much more generally useful solution as it avoids the need for a round trip to a persistent store entirely.

June 19, 2009 09:57 PM

Unimpressed by NodeIterator

Unimpressed by NodeIterator. John Resig, one of the most talented API designers I’ve ever come across, posts some well earned criticism of the document.createNodeIterator DOM traversal API.

June 19, 2009 09:53 PM

Ben Werdmuller

Top 10 blogs about the social web

Blogs.com just published a top 10 list of blogs about the social web that I wrote for them. People are already beginning to comment with blogs they’d love to see added to the list – if you know of one that I missed out, please feel free to add it or link in with your own blog post.

This isn’t, of course, meant to be the top 10 social web blogs ever – these are just some of the blogs that I keep coming back to regularly. (I had more that I dearly wanted to add, but don’t update quite often enough to be considered regular blog resources.) Everyone’s list is different, and equally important in itself; that’s the great thing about the social web.

Related entries



Comments

by Ben Werdmuller at June 19, 2009 06:49 PM

Natalie Downe

A quote from Stephen Fry

My Guardian review of the 3GS seems to be out early! http://bit.ly/MDj6W Fuller review on my website in two shakes of a doubly shaky thing.

- Stephen Fry

June 19, 2009 06:22 PM

Ben Werdmuller

Synchronize your iPhone with Google Calendar

Finally!This how-to isn’t in the usual remit of this blog, but it solves a problem I’ve had for a while – I can’t use the iPhone’s built-in calendar functionality with Google Calendar – so I thought I’d share.

The iPhone 3.0 software update supports CalDAV, an open standard for sharing and updating calendar information. Luckily, so does Google Calendar.

It should really be easier than this; one of the important aspects of integration through open standards isn’t just its possibility, but also its accessibility. This feels more like a hack than real functionality – but at least it works.

  1. On your iPhone, press Settings, and then Mail, Contacts, Calendars.
  2. Press Add Account… and then Other.
  3. Press Add CalDAV account.
  4. Follow the instructions for enabling Google Calendar in Apple’s iCal. Specifically, this means using your Google account details for the username and password, and setting the CalDAV server name to be https://www.google.com/calendar/dav/YOUREMAIL@DOMAIN.COM/user.
  5. I found that the iPhone didn’t pick up the authentication first time round – you may need to go into Advanced settings and re-enter them. The www in the server name seems to be important.

You can also do it using Google Calendar’s Exchange emulation, but that never worked for me. As with this, your mileage may vary.

Related entries



Comments

by Ben Werdmuller at June 19, 2009 12:54 PM

Assume there’s value

Tony Stubblebine has written a great post about the lessons he’s learned from Twitter, which was created at Odeo while he was working there. This advice stands out for me:

Have you ever looked at a piece of social software and thought, or worse, blogged, that it was worthless? Here’s a trick for evaluating social software in a way that isn’t going to make you look stupid six months down the road: assume it’s valuable if people are using it. Then try to figure out what value they’re getting.

I’ve lost count of the number of times I’ve heard people be dismissive about Twitter, or Facebook, or another well-loved web tool because they didn’t understand it. I’ve even been guilty of it myself – but it’s not productive. Much better to figure out why people love it and learn from what you discover.

Related entries



Comments

by Ben Werdmuller at June 19, 2009 11:25 AM

June 18, 2009

Simon Willison

Investigate your MP's expenses

Investigate your MP’s expenses. Launched today, this is the project that has been keeping me ultra-busy for the past week—we’re crowdsourcing the analysis of the 700,000+ scanned MP expenses documents released this morning. It’s the Guardian’s first live Django-powered application, and also the first time we’ve hosted something on EC2.

June 18, 2009 11:16 PM

Ben Werdmuller

Learning on the social web

ScienceBlog reports that on Saturday, Carl Whithaus will announce the preliminary results from a California Department of Education study into increasing academic achievement using computers in 4th grade classrooms (emphasis mine):

During the first year of the two-year study, student achievement increased 27.5 percent, according to Whithaus, who is principal investigator of a study to evaluate the project’s effectiveness.

Computer use – and particularly, online community engagement – increases engagement with formal learning, which is great news for the e-learning software market. But I’m particularly interested in the effect of networks on informal learning – specifically, learning from our activities on the web.

Learning happens when two sets of experiences and assumptions are exposed with each other – in other words, when we communicate. The web is the most globally efficient communications method the world has ever seen, and as a result, I believe, may rapidly transform our world culture for the better.

Last month, I met with J. Nathan Matias from the World University Project, a project that aims to evolve higher education by shedding light on how people learn and teach around the world. His intent is to highlight experiences that people in the west have largely not been exposed to, and in so doing advance mutual understanding between our academic systems. It’s a brilliant idea, which takes advantage of the potential of a universally accessible global communications network.

Recently, the Iranian election swamped Twitter, to the point where they rescheduled maintenance in order to minimize the effect on dissidents in the country. Suddenly, because Iranian dissidents were online and conversing with people from the west, Iran seemed less like a scary, far-off country filled with terrorists and more like – gasp – a country filled with actual human beings. Clay Shirky had this to say:

I’ve been thinking a lot about the Chicago demonstrations of 1968 where they chanted “the whole world is watching.” Really, that wasn’t true then. But this time it’s true … and people throughout the world are not only listening but responding. They’re engaging with individual participants, they’re passing on their messages to their friends, and they’re even providing detailed instructions to enable web proxies allowing Internet access that the authorities can’t immediately censor. That kind of participation is really extraordinary.

On a smaller scale, we’re now interacting with people from other walks of life, with markedly different sets of skills and interests, on a daily basis. The opportunity available to us is not just to get our message out on an unprecedented scale – but to get other peoples’ messages in, and in the process make ourselves more educated and informed than we’ve ever been. On a personal level, it can help us with our fourth grade homework; on a societal level, it’s a revolution.

Related entries



Comments

by Ben Werdmuller at June 18, 2009 06:00 PM

Natalie Downe

A quote from Alex Kemp

is shocked that my MP, Tony Lloyd, claimed for Kit Kat chunky mints on expenses. Tsk.

- Alex Kemp

June 18, 2009 04:53 PM