Pretty Huge Doctorate

I put all 97,189 words of my PhD, “Supportive Methodology and Technology for Creating Interactive Art”, into Wordle, and this is what it looks like:

The whole thing: the whole phd

The methodology chapter: the methodology chapter

The first study: the first study

Download chapters, appendices.

World Usability Day 2008 is tomorrow

World Usability Day – Be a part of it!

World Usability Day 2008 is just 24 hours away. This is your chance to be part of a global effort spanning 43 countries and over 150 locations as we help spread the world about the importance of usability. This year’s theme is transportation, and our Sydney event focuses on the issues and challenges that face alternate forms of transportation in and around the city.

UPA Sydney has put together a varied and interesting program of presentations, discussions, workshops and activities. Our impressive line-up of speakers includes:

  • Alinta Thornton (User Experience Lead, Independent Digital Media) on what it really takes to get people out of their cars
  • Kevin Cox (Founder and Chief Technical Officer, Edentiti) running a discussion on how to make carpooling viable
  • Alan Cadogan (Strategy Director, City of Sydney) discussing the City of Sydney’s Sustainable Sydney 2030 vision
  • Michael Lister (Senior Transport Planner, Parsons Brinckerhoff) discussing bus route design – unleashing the omnibologist within
  • Warren Salomon (Sustainable Transport Consultants Pty Ltd) on the major role that bicycles will play in the new transport paradigm
  • You will also have the chance to view and evaluate the design and photo exhibition, participate in other workshops and discussions, and join the global transport challenge. And finally, you’re invited to help us close out World Usability Day 2008 with a social event.

This event is free and open to the public and will run from 10am– 5pm, Thursday, November 13, 2008.

Location:

University of Technology Sydney Haymarket campus Room 12, Level 1, Block B, Building 5 1 — 59 Quay Street, Haymarket.

Drinks to follow starting at 5:30 at Henry Henry (Henry Deane Plaza, 8A Lee St)

For more information, please visit [http://www.upasydney.org]http://www.upasydney.org or send email to events [at] upasydney.org.

No opt-out of net censorship in Australia

Dear Ms Tanya Plibersek, MP,

I am writing to express my concerns as a computer scientist and web developer over the The Australian Communications and Media Authority (ACMA)’s proposed ISP-level Internet content censoring system (see http://www.computerworld.com.au/index.php/id;1399635276).

In short, content filtering a) doesn’t work in the real world, b) doesn’t adequately address the problem, and most disturbingly, c) the ACMA’s proposed execution raises grave questions about our privacy and the level of control the government wants to exert over the information we can access. Let me explain:

a) The technology is not up to the task, and nor can it ever truly be. Not only will the proposed system further limit Australia’s already sedate internet speeds, but also the technology simply does not exist that can reliably censor particular categories of information, whilst permitting all other information. If it did, none of us would ever get any spam! What’s more, if we’re talking about encrypted information, or peer-to-peer transfers, it rapidly becomes mathematically impossible to censor it at all.

The ACMA’s recent report on censorship software (http://www.acma.gov.au/WEB/STANDARD/pc=PC_311316) should not be misused as a basis for policy in the way that it is. A clue is in its title, “Closed environment testing of ISP-level internet content filtering”. The Internet is so entirely unlike a “closed environment”, that it’s like using a report into “cold-water testing of chocolate teapots” to decide what Australian families should safely brew their tea in.

b) The approach does not solve the problem. What is “harmful” or “inappropriate” varies from person to person, which means that so-called “cyber-safety” is a challenge for families, educators and, frankly, for young people themselves, who can learn no safety through government repression. Incorrectly assuming that young people will never access inappropriate information, or will never be targeted by predators when they use the Australian Internet, is like assuming that cars won’t exist when you use a zebra crossing — dangerously naive. Trusting net censorship to work is less safe than not having it at all.

Now, if these dysfunctions were the only flaws in the proposal, I would shrug my shoulders and let it be. However:

