Perhaps you need a Clocky…
Rose pointed me at a nice article about some kids in Humberside trying to bring back some water voles that were relocated to Devon when building work threatened their habitat.
Keisha, 10, said: “I’m worried the water voles will be extinct in Goole because if they move to Devon they might die because they won’t know their way round.”
The building developers have apparently relented and are returning the voles to Humberside, to the satisfaction of all concerned. Except, I rather suspect, the voles themselves…
Guy Kawasaki is a fun and interesting guy, and I enjoyed the recent interview with him on the excellent Venture Voice podcast. Excerpt:
When you see a company, what do you look for? Is it the entrepreneur, the market analysis?
Well, this is the question that every VC gets asked and every VC answers consistently by saying, “We’re looking for a proven team, with proven technology, and with a proven business model”.
And that’s a load of crap.
Because, frankly, if you look at the huge successes, I would say for those three parameters, usually the huge successes are zero-for-three. Maybe one-for-three.
And I would say that about Apple, I would say that about Google, about Cisco, and Yahoo. They were not three-for-three there.
So I could more easily build a case that you should look for an unproven team with unproven technology in an unproven market, cause that’s the billion dollar deal!
We watched “The Spanish Prisoner” last night. I’ve been a fan of David Mamet’s since seeing, buying and watching several times his version of The Winslow Boy. The Spanish Prisoner comes halfway between that and The Usual Suspects! Both recommended, if you don’t know them.
Mamet’s wife, Rebecca Pidgeon, stars in both films, with a somewhat less flattering coiffure than shown here. Her acting style (or perhaps it’s more his directing style) is a little unusual, but I think she’s great.
My Nokia E61 has a keyboard and a little joystick thingy. It doesn’t have a touchscreen. This can be restricting for some applications but it has a major advantage, as Steve Litchfield points out: Screens without a touchscreen in front of them are much more readable in sunlight. He has some photos to illustrate this.
Product placement is getting more subtle, and you can do it yourself.
A company called PayPerPost will pay bloggers to write articles about particular topics and link to particular advertisers’ sites.
I hereby promise that Status-Q will never stoop so low!
Toni Schneider signed up and reported back. Extract:
I opened an account, scanned their offers from advertisers and picked one more or less at random. It was from a site called WeddingStrategies. They offered me $10 for writing a blog post about them with at least 300 words. Their instructions included “title needs to include keyword wedding or weddings, PR3 please, no business blogs, no mention of PayPerPost.” That last bit certainly was revealing.
‘PR3′, in case you don’t know (I didn’t) is a measure of your popularity on Google’s Page Rank algorithm. You can check it here. This blog is PR6, I gather – perhaps I should be trying to profit from that!
Firefox 2 is out. Can’t say I really notice much difference, but I thought 1.5 was just fine, so I’m not upset.
On the Mac, though, it still doesn’t deal with RSS feeds as nicely as Safari, so it won’t quite displace my default browser yet.
To the London LinuxWorld today, which seemed miniscule after the San Francisco one only a few weeks ago. I was surprised at just how small it was, given the importance of Linux to the UK, and the importance of the UK to Linux, but it was still interesting.
On the train I was listening to podcasts, as I often do now while travelling. That has been the biggest impact of the iPod for me personally: the fact that I no longer consider waiting time and travelling time as wasted time, even if I’m driving or walking and couldn’t easily read a book. I spend much more time on my iPod listening to speech than I do to music…
Anyway, one of the interviews I listened to was with Jeremy Allison, a key developer of Samba. For those who don’t know, Samba is free software which shares files and printers over a network using Microsoft’s protocols, meaning that Windows machines can communicate with Macs, Linux & Unix boxes and a variety of other devices that use Samba under the hood. It’s a very important piece of software, and I’ve been using it for about 11 years.
Of course, Microsoft don’t publish the details of their protocols. If they had their way, then Windows machines would only be able to talk to other Windows machines. So Andrew Tridgell, the creator of Samba, has to work out what they’re doing through a variety of cunning techniques. He wrote a nice article about how he does it. I particularly liked his description of what he calls ‘The French Cafe Technique’:
Imagine you wanted to learn French, and there were no books, courses etc
available to teach you. You might decide to learn by flying to France and
sitting in a French Cafe and just listening to the conversations around you.
You take copious notes on what the customers say to the waiter and what food
arrives. That way you eventually learn the words for “bread”, “coffee”
We use the same technique to learn about protocol additions that Microsoft
makes. We use a network sniffer to listen in on conversations between
Microsoft clients and servers and over time we learn the “words” for “file
size”, “datestamp” as we observe what is sent for each query.
Now one problem with the “French Cafe” technique is that you can only learn
words that the customers use. What if you want to learn other words? Say for
example you want to learn to swear in French? You would try ordering something
at the cafe, then stepping on the waiters toe or poking him in the eye when he
gives you your order. As you are being kicked out you take copious notes on
the words he uses.
The equivalent of “swear words” in a network protocol are “error packets”.
When implementing Samba we need to know how to respond to error conditions. To
work this out we write a program that deliberately accesses a file that
doesn’t exist, or uses a buffer that is too small or accesses a file we don’t
own. Then we watch what error code is returned for each condition, and take
Here’s a neat utility I’ve just discovered which fixes one of the few things which bug me about the Mac user interface: WindowDragon.
It lets you assign mouse/key combinations to drag and resize windows without having to make your way to the title bar or the bottom right corner.
On my setup, for example, Ctrl-Alt-drag anywhere in the window will drag the window around. (Linux GNOME users, BTW, can also do this with Alt-drag). It’s so much easier than normal, and so much more like moving bits of paper on a desktop. Try moving some things around on your real physical desk, only allowing yourself to grasp them by the top edge, and see whether you think it’s a good interface…
I’ve also set Ctrl-Alt-right-drag to resize, and yes, you can do it from any corner or edge, or even anywhere vaguely in the vicinity of the corner or edge. Very handy, but I’m going to have to find a different combination when I’m using my one-button trackpad…
I thought this might be a good use of the squeezy side-buttons on my Mighty Mouse; you can use them if you set the mouse to treat them as ‘Button 4′. I like the idea of ‘grabbing’ the window like that and moving it around, but I’ve never really been able to grip those buttons and use my mouse easily – they’re just not quite in the right place.
You can disable WindowDragon for particular apps if you need the key assignments for something else.
Warning – geeky post ahead… I’ve been doing some coding this week…
Anyone who’s done any programming, at least if it’s outside the limited confines of an integrated development environment, will have come across the make utility, which was developed nearly 30 years ago at Bell Labs.
Make lets you list which bits of a program depend on which other bits, so that when you make a change, say, to one of your source code files, you can just type ‘make’ and the bits which need to be updated as a result all get rebuilt automatically.
People use it for other things, too; many years ago I had to produce Rose’s PhD thesis through a rather complicated process which started with floppies from a dedicated Panasonic wordprocessor, ran through a C program I wrote to decode the disk format, a Perl script to convert the files to LaTeX, and then Latex itself and finally dvi2ps to get the Postscript output for printing! Each stage generated different files, updated tables of contents etc, and when she fixed a typo on her Panasonic, I needed to ensure that it was propagated through the entire pipeline and made it into print. Make was good for that.
But anyone who’s built a project of any size will also know that make is far from perfect. It really hasn’t evolved much in its thirty years and the syntax, while elegant for very small projects, becomes unintelligible for large ones.
Here’s a small segment of a Makefile I was writing last week:
define PROGRAM_template $(1): $$($(patsubst %,%_OBJS, $(notdir $(1)))) \\ $$($(patsubst %,%_LIBS, $(notdir $(1)))) g++ -o $$@ $$^ $$($(patsubst %,%_LDFLAGS, $(notdir $(1)))) $(LDFLAGS) all:: $(1) $(foreach obj, $($(notdir $(1)_OBJS)), \\ $(eval $(call OBJECT_template, $(obj),$(notdir $(1)) )) ) endef # Build every program defined in PROGS $(foreach prog,$(PROGS),$(eval $(call PROGRAM_template, $(prog))))
Don’t bother trying to understand this. The point is that it’s pretty arcane stuff and I wasn’t trying to do anything too sophisticated here.
If you’ve written Makefiles before you probably know roughly what’s going on, but do you know exactly what’s going on? Would you have got the right number of $ signs in the right places? Could you say why $$^ is in here and not $$< ? Why I have to call things and then eval them? Then try and imagine what it’s like for somebody seeing a Makefile for the first time!
And here’s the worst bit: for this to work at all, the gap at the beginning of the ‘g++’ line must be a tab, not spaces. So simple code that looks perfectly correct may not actually work when you try to run it. It’s a nightmare.
So last week I decided that using make in the 21st century was probably ridiculous, and it was time to search for alternatives.
Here’s a neat little free Mac app that’s getting some attention: Tangerine.
It analyses the music in your iTunes library and works out the BPM (beats per minute) of each track. It’s in beta at present, but works really quite well. There are multiple uses, but I guess the chief benefit will be for those who like to exercise to music and want to jog at a consistent speed!
I could use it to discover that the people running twice as fast as me are only doing so because they’re listening to Hall & Oates’ Maneater (179bpm) while I struggle along with Dylan’s One More Night (89bpm).
Of course, if you’re creating playlists of songs that blend into each other, you can juxtapose songs with a x2 speed multiple and they work rather well…