Welcome to the product, groovers
Wednesday, June 27th, 20071972 Wella Balsam ad, from A Word From Our Sponsor, about mainstream advertising’s co-option of the 60s/70s counterculture.
1972 Wella Balsam ad, from A Word From Our Sponsor, about mainstream advertising’s co-option of the 60s/70s counterculture.
Unable to resist the allure of such advanced technologies as comments and a proper archiving system, I have switched my blogging software to WordPress.
Sorry for the RSS-reader hiccup I will presumably cause
. I also took the opportunity to work on the stylesheet for the site a little bit. Please let me know if anything doesn’t work right…
Oh, and I must report that I have failed to keep my permalink URIs from changing. And I am suitably ashamed.
Bram Cohen (the BitTorrent guy) posted one of the programming challenges he apparently uses in job interview screenings:
What is the exponent of the largest power of two whose base seven representation doesn’t contain three zeros in a row?
It’s implied that the solution should involve some coding. Here’s the original entry; here’s my take on a solution. The comments on Bram’s entry make interesting reading (it’s not quite what you might expect), but have a go at a solution first if you’re going to
.
I don’t wish to make high-handed comments about software licensing and its associated attitudes, but this makes me so glad I don’t rely on much proprietary software any more:
…I insert fake bugs just so I can publically embarass crack users. Future crack-specific “bugs” won’t be as blatant as this one – they’ll involve annoying changes to functionality, unexpected results, etc.
Additionally, if enough thrust is applied, any pig is capable of ballistic flight.
See also the Rock, Paper, Scissors article: Amazingly complete, with photographic gameplay guide, international tournaments, application to evolutionary strategy in lizards, and pages more…
Oh, how shall I reverse the order of lines in a file?
In Vim:
:g/^/m0
(thanks, Vim manual chapter 12!)
From the shell:
tr "\n" "#" < myfile.txt |rev|tr "#" "\n"|rev
(Watch out for #s in your source file)
(thanks, Lonneke!)
Update: GNU Textutils includes tac (cat backwards…) which reverses the lines of its input.
In addition to the title being a punchy six-word-story in its own right (though cribbed from the title of a Gorillaz song), the above is a great six-sentence-story by Peter Wild which I ran across recently. It’s been lingering in my mind ever since.
I just noticed that the whereis.com.au API has been opened up to developers (right after I was presented with a 1997-esque “please use one of our approved browsers” roadblock-page when trying to visit the main site). Menno says that they had an API of some sort available a year ago when he asked them about it, but they wanted money, so this is a definite improvement.
I would actually be more interested in seeing an API for the Sydney Transport Infoline. There are plenty of interesting things that could be done with the trip planner: Dynamically-updating mobile apps (“OK, you missed that bus, instead catch this one”); next-bus-home desktop/dashboard widget showing the next few departure times for your commute home; GPS data (“get me home from here”), etc.
Jeremy Zawodny’s talk proposal From Open Source to Open APIs last week got me thinking about this stuff a bit more: To me, an API is usually something that provides some kind of functionality. But the value of what’s being wrapped up in many of the popular web APIs (Google Maps, Flickr, Facebook, etc) is really the data the APIs can work over. The fact that it used to be hard to make web sites that use maps, for example, has less to do with a lack of mapping software and more to do with a lack of legally unencumbered map data.
So why have web APIs at all in these cases, instead of big lumps of free-licensed data for anyone to integrate? The most obvious answer is that most of this data changes frequently: When this happens, the main value isn’t the body of archived information, but the provider’s promise to be up-to-date (services, not intellectual property, to frame it in familiar terms). But the data encumbrance problem doesn’t go away by itself: Unless the data (static and dynamic) is available under a free license, ‘open’ APIs are a huge vendor lock-in: End-users are still essentially relying on a data monopolist at the back-end, and application developers are still ‘sharecropping‘.
John Gruber (the Daring Fireball guy) can be a bit of a nutcase, but he has a perfect explanation of why DRM doesn’t make sense:
It’s almost impossible to see how allowing Apple to sell DRM-free music through iTunes would make piracy worse. Music piracy is already rampant. There is not a single song on iTunes that can’t be downloaded for free from a P2P network.
Perilous to all of us are the devices of an art deeper than we ourselves possess.
– Gandalf the Grey [J.R.R. Tolkien, "Lord of the Rings"]
Google flew a plane over my house today – they’re taking hi-res photos for Google Maps.

The first Google Techtalk made available on Google Video was a talk on ‘Zero Configuration networking’ by Stuart Cheshire in 2005 – I just got around to watching it. Here’s a summary of the most interesting bits (long and very nerdy):
Zeroconf was developed at Apple, and has been marketed as Rendezvous, and subsequently Bonjour. It’s designed to allow networked devices to be plugged in just like you can plug a lamp into the wall. It’s largely inspired by AppleTalk. Here’s how it works, roughly, for a system connected to a new network with no infrastructure (so no DHCP, etc):
Now you have an IP address, but what about DNS names? First, we need a way to do DNS lookups (remember, we haven’t been told about any nameservers):
So now we can pick a unique name:
Service publishing/discovery (i.e. devices telling the network what then can do – “I’m a printer” etc) is implemented using obscure but apparently standard features of DNS, most interestingly SRV records. These are fascinating: They allow a given hostname to resolve to an IP address and a port, instead of just an IP address (for example: www.maebmij.org would point to 220.233.213.187:80). This is described as addressing an oversight in the original design of DNS – and he suggests that assuming a hard-coded port for each service is a hack resulting from it. (What are the implications here, outside of Zeroconf? You could replace webserver name-based virtualhosts with a range of ports, and corresponding DNS entries, for example. But it does increase reliance on DNS, since you could no longer (for example) ssh directly to an IP address.)
So, what steps are needed for service discovery for, say, finding IPP printers?
_ipp._tcp.local PTR ?
– in other words, please give me all PTR records (i.e. other names, or perhaps ‘aliases’ if that’s the right term) for this name
_ipp._tcp.local PTR My Laserjet._ipp._tcp.local _ipp._tcp.local PTR photoprinter._ipp._tcp.local _ipp._tcp.local PTR Fax printer._ipp._tcp.local
So we now have a list of the names of printers we can use.
photoprinter._ipp._tcp.local SRV 0 0 631 chewbacca.local photoprinter._ipp._tcp.local TXT pdl=application/postscript chewbacca.local A 192.168.1.60
In other words, “photoprinter is a service on port 631 of chewbacca”. Note that the last line wasn’t explicitly requested (we didn’t know about the hostname ‘chewbacca’ until after receiving the first line) but the system helpfully gave it to us anyway – again, standard DNS.
A bit of work-related musing about natural language question answering (eg AskJeeves) for individual web sites:
Most of the time, when I search a site, I’m looking for a document, rather than an answer to a specific question – eg campus maps, unit home pages, API function lists… In this sense, the search field is like asking for directions on the street – my questions would usually be “where is the…” or “how can I find…” which aren’t actually looking for literal answers but ‘directions’ to some object.
I think there’s a parallel to surgeon-in-operating-theatre language for this kind of thing – “scalpel!” instead of “could you pass the scalpel?” – it’s obvious what is required, and it’s quicker and less ambiguous to specify exactly what you want without wrapping it up in an indirect speech act.
One of the talks at SummerFest last week mentioned a natural language interface to a PDA, where users could say things like “show me a map of this area” – the researcher said that the users in their test quickly discovered they could just say “map” and get the same response, and thereafter preferred that mode of interaction. I think this suggests the following:
A change in the latest MacOS Leopard build: “3D audio cues to indicate locations of items on the screen in the VoiceOver screen reader“.
What an awesome idea! With enormous screens, it would make more and more sense for the plinky beepy noises in the user interface to locate themselves using the system’s surround sound. If you receive a new chat message, it makes sense for the new-message sound to come from the little chat window forgotten in the corner of the screen.
It’d be interesting to consider what it should sound like when minimised applications make a sound (does it ‘come from’ the minimised app tray/dock? Does it sound muffled?), or applications sitting on other virtual desktops (distant and echoey? ‘Through a wall’?).
Consistent branding:
![]() |
![]() |
![]() |
![]() |
| Original Mozilla Phoenix (then Firebird) logo | Official Mozilla Firefox logo | Current Debian and Ubuntu Firefox logo | Proposed Iceweasel logo |
Background: To protect the Firefox brand/quality from damage, the Mozilla organisation has asked that all changes to Firefox by third-party distributors be submitted for approval, or the “Firefox” name not be used. For some time now, Debian and Ubuntu have not shipped the official Firefox logo because of copyright restrictions (again related to ‘protecting the brand’), and now they’re talking about changing the name, as well, which gives them the excuse to replace the current blue globe with something cuter.
I started a del.icio.us account a few days ago and have been having fun with it. I don’t know if it’s really that useful, but playing with apps like this is always entertaining. Here’s my page.
Also, I thought I’d point my readers to James Crisp‘s new blog while I’m here
. (Update 2007-07-30: Changed blog URL, since James moved away from blogspot).