c) The proposed ‘opt-out’ implementation is a disturbing breach of privacy and of our rights to access information. It is demeaning to have to ask permission to see information that one is entitled to in the first place. Further, unless society is very careful to protect opt-outers’ identities, they will inevitably become stigmatized by spurious mistrust in their reasons for opting out.

It is much better to have an ‘opt-in’ system, where people who want the censorship can have it turned on, with no stigma attached. However, what you will find, and what I believe the government has found during earlier trials, is that take-up is very low, for reasons I have outlined in a) and b) above.

Further, attempting to censor all illegal material on the Internet is a laughably futile task, and speaks more of the will of the government to monitor and control its people than of any practical desire to keep us safe. The process of trying to decide what is illegal on the Internet will be expensive, subjective, open to debate and ridicule and, ultimately, useless, since ISP-level net censorship is so easily circumvented.

Finally, we need concrete assurances that the filtering system will not be abused by the government or its representatives. Globally, Internet censorship is a sign of totalitarian repression, being a way for the government to hide information from its people. Amnesty International’s “Uncensor” campaign is directed at the Chinese government on this very issue. There needs to be strong safeguards against such abuse in any governmental censorship regime, and I am dismayed to see no consideration of these vital protections in the proposed system.

I urge you to please consider these concerns, and, if you share them, to take the matter up with the Minister for Broadband, Communications and the Digital Economy, Senator Conroy. Please could you also respond to this letter, outlining your stance on the matter? I have posted this letter on my website, http://gregturner.com, and, with your permission, I will also post any reply I recieve.

Thankyou for your attention,

Dr. Greg Turner

Events New South Wales

Events NSW Map

The new Events NSW site launched today, created by Community Engine. The site is a showcase for ENSW and the events they help to develop.

I created the mapping engine used by the calendar for the site, in Flex, using ModestMaps. The engine is fairly simple — it allows arbitrary placing of events and descriptions, and filters events by month.

Django is my girlfriend

I think everyone who has worked with me has heard about my love for, and extensive use of, the Django framework for the Python language. Before I came across Django, “the web framework for perfectionists with deadlines”, I thought making websites was far too tedious and frustrating to make a career of it! The tools I had used and seen used to build websites were simply not as powerful as the computing tools being developed to support other areas of creative design. Here are some reasons that Django changed my mind.

Django and creativity support

In 2005, pretty much everyone who is anyone in creativity support tools research attended a workshop on Creativity Support Tools, and produced this report summarising the state of the art. There are a few chapters on how to design and evaluate creativity support tools. For demonstrating Django’s creativity support ability, I’ll use the list in “Design Principles for Tools to Support Creative Thinking”, written by Mitch Resnick, Brad Myers, Kumiyo Nakakoji, Ben Shneiderman, Randy Pausch, Ted Selker and Mike Eisenberg.

A few items in Resnick et al.’s list apply to the concept of (open-source) web development tools in general:

  • invent things you would enjoy using yourself
  • support open interchange
  • balance user suggestions with observation
  • iterate your development
  • design for designers
  • evaluate your tools

However, in the other parts of the list, Django stands head and shoulders above other tools (in particular compared to CMSes like Drupal, Joomla and Wordpress, but also compared to writing raw PHP+MySQL):

  • Provide a low threshold, high ceiling and wide walls. This means it is easy for novices to get started, but that the tools are sophisticated, and suggest a wide range of explorations. I’d say that the trickiest thing about Django is getting started in it, since you need to know how to program, and it is so bare-bones out of the box. But after you’ve followed the tutorials, and ideally worked on someone else’s Django site, you’ll be up to speed in no time. As for high ceiling and wide walls, it’s pretty great. It’s all the power of Python if you need it; it’s well-architected and well-documented, so you can override parts of its functionality if necessary. There is some discussion over whether it’s up to the task of running the world’s few mega-sites, like Flickr and Wikipedia, but the fact that Google has adopted Django for its App Engine is very encouraging.
  • Support exploration. Like most worthwhile languages, Python has a fully-featured debugger. However, it also has an interactive shell (which Java, for example, lacks), dynamic data types, late binding, strong introspection and rich libraries, all of which make it great for testing out ideas where the action happens, even debugging right there in the browser. Further, Django is quick not only because Python is quick, but also because HTML and SQL are slow1. Django neatly seperates them out, so that the HTML can be done by someone else (suckerzzzz!) and the database headscratching is handled in a pythonic way (no JOIN directives!).
  • Support many paths and many styles. Django maintains a zenlike agnosticism about what it plugs into. For example, it supports MySQL, PostgreSQL, SQLite and Oracle databases out of the box, but if you were inclined to write a database mapping for another database, it should work seamlessly. Similarly, there is a built-in template language, which takes python variables and renders them into HTML, but you are free to replace it with your own.
  • Support collaboration. This separation of concerns means that there is very little programming code in the HTML templates, unlike the distressingly common PHP pattern of mingling HTML and PHP code. This means that someone else can work on the look and feel, safe in the knowledge that they won’t ruin your back-end logic.
  • As simple as possible. It is easy to sell a product which contains ‘more features’, and gatekeeper ‘experts’ are used to using complex tools, say Resnick et al. However, reducing the number of features can actually improve the user experience, and that’s the case with Django. Think of it as a system for building Content Management Systems, a Content Management Metasystem, if you will. Most CMSs are quite fully-featured, with everything that 80% of people want to do shoehorned in. The problem comes when you want to turn all that stuff off, to improve your users’ experience, and to fit the architecture inside your head. Modifying things with fully-featured CMSs can be a bit of a nightmare — you can hack the codebase, but then a new version comes out, and you have to replicate the hacks in the new version. Or you can write a plugin that works around it, but that’s a lot harder. Django pulls off the incredible trick of being feature-rich, but doing absolutely nothing that you didn’t tell it to. This is why there is no blogging application for Django – if you need something that Wordpress won’t do, then it’s probably going to be better to make your own.
  • Choose black boxes carefully. The choice of the ‘primitive elements’ of a tool is extremely important, because they determine what ideas the creative user can explore with that tool. Django is open-source, and written in Python, the same language that you use to write Django apps. Therefore, if you need to, you can modify Django’s source code in the same way that you modify your own.

What does all this mean? Well, given how supportive Django is of creativity, it follows that web developers who use Django for their sites can be more creative than those who do not. That is not to say that if you don’t use Django then you are uncreative or unimaginative; it’s just that you have less time and freedom to be creative, because you are limited by your tools, and spend more resources reinventing the wheel, hunting down bugs, unravelling PHP and HTML bolognese, turning off features you don’t need, and so on.

A corollary: Django sites can be more usable. As an interaction designer, you learn that the tried-and-tested way to build a usable system is, literally, to try and test. In other words, you build protoypes of websites and put them in front of people to see what needs fixing. Then you fix it and do it again, as many times as you can. The more quickly you can build and fix the prototypes of the site, the more usable your website will be. So, as interaction designers, we are naturally drawn towards frameworks that make changes quick to implement, and Django is just such a framework, applied to the web.

Having said that…

There are, of course, specific tasks, and specific website applications which are made for each other, and needn’t involve Django. An obvious example is a blog: if all you need is a blog, use Wordpress or its ilk. If all you need is a social publishing site, use Drupal and let loose on the plugins. The caveat comes when you need something similar to a blog, but which does something a little different. Once you start going down that path, things go in one of two ways: 1: they get really hacky, really quickly, or 2: you spend huge resources implementing new plugins which solve the general case for all sites like yours (which is fine if you’re in the business of investing in such things–but consider also that this process is nearly automatic with Django apps). Take stock, and consider Django.

Recently I have been experimenting with hybrid approaches in two ways. First, I’m recommending that for sites above a certain level of complexity, Drupal or Plone is used to build a real quick prototype. Basically you continue adding plugins until you find what it is that the site can’t currently do. Then think about whether your required functionality is a) tiny enough to add as a hack or b) useful enough to develop a plugin for. If it’s neither of these, then consider making everything in Django. This will be a tough decision, since you have something close to the site right there, but trust me, the remaining 20% of the functionality will take 80% of the time.

The second hybrid approach I’ve been using is to combine a Wordpress install with a Django install. That’s because a lot of clients use a site admin mostly to publish news, and the Wordpress admin is really nicely set up for that (it helps that some of these clients are familiar with Wordpress already). Then I wrap a Django model around the Wordpress data tables, and use it to bring that data into the django site.

Finally, in a recent email discussion which, in part, prompted my post today, Tim said: “To some extent, these tools are all OK in the hands of people who are good with them. If you get Jeremy, use Drupal. If you get Greg, use Django. Getting a good developer and letting her use the tools she’s familiar with is, I think, more productive than trying to use the ‘right’ tool.” This is absolutely true. If you are commissioning a website, and hire an expert, and leave the tool choice to them. My points here are aimed at people who are choosing and using the tools.

What about Rails?

Django’s closest competitor is Ruby on Rails, and not without reason. Rails has been around longer and has greater momentum (or hype?). I dallied with it before Django, but it was harder to learn — I couldn’t get on with its ‘magic’. Maybe it’s just me, but I know Django went through a ‘magic-removal’ development phase, to make sure it didn’t do anything unasked. Rails also appears to have performance and scalability problems compared with Django, and appears to be harder to host. Sam Newman does a more thorough comparison here.

1. SQL is one of the few computing languages more verbose than the equivalent English!

Google Maps from the ‘70s

Hey, I recently discovered a complete collection of aerial map imagery from the Communist era in Eastern Europe. Amazingly, they used Lomo cameras for all the images.

Anyway, I’ve split the imagery into tiles and made a Google Maps mashup. There’s even a geo search!

Fill your window with the lo-fi goodness.

Well, that was fun, but obviously fake. How did you do that?

Busted! Behind the scenes is an image filter which I have called the Retrifier. You can try it yourself on reasonable-size images, by putting “http://gregturner.com/experiments/retrify/” instead of “http://” in an image URL:

Original image

Retrified image

The filter does this:

  • Unsharpens a copy of the image and blends with the original
  • Increases contrast
  • Increases saturation
  • Adds a ‘stains’ texture

So the map asks for tiles from the retrifier, which in turn gets them from Live Maps. The stains texture is offset depending on the tile number. That’s about it!

I wanted to use the actual Google imagery, because it looks nicer, but it is against their terms of service, so I’m using Live Earth’s. It’s probably against Microsoft’s as well, but at least they haven’t blacklisted my server… yet…

Today’s website is brought to you by Helvetica and the colour #FF7236

Welcome to my new site, resplendent with thoughtful reduction.

Over time I will be updating with tall tales from projects I’m working on, snippets of portfolio goodness, miscellaneous experiments and other reasons you might like to hire me.

Under the hood

Vera

I punch all my posts onto cards, which are fed into the computer by Vera (pictured), then lightly sauteed in a combination of Markdown and Smartypants that I like to call PantsDown. PantsDown converts punch cards into HTML, which is saved into a PostgreSQL database.

How it all fits together

THEN, at your request, the elegant web framework Django (with a customised install of ByteFlow) sashays past, picking out the bits of information you asked to see. Django precisely slots the data into my adaptation of the Modicus template (which uses some colours I picked out), and plates the whole thing up, garnished with a little bit of JQuery, and serves it to the browser of your choice.

Yes indeed

I do my bit on an Apple Macbook Pro. Most of the crunchy action happens on a server at Webfaction.

Voila. Enjoy!