Anyone who has ever argued against Postgres on performance grounds should go and read this, then eat their hats. Unsurprisingly, the real lesson is the classic: know your tools and know your data.
I’ve disabled comments for the moment – I’m getting too much stupid spam which my current filters can’t deal with. I’m in the process of upgrading my blogging software, and I’m hopeful the new version will deal with it better. It’s very annoying… My current filters work really well at preventing the spam from actually getting published – that is, I am not a good target for the spammers. It doesn’t stop them though, and I’m having to wade through tons of junk every day on the offchance that someone has left a real comment I should publish. Oh, the tedium.
I hope I’ll be able to turn this on again over Christmas or in the New Year – but no promises.
Two things I love: Amelie and biscuits.
Here’s a beautiful example of why Haskell is the most advanced programming language on the planet – a one-line definition of the entire fibonacci series:
fiblist = 0 : 1 : (zipWith (+) fiblist (tail fiblist))
Stunning. Note that that is not a function to calculate the nth fibonacci number: it really is a definition of the entire series. If you want the nth fibonacci number, look up the nth element of that list. Let’s see you do that in Java! (Or C#)
Joel on management consultancy – golden. The crux: “
The whole fraud is only possible because performance metrics in knowledge organizations are completely trivial to game.
Follow-up 2006-11-29: Weâ€™re from Harvard and we cost too much for you – balanced, insightful.
Interesting and balanced. I tried Django about a year ago and did indeed get going with it quite quickly, although the lack of migration was a big pain in the butt, and sounds like a killer feature in Rails.
There – I’ve said it. Wonderful and well-expressed analogy for the Iraq situation courtesy of Simon.
I’ve just realised that Goldfrapp’s song “Strict Machine” is actually a rant against haskell, or possibly miranda. One can hope that it’s the Python or Ruby runtime she’s in love with, but somehow you just know it’s the JVM, in all its baroque 80s-retro glory. Silly girl.
I blew her a kiss once, you know. I got a cold stare in return.
Thanks, TR! How lucky the children whose first language was Logo.
I’m still on my Haskell learning curve, and I can vouch for the incomprehensibility of monads. Thankfully I haven’t had to do anything yet that required actually understanding them, though I have used them… :-)
This paragraph grave me pause:
If you’ve got a class full of first year computer scientists, you can teach them to read and understand the full formal semantics of Haskell. You can make it completely non-mysterious. Everything can be explained by the standard lambda calculus Î±, Î², and Î· rules, with no hidden complexities. It’s all remarkably straightforward.
In fact, it made me sigh, imagining first years getting formal semantics, lambda calculus, and even, well, Haskell. Another world…
His story of the Finnish teacher doesn’t surprise me. In my first job (ie in about 1995 or so) a colleague reported showing one of the admin girls a mouse (upon upgrading her computer from DOS to Windows), and her doing exactly the same thing: lifting the mouse up and waving it around in the air. You’d have a hard time reproducing this result now, I guess, because even someone who’s never used a mouse (think: your gran) has probably seen them used on TV, for example.
There’s a story in today’s Guardian about banning happy-slapping videos on sites such as Youtube. The journalist understates the difficulty and complexity of this issue beautifully:
The issue is likely to be raised when MPs debate the violent crime reduction bill next week, but it is unlikely an amendment on such a complex area of broadcasting freedom could be put together in an acceptable form over the weekend.
Unlikely? Over the weekend? D’ya think?
It reminds me of the debate over the hate-speech bill, one of the counter-arguments to which was that the law, as framed, would also in fact exclude much comedy. Gladly this doesn’t seem to have transpired, but still, the powers are there and could be used.
In particular, if you ban YouTube from hosting disturbing videos of indiscriminate and unwarranted violence, that law could well ban videos such as these, of protesters being tasered. Some of these are truly disturbing, and not the kind of thing you’re going to see on BBC News any time soon – but their availability is progress in the battle towards an open society.
Robert Fisk was on Desert Island Discs yesterday. Say what you like about him, he spoke well, and clearly sees the job of the journalist as telling the truth – whatever it is, however unsavoury. Youtube and its ilk are an opportunity for anyone to engage in telling the truth as they see it, and in documenting world events. News is a highly politicised monetised commodity (hello Mr Murdoch), and any movement towards decentralising news gathering/distribution to the public at large is progress. Something else Fisk said, IIRC, was that if the public saw the reality of war as he had seen it, “the dogs eating the corpses of children” as he put it, they would never, ever, support any war. A law which bans violent videos from the internet runs counter to that trend.
The only mitigator would be a “public interest” clause, I suppose. So if you seeing a violent video law being framed without such a clause, protest. Even so, I’d argue it’s problematic…
Insightful and non-intuitive – just the way I like it: increased precision in avionics arguably increases the risk of mid-air collision.
It wasn’t all cryptography, you know; or physics; or thousands of men lobbing hot fast-moving shards of metal at each other repeatedly.
We teach a third-year/MSc module called “Design Patterns and Generic Programming”. Instantiated by Oliver Kullman, and now taught by Chris Whyley, it introduces these topics in the context of C++ (and is, for most of our students, their first exposure to that language).
On Friday I suggested something to Chris which I’d been mulling over for a while, namely an “anti-patterns” lecture at the end of the module. It would be “anti” in two senses… First, a discussion of the idea of antipatterns: things to avoid. Second, and more interestingly, a discussion of the idea that patterns are just a stop-gap response (albeit a highly rational one) to deficiencies in your programming language, and that more advanced languages make them trivial or meaningless. Chris thought this sounded good, so now I’ve got to gather my thoughts. In timely fashion, along comes this piece (via raganwald) expounding the very same idea. (Disclosure: it’s not my idea, it’s something I’ve been seeing mulled over and expressed in varying depth and eloquence on the blogosphere of late.) This post is particularly interesting in that it looks for pre-GoF patterns, recognising that patterns aren’t a specifically Object-oriented phenomenom, but rather a general software development phenomenom, and we can excect to see new patterns in the future, as the patterns of today fade into the undistinguished background.
I command all of my students reading this to go and read this piece on tail call optimisation. If you’re anything like me, you’ll need to read it at least twice, write out the ruby examples by hand so they actually enter your brain (maybe I just needed more coffee), and follow many of the links for further explanation. It will be well worth it. This man has intelligent things to say, with which it is worth being familiar, if not intimate.
In the spirit of the RISKS Digest, with which regular Gimbolanders will be familiar, The Daily WTF looks like it’s worth reading to remind oneself of the crazy and unexpected stuff that can go wrong, and the stupid stupid STUPID!!! things our beloved colleagues sometimes force us to endure [raganwald].
The other reason to read WTF right now is that picture of Boomer in their sidebar – miaow.
Wow. JVT gets a mention on Lambda The Ultimate. Proof that he’s made it.
The funniest thing about the latest PBF comic is that whales actually evolved from land dwellers. That’s always completed freaked my noggin: you are a quadraped the size of a wolf and you decide it’s time to head back to the ocean and start evolving into the largest animal on the planet. WTF?
Yeah, no blogging lately. I’ve been busy and haven’t felt like it. Fneagh.
The best preparation for being able to deal with the things you want is not getting them.
(For a while, at least. ;-) )
As previously reported, last Saturday was carnival day in Swansea and I got roped in, very willingly, to do some steel pan drumming. It was a great day, and I have discovered a love for dancing in the street. :-) There were loads of amazingly dressed people doing fun things and generally celebrating the idea of having a good time and being alive. Good stuff. I ended up in the Monkey that night and met lots more interesting people, including someone who’s going to help me execute my next Cunning Plan. Watch this space.
Meanwhile, my carnival photos are here, although they’re mainly before/after shots (ie of the preparation and aftermath), since during the actual procession I was a bit busy banging on my drum. A few favourites:
It was only a matter of time before somebody did this. What was surprising was that the culprit wasn’t, apparently, a student…
This is where we live:
This, thankfully, is not:
This might explain why the publishers didn’t send me an inspection copy when I asked them for one about six months ago…
Late notice but: tomorrow I will be playing steelpan in the parade at Swansea Carnival!
I had never played one before Wednesday (ie two days ago). I got roped into it by one of my African drumming buddies, went to rehearsals Wednesday and yesterday, and tomorrow is the big day.
So if you’re in town tomorrow around 1PM, 2PM or so, look out for me at the front of the steelpan float, dressed up crazy, probably with painted face, trying desperately to keep up with Rocco’s frantic hammering. Hopefully I’ll look like I’m having a good time – possibly ending up in the Monkey in the evening.
Tonight it’s “Jab Jab”, which is some crazy pre-carnival procession-cum-pub crawl. I’ve been told it’s better than the carnival. Alas, I don’t think I’ll make it, because one of my work computers has just died (the Windows one, obviously), right in the middle of me trying to do my post-resit-exams marks admin work. Gaaaah! Fricking computers! Ah well, party time tomorrow, anyway.
Great for tasks which trivially parallelise, anyway.
One for everyone who took CS-318 last year, or will be taking it next year: Bruce Schneier Facts.
I saw this in G2 the other day and literally (and yes, I do mean literally!) laughed my head off.
Somewhat in the spirit of “Gabriel at the airport”, here’s an amusing little snippet from Paul Miller.
61 years ago today, atomic weaponry was used in anger for the first time, against the Japanese city of Hiroshima. Here is a first-person eyewitness account of that event and the days that followed. It is worth reading.
Reading this eWeek article on Sun’s desire to support dynamic languages better on the JVM (via lambda) I was struck by the following sentence:
Gilad Bracha, a computational theologist at Sun delivered a presentation called “Dynamically Typed Languages on the Java Platform” at the Lang.NET 2006 Symposium here on August 1, and said Sun plans to broaden its support for dynamic or scripting languages.
Exqueeze me? Computational Theologist?
Perhaps, I mused, this had something to do with computing The Nine Billions Names of God (not something I’d use Java for, I think). Or maybe some other scripture-related buffoonery such as finding predictions of Lady Diana’s death in Moby Dick… So I googled for it.
Nope, turns out it’s something Gilad Bracha made up because the task of interpreting natural language specifications of languages and virtual machines reminded him of Talmudic scripture interpretation.
Oh, how I laughed. It is, from one point of view, a beautifully subversive move on Brachca’s part – perhaps a first step in decoupling the word theology from anything to do with God or gods, which is bound to annoy existing theologians and is thus worthwhile. Also, I can completely see what he means in that most natural language specifications I’ve seen are full of ambiguities, irreconcilable contradictions, and just bad thinking. I leave the reader to close the loop on this analogy.
On the other hand, I’m cautious about welcoming the use of the word, and its associations, anywhere near computer science. If science and reason free us from having to use religious dogma to explain the world, and if mathematics is the language of science, and if computer science is simply one form of mathematics – all of which I believe – then religious tools and terminology are a poor fit to the domain, if you ask me.
By the way, I’m not saying in the previous paragraph that I believe science makes religion completely unnecessary, or proves it to be hogwash. I don’t believe that for one moment – although some people do, and you can say what you like about science being their religion. I believe the rational worldview and the religious one are two orthogonal ways of looking at the world. Anything we can explain or deduce with science, religion has nothing to say about; for me, religion lives in the gaps between the theorems, in the undecidable propositions, in the time between the end of this universe and the start of the next, in the unknowable, in the sublime.
After graduation, Seyhan decided he’d had enough of computers, and moved into haulage:
(Photo by Bash on Fabian Way, apparently.)
Hokay. Google is without a doubt the single most useful and successful tool ont’Internet, a marvellous success story and something most of us would miss deeply until the happy day it’s superseded by something Even Better. It’s fast, it’s got a nice simple interface, and most of the time it “just works” and gives you what you want.
Unfortunately, some of the time, it really doesn’t “just work” (for me, at least) and in an apparently non-fixable way. I usually hit this when I’m doing programming-related searches.Read the rest of this entry »
This Friday (28th July 2006), there will be an evening of “Uplifting Dance Music” (what Julie and Heather used to call “bleepy shit”) in Swansea, to which you should come.
It’s the 10th anniversary of the very first outing of the classic Swansea dance night Unity, which stopped running several years ago (certainly before I came to Swansea). I understand it will be something of a reunion of lots of people who were involved over the years, so it ought to be quite good fun.
It’s at “The Inferno” (above Blockbuster Video in Uplands), running from 9pm to 1am; admission is 4 quid (2 quid before 10pm). “Dress extravagantly”, the flier says. It’s being organised by Geraint, the man who first drew me to Swansea so many years ago in order to twiddle knobs on synths and make bleepy thumpy things happen.
Maybe see you there…
(Apologies for short notice; I’ve been meaning to blog this for ages… Wanted to scan the flier but don’t have access to a scanner and didn’t sort it out. Bah.)
… Iraqis are using fake IDs in light of the recent growth in sectarian killings. The major groups in Iraq are not distinguishable by physical traits, but they are by name. To avoid being killed, people are getting false identification cards: Surnames refer to tribe and clan, while first names are often chosen to honor historical figures revered by one sect but sometimes despised by the other. For about $35, someone with a common Sunni name like Omar could become Abdul-Mahdi, a Shiite name that might provide safe passage through dangerous areas.
Of course, I’m not suggesting this is an argument against having ID cards here in the UK, at least unless Welsh-English tensions get seriously worse. I did once pretend to be Welsh in the face of some extreme hostility, mind – but the drunk Welsh rugby wanker in question didn’t demand my ID card at gunpoint, so…
The status bar monitors that come in Mauricio’s code don’t work for me, however, because I’m running FreeBSD not Linux, and things like uptime and battery status get report differently. Also, there wasn’t any xmms control/monitoring. I have now fixed both of these problems, and invite others to partake of the goodness.
So: firstname.lastname@example.org – a ruby/wmii plugin defining status bar monitors which work under FreeBSD.
And: email@example.com – a ruby/wmii plugin defining an xmms status bar monitor, and some key bindings for simple control of xmms (play/pause; next; previous; forward 5 secs; back 5 secs; toggle shuffle; er, that’s it).
Status bar screenshot:
From left to right: xmms monitor displaying track name, time elapsed, shuffle status (“>” is normal, “@” is shuffle); current master volume; the “-N-” is a standard plugin so I say nothing here; temperature and CPU speed; load averages; uptime (h:mm); battery status and time remaining; date/time.
Comments, suggestions, bugfixes, criticisms of my appalling ruby code all welcome.
All the t-shirts I will ever need are at threadless. And if they aren’t, I can submit my own designs and have them voted on. Quality.
Shame they’re in America. Why isn’t there anything like this (or CafePress) but based in the UK? (At least, there wasn’t the last time I looked – is there now?) Seriously though, I could spend a lot of dollars here. If I had any. :-)
Interesting: nearlyfreespeech.net provide (US-based) web hosting on a pay-for-usage basis. $1.00 per gigabyte transferred, and $0.01 per megabyte-month of disk storage.
Gimboland currently consists of about 200MB of storage, and about 1.5GB per month bandwidth (somehow!). So that’d be about $3.50 per month. Not bad.
OTOH I’m only paying $11.95 per month now, which with the current exchange rate is still fairly peanuts. Plus I get to pay by direct debit, which nearlyfreespeech.net don’t seem to support. I’ve been pretty happy with webquarry‘s hosting, so I’m in no hurry to jump ship for the sake of a couple of quid per month. I may yet change my mind about this, however.
Anyway, in the meantime, maybe someone else will find this interesting/useful…?
This coming Saturday sees my glorious musical return to Aberavon, scene of my first (now legendary) gig, oh so many years ago.
This time round there won’t be any bleep or samples, but there will still be plenty of thumping drums – I’ll be there as part of drum troupe Shiko, laying down some African rhythms for the delectation of the good folk at the Sandfields Aberavon Beach Festival.
We’ll be playing at 1pm. Come and see! And hear!
If the following paragraph doesn’t cause you to nod knowingly, you really should read the whole article. (BTW, I’ve changed the figures to percentages, for enhanced legibility by non mathematicians).
Suppose that NSA’s system is really, really, really good, really, really good, with an accuracy rate of 90%, and a misidentification rate of .001%, which means that only 3,000 innocent people are misidentified as terrorists. With these suppositions, then the probability that people are terrorists given that NSA’s system of surveillance identifies them as terrorists is only 23%, which is far from 100% and well below flipping a coin. NSA’s domestic monitoring of everyone’s email and phone calls is useless for finding terrorists.
This kind of result is often very suprising and non-intuitive, and hence important. When reality diverges from “common sense”, we need to understand why, so we can explain it to people who like to trust “common sense” in their decision making processes (eg Daily Mail readers ;-) ). This kind of result crops up all over the place… I first came across it in the context of medical diagnosis, where it basically explains why misdiagnosis happens so often. Quite simply, the numbers are just stacked against us. There’s nothing we can do about it – we just have to understand what’s happening and get on with it.
Our ex-landlords finally returned our £725 deposit last week, over six months after we moved out of the house (moved out 22nd Feb, cheque dated 27th June, received 3rd July). Five months! Nearly six! There’s no excuse for that kind of behaviour.
They were never particularly responsive or helpful landlords. For the entire time we lived in the house there were problems with the shower and bath, and it was a constant battle to get them to act: repeated phone calls and letters, constant chasing, long waits. When when they did act, the job never got done properly – the shower was still not usable when we moved out. (More moaning on this topic here.) The only time they leapt into action was when the rent was a week late because I was changing the account it originated from – we sure heard from them quick then.
So, farebadly, greedy fools – it’s good to be shot of you.
Update December 2006: the house stood empty from February until December, and has only now been reoccupied. That’s about six grand in lost rent they could have had from us if they’d been less greedy and more on the ball. Righteous.
ion beats the crap out of conventional window managers: placing and resizing windows is so tedious (not to mention 20th century ;-) ). It’s lightweight, maximises screen real estate, and has great keyboard support, all of which appeal to me. Until today, I’d have recommended it to anybody.
I did, however, have the following problems with ion: 1) Lua: yick and oh my god, yuck. What an awful language, but you’re stuck with it for configuration/control. 2) The documentation: there, but not very helpful. Too referencey, too automatically produced. 3) Tuomo (the author): sorry, but that is one surly gringo, and heaven help you if you disagree with him. None of these are killers (except maybe lua), but they’re the reasons I’m happy to leave ion behind.
Thus, introducing wmii, which is superficially similar to ion but has a number of features which really set it apart. The most important is its Plan9-inspired approach to control, which allows any language for configuration. You know what’s coming next? Ah yes, we can configure & control wmii using ruby [via the immortal _why].
There are other good reasons to use wmii, but that one is probably sufficient for me – and it speaks of a thoughtful and open design which can only bode well. The wmii codebase really is tiny, by the way – it compiled in no time at all. I started using it this afternoon and I don’t see any reason to stop: it’s easy enough to pick up, although I’ll be tweaking the config for the next week or so. Using Ruby – w00t!
I’m pleased to report that Bash’s Budget Birthday Beachparty Bonanza went rather well. A few no-shows, but a respectable picnic, some kite-flying (complete with little girls gleefully chasing the tail as I trailed it before them with my l33t k1t3 skills), four of us swimming (not so cold, and big big waves), and a brief panic over a not-actually-lost wedding ring. Apres ca, back to ours for Dr Who (ooh, what a tearjerker) and an evening of nibbly chatty goodness. Today is relaxation day – watching Michael Palin and fiddling with wmii, of which, more shortly…
This Friday is Bash’s birthday. On Saturday we’re celebrating by going to the beach: Langland Bay, just round the corner from Mumbles. We’ll be there from about 4pm onwards. Anybody reading this is invited, and so are their friends.
More details and a link to a map may be found in the fabulous invite which Bash made using Mac Magic yesterday:
Seen the new Tango ad, with the fruit rolling down the hill, through windows, knocking over the bike, etc.? The one that’s a spoof of the, oh, is it a Sony ad in San Francisco? (Sony: CGI sterility; Tango: real fruit messiness).
They did some pretty decent viral marketing via via the “Swansea North Residents Association” website – looks convincing at first, but the clues are there. My doubts disappeared when I read they were launching the Swansea Yodelling Club. :-)
If you haven’t seen it, it’s online in various places, including google or at that “residents’” site.
It’s exam marking season hereabouts (and, thanks to the AUT industrial action, coursework marking time), so I’ve got my head down in piles of exam scripts.
One exam (on IT security) was a complete nightmare to mark – essay questions, loads of text, oh it just took ages. It really seemed to go on forever. At least I only had to mark half of it – but I really wasn’t looking forward to my other exams, to be marked all on my own.
Python to the rescue!
No, not a random number generator (though it’s sometimes tempting). Instead, a motivational tool: something to keep me focussed and “in the game”.
I have two problems when marking, basically: one is that when I’ve got a huge pile to get through, and it’s going fairly slowly, oh it’s sooo painful and you want it to be over, but it isn’t, and it won’t do itself, and, well, it’s all very antimotivational. The other problem is that I get distracted easily, so I’ll do a few, then chat, then do a few, then play Urban Dead for a bit, then do a few more, etc. Naturally these two problems feed into each other, and a snail’s pace is achieved.
It’s all mental – the issue is focus. Thus, we present jobtimer.py, a little script I knocked up in a hurry yesterday evening to help me stay focussed. And I gotta say, it’s proven instrumental in helping me hammer through the networks exams in record time.
Basically, jobtimer.py is a simple tool for keeping track of progress through a large batch of small repetetive jobs, where you want to know how long you’re spending on each job on average, and how many you’ve done so far. It has a simple text-mode keyboard interface, whose central feature is “you hit space to tell it you’ve finished one job and are starting another”. You can pause it, report on averages, and see how much time since you started has been spent “unpaused and working” (as opposed to “paused and playing Shartak, say).
It’s very simple: no persistence between sessions, no flashy graphics, and probably only works on Unix – it uses select() on stdin to catch keypresses; a Windows version could be hacked using msvcrt, I guess. The code’s not beautiful, but it does the job beautifully well for me.
Read the comment at the start of the code to see excactly how to use it. It’s dead simple.
The clock starts ticking at 15:06:07; the first job takes 27 seconds, then 2 mins 5, then 1:42, then 2:51. 10 seconds into the next job (at 15:06:23), the clock is paused. 15 seconds later, it’s unpaused, and three seconds later that job’s complete. At 15:06:44 we hit ‘a’ to get a reading of averages/stats: 5 done, average 1 min 27, elapsed wall clock time is 7 mins 36, 96% of which has been spent with the clock ticking. Etc., etc. – you get the picture. Actually, looking at this shows me a bug/feature: when you quit, it doesn’t count the job that was just running – so end a job before quitting if you care about accuracy. :-)
“…the talks and tapes offer a momentary boost of inspiration that fades after a few weeks, turning buyers into repeat customers. While Salerno was a self-help book editor for Rodale Press… extensive market surveys revealed that “the most likely customer for a book on any given topic was someone who had bought a similar book within the preceding eighteen months.” The irony of “the eighteen-month rule” for this genre, Salerno says, is this: “If what we sold worked, one would expect lives to improve. One would not expect people to need further help from us – at least not in that same problem area, and certainly not time and time again.”
I’ve been ill. sniffle I still have a sore throat/cough which is shifting slowly, ever so slowly. Bleugh.
And while we’re on the subject of rotting flesh, it’s high time I mentioned the one thing that’s been dominating coffee-time conversation round here for the last month: Urban Dead – a low-tech Zombie Acopalypse Massively Multiplayer Online RPG. It’s really rather good. It’s also (deliberately) very slow: everything you do costs one action point; you’re given two action points per hour; and you can never have more than fifty. As such, you can’t spend all day playing it, so it’s not too much of a time sink. You can, of course, spend all day reading the wiki. My advice: start as a scientist, and get your XP by scanning zombies. Get Free Running as soon as you can, then First Aid. I’ve been playing since the 6th of May and I’m level 9 already.
Alternatively, of course, play as a zombie and eat your friends. Brains! Brains! Brains! Kids OK.
The feature is called User Account Protection (UAP) and, as you might expect, it prevents even administrative users from performing potentially dangerous tasks without first providing security credentials, thus ensuring that the user understands what they’re doing before making a critical mistake. It sounds like a good system. But this is Microsoft, we’re talking about here. They completely botched UAP.
Does anyone know of a tool which can extract the diagrams from a Powerpoint presentation and turn them into something sensible and open, preferably SVG (but EPS or even PDF would do I guess)? Ideally a tool which can do this for all of the diagrams in a presentation in a single pass, but even a solution that requires manual intervention for each diagram would be better than nothing… Thanks!
A handy feature in most web browsers is the ability to remember usernames and passwords for sites you visit often, so you don’t have to keep typing them in – the browser just fills it in for you. Some sites don’t like you doing this, however. If the input tag of the password field contains the attribute autocomplete=”off”, that’s an instruction to the browser not to allow this handy feature for that field, so you have to type in the password by hand every time.
This is arguably quite a good idea, and reduces the chance that a user in an internet cafe will thoughtlessly click “remember” and partially open up their bank account to the next customer. There are some interesting thoughts on the topic here, but that’s not what this post is about.
What this post is about: the intranet at work is one of these security-minded sites that disables autocomplete, which is really really annoying (they also have a brain-dead policy on password expiration, but that’s another story). At certain times of year I have to use this site a lot – it forgets you’re logged in between sessions, and I find myself repeatedly typing the password.
Well, no more. Have I moved to Opera, which ignores autocomplete=”off” altogether? No, of course not – I’ve found a Firefox extension which does the job for me.
Introducing ketjap, which can apparently do a number of quite funky things but which in particular can rewrite tag attributes arbitrarily using a set of prevalue/postvalue rules. So I defined I rule which acts on input tags, on their autocomplete attribute, turning a prevalue of off into a postvalue of on. Et viola, it works. The next time I visited our intranet and entered my username/password, firefox offered to remember the password for me, and I gratefully agreed to its welcome proposal.
Actually, I was a little confused at first, because I looked at the page source, expecting ketjap to have changed that, but that’s not what happens – it seems it alters firefox’s interpretation of the source on the fly, leaving the source untouched. Neato in extremis.
Now I invite members of the public to point out the page in Firefox’s preferences where I could have just ticked a box to make this happen. ;-)
This is very interesting… Common wisdom has it that the waterfall model is the “old way” of doing things, a respected technique from times past, but that these days we’re (struggling to) move towards more agile, iterative methods of software development. Accoding to this, however (and the wikipedia article agrees), the paper that first described the waterfall model actually described it as a bad practice, and went on to advocate an iterative approach, attempting to formalise practice which had been around since the 1950s. Alas, subsequent papers largely missed the point that a purely sequential waterfall was a bad idea, and it got enshrined as “software best practice” of the 1970s. We’re still trying to recover.
Computers are getter smaller and smaller; embedded systems are getting more and more powerful. That means two things. First, what you can do on a computer of given size n is increasing over time: maybe five years ago it was just a microprocessor with 4KB of RAM running custom-built assembly code, whereas maybe in five years it’ll have a gig of RAM and be running OpenBSD or (shudder) Windows. It’ll have more features, more complexity, more failure modes, less security, and in essence, we won’t understand it any more. Second, the smallest systems producable are getting smaller all the time: today you can put that custom-built system with 4KB of RAM into a smaller space than you could five years ago, and in five years time it’ll be smaller yet. That means computers are appearing in more and more places, and more invisible.
The interesting part is when you put these trends together, so you end up with millions of systems flowing through your bloodstream, all running Windows 2020 (or whatever). Yay.
A common idiom in python is to check the special variable __name__ to see if the current module is being run as a script or not. For example:
class Foo: ... def bar(): ... if __name__ == '__main__': bar()
Here, if the module is run as a script (ie passed directly to the python interpreter), then __name__ has the value “__main__”, this is detected, and (in this case) the bar() function is called. On the other hand, if the module is just imported from some module, __name__ has a different value (the name of the module file, I think?), and bar() doesn’t get called.
This is nice for a number of reasons – for example, you might put unit tests into bar().
How to do this in Ruby? It’s not in FAQ, which surprised me. I was about to ask on ruby-talk but then remembered the biggest FAQ of them all, and turned to google. Aha (and eek, what a horrible mailing list interface). Anyway, it’s:
if __FILE__ == $0 bar() end
OK, so why does this work?
$0 contains the name of the script being executed – ie, the name of the file that was passed to the interpreter. Whatever code you’re executing, this value never changes over a particular run of ruby. On the other hand, __FILE__ is always the name of the current source file. If the two match, then the current source file is the one that was passed to the interpreter.
I guess that’s pretty clear. Cool.
I use mutt for email, but I’ve been toying with the idea of moving to Evolution. I can work very quickly in mutt, but I’ve been wondering about going graphical for a while, and I’ve heard good things about Evolution recently so I thought I’d give it a try.
Well, it’s OK, but I’m not completely convinced. There are a number of little things, but here’s what really bugs me…
I have a local spool mailbox with 74 messages marked for deletion, and, well, they’re just sitting there, marked but undeleted. How do I get rid of them? The “File->Empty Trash” menu item works in other mailboxes (eg an IMAP one), but these guys are refusing to go. This would be merely mildly annoying were it not for the thing that really worries me: it fails silently. I click “Empty Trash”, and nothing happens – no error dialog, no status message, nothing written to stdout.
Another one: I select “Help->Contents” to get some help and… nothing happens. No help, no error dialog, nothing to stderr, just another silent failure. This is probably, I guess, because I’m not actually running gnome. But if it’s not going to work, it shouldn’t be on offer. We can do better than this, people.
Silent failure is always a really bad sign because it makes debugging (and thus fixing) so much harder. The fundamental reason why I use Unix rather than Windows is that it puts me in control, and when things go wrong, I can usually track down the errors and fix them. You have to be choosy about the software you use, because a hell of a lot is crap and doesn’t actually help you, but there’s enough which does it properly to make the effort worthwhile.
Unfortunately it’s starting to look like Evolution isn’t one of them, which really surprises me given the people I’ve heard positive testimony from. :(
So, I might perseverse, or I might give GNUMail.app a try, or I might just stick with mutt because it does rather rock. Any other suggestions?
Oh yeah: another reason I like the look of Evolution is for its calendering. I have yet to find a decent calendaring app, which just astounds me. Sunbird looked half decent for a while but then switched from nice open iCalendar format to some stupid binary format, and (here’s the clincher) no longer even runs on my system. It doesn’t start, and it does so silently.
Why is so much software so bad?
Update, a few minutes later: aha, it’s “Folder->Expunge” to clear the deleted messages. I wasn’t seeing failure, I was just asking it to do the wrong thing. Still, this does raise the question: why does “File->Empty Trash” work in the other mailbox? And the help still fails silently. Pah. ;-)
GOD DAMN it!
I used to own a Sony Ericsson k700i and it was a great little phone except that it really sucked in that it only had capacity for 100 text messages. Never mind it had 64Mb or so for photos and music – 100 short messages is all you’re getting, buckaroo!
Well, I upgraded recently to the super shiny w800i – this is the Walkman branded thing, and it’s a very very nice phone. Great interface, great camera, records sound, blah, blah, blah. Oh yeah, and it’s got a little stick in the side which gives it a memory of 512Mb. Half a gigabyte. Double the memory of the laptop I’m typing on right now, in fact.
The bastard thing has just cheerfully told me “Text memory over 95% full – delete some messages now?” No you fucker! I don’t want to delete some messages now!!! Your memory is empty you stupid piece of shit!
Apologies for the swearing but god damn it I’m angry. I mean, I knew the salesman with the Toni and Guy haircut had no fucking clue what he was talking about when he said it didn’t have this text/sms memory limit problem, but all the same, I really thought they’d have sorted this stupid stupid bug out by now. There is absolutely no excuse for this kind of shoddy programming in a product this advanced.
/me goes and kills someone
Lesson one in security: deny by default, allow with care. It is entirely brain dead for your login logic to be “if the logged_in cookie is false, they’re not logged in, otherwise they are”, rather than “if the logged_in cookie is true, they’re logged in, otherwise they’re not”.
Last night, I finished reading Jonathan Strange and Mr Norrell, a tale of the revival of English magic in the early 1800s. It was good – long and good. I was surprised it didn’t end in quite the way I’d been expecting for about the last 600 pages, but I guess that’s no bad thing… :-) There were lots of footnotes, but they didn’t get tedious and she didn’t fall into the Pratchett trap of recursive footnotes, thankfully. Norrell was mainly annoying and boring, which is how he was meant to be – but by the end he’d redeemed himself, mainly by rediscovering his roots, I guess. Strange is the pivot of the book, and towards the end I realised with pleasure that my mental image of him was Hackworth from The Diamond Age. Strong parallels, for sure. (Bash tells me she pictured Hugh Laurie! Possibly Bertie Wooster, in fact! ;-) )
Anyway: definitely recommended, if you enjoy this sort of thing.
(For balance, here’s the perfectly sensible world of Thorsten Altenkirch.)
Erlang looks very exciting. I’m still trying to crowbar Haskell into my brain – and reaching the conclusion that my brain needs inflating a little before it will fit. But Erlang is calling.
For the record: Bash put mayo in her coffee on Saturday.
Video eavesdropping demo at CeBIT 2006 – 25 metres, no wires: sweet.
Via Bash, it’s The Happy Poster project.
In other Bash news, apparently she read the link to this story as “Police Rescue Mouse Tangled in Swingset” – her first thought was “how did they know it was there?” and then, when she saw the picture, “wow – that’s a really huge mouse”. :-)
Further to this post, Sean kindly pointed out a BBC story on the topic. Actually, the story did make me feel a little uneasy – to be honest, I don’t think it’s unacceptable to publish these views, and actually yes, the editor had every right to let it go to press. (Though his assertion that “there was no intention to offend” is fairly laughable – at best naive, and at worst, cynical.)
The point, however, is that we must then respond by all pointing our fingers in derision and horror at Lowri and the Western Mail, and tearing those freely-expressed opinions to pieces.
I just haven’t had time for blogging lately, which means I’ve been busy, which nominally means I’ve got a lot to write about, I guess. So here are the big random snippets from my life of the last three weeks:
Mainly, we moved house, from number 6 in our street to number 1. We’d been at number 6 for two years, and while it was a nice, large house we had compelling reasons to leave. The main reason was the landlords, who fitted the stereotype of wanting your money but not wanting to do anything much in return. Feel free to skip the next paragraph if you’re not interested in me moaning about them…
For most of the two years we spent at number 6, we were unable to use the shower. First, the pipes made this horrible screaming noise every time we tried. That did get sorted, after a number of phone calls, but a few months later we noticed that water was trickling down the kitchen walls and the plaster in the ceiling was rotting – a leaky seal around the bath. More than a year later, we’re moving out and the problem still hasn’t been fixed. Numerous phone calls and letters eventually stirred them into action and they sent a man round to sort it out, who did a botched job – so the problem wasn’t fixed at all. This cycle happened three times (with three different sets of cowboys), and it’s still not fixed. There’s also is a leak in the roof, leading to a similar problem in the bedroom ceiling (and during hard persistent rain, a pleasant drip-drip-drip onto the bedroom carpet). They never really showed any real interest in getting that fixed. In general dealing with them has been unpleasant – they’re a pair of solicitors and when phoning their office one always gets the impression their reception has been instructed to be unpleasant and obstructive to tenants…
Despite these outstanding problems, they were quite happy to raise the rent again, so we decided it was time to get them out of our lives. They seemed quite surprised, for some reason.
The new place belongs to our erstwhile neighbours, a very pleasant couple who’ve headed out to Sri Lanka for eighteen months or so doing NGO work of some sort, I believe. The contrast between old landlords and new could not be greater. Old were motivated by greed, new are motivated by wanting to find someone nice to look after the house and the cat. The place is smaller, but that’s good because we had too much junk lying around and now we’re forced to sort it out. The rent is lower, and the other bills should be too. They’re even paying us some money back for cat food!
The weekend before last we did most of the moving, with a lot of help from our friends. I’ve put some photos here (and oh dear, it looks like I have to fix the stylesheets for those pages – something has gone horribly wrong). Will also took some photos which are in the usual Will style and thus look great but don’t give you much of an impression of what the new place is actually like. :-)
Sophie, the new cat, has welcomed us with open arms. Actually I think she’s mainly welcomed us with an open mouth, and so long as she’s being fed she’s happy. Fudge is having a harder time of it, and isn’t happy having another cat around. There’s been quite a bit of hissing and growling. Some days she’s better than others, however, and we’re still hopeful that they’ll end up being friends…
I’m enjoying having a decent garden and – oh yes – a shed. The shed came packed with goodies, including a couple of boogie boards (roll on the summer!) and a workmate, which I put to good use at the weekend, cutting down the legs on a nice glass-topped dining table we don’t have room for, which transformed it into a nice glass-topped coffee table we do have room for. It was fun.
The TV got broken in a stupid fashion during the move, so we’re currently borrowing Jason’s projector, and watching Family Guy on one of the living room walls – which is kinda cool.
Last weekend George and Lidia had a house-warming/pizza-eating/brownie cooking/eating party, which was most pleasant. Being party animals, we spent a good deal of that time watching Black Books and Captain Corelli’s Mandolin, which I’ve wanted to see for years, since reading the book. Naturally it wasn’t as good, but it wasn’t too bad and Penelope Cruz, pheweeee. Hearing her accent, I did want her to say “we will tape over him with the snooker”, however.
In other news, we watched The Apprentice last night (the Alan Sugar thing). Not my choice, but Bash wanted to check it out. I mostly tried to ignore it, instead playing with some nifty new project management software on my Palm, but I did get sucked in a few times. Yeah, it was quite enjoyable, but afterwards I think I summed it up by saying it’s still rubbishy TV – it’s just Pop Idol for people like us, ie people who, for example, have project management software on their Palms. :-) Instead of cringing, laughing, and screaming at the contestants’ terrible singing, we’re cringing, laughing, and screaming at their terrible thinking, organisation and communication.
Finally, it was our second wedding anniversary two days ago – as close to it as we’ll get this year, anyway. We had a quiet night in and I cooked. Among other successes, I learnt that asparagus tips fried in butter and cashews have a pleasingly high tastiness-to-difficulty ratio. Oh yes, and it snowed that night, just as it did at this time two years ago (though I didn’t get a snowman on the desk in my lecture this year, sadly).
Abstract: In the fall of 2005, problems discovered in two Sony-BMG compact disc copy protection systems, XCP and MediaMax, triggered a public uproar that ultimately led to class-action litigation and the recall of millions of discs. We present an in-depth analysis of these technologies, including their design, implementation, and deployment. The systems are surprisingly complex and suffer from a diverse array of flaws that weaken their content protection and expose users to serious security and privacy risks. Their complexity, and their failure, makes them an interesting case study of digital rights management that carries valuable lessons for content companies, DRM vendors, policymakers, end users, and the security community.
That’s “Sony” DRM technology actually brought to you by a company with offices near here, who came to the department and did a presentation at an event organised by IT Wales las year. They certainly did seem very impressive, and IIRC their CTO spoke highly of his programmers’ abilities. Only goes to show, I guess. (Some retrospectively amusing quotes in this article, I thought.)
Five years ago today Gimboland began. Actually, it began some time before then, but that’s when I switched to Blogger and previous hand-crafted posts are, apparently, lost.
I’d hoped to get a bit retrospective, including links to the longest post, the shortest, the busiest month, the quietest, etc. I’d also hoped to unveil a new (hopefully cleaner and certainly much less black) design I’ve been quietly working on. Unfortunately work and life in general have been horribly hectic and stressful lately and so it didn’t happen. The things we hope will happen rarely turn into the things that do happen, it seems. Anyway, woo.
Also, yes: unlike Defective Yeti, I can count! :-)
Most bottled water is no better than tap water, and all of it is unethical, according to this article.
More than 50 Indian villages have complained of water shortages after bottlers began extracting water for sale under Coca-Cola Co.’s Dasani label, EPI said.
According to the Container Recycling Institute, 86 percent of plastic water bottles used in the United States become garbage or litter. Incinerating used bottles produces toxic byproducts such as chlorine gas and ash containing heavy metals tied to a host of human and animal health problems. Buried water bottles can take up to 1,000 years to biodegrade.
USA spending 100,000 dollars every minute on Iraq – enough to pay for a 4-year college degree every 30 seconds.
TV presenter Lowri Turner made some “interesting” remarks lately, asserting in a Western Mail column that sexual orientation has an actual effect on ability and thus, in her mind, right, to participate in government – and that in particular, gay men should not govern. She also tells us bisexuality doesn’t exist, and other little nuggets of wisdom. Lots of people blogging on this, btw. eg, this one‘s quite good/coherent.
Wow. I can of course tolerate people who are small-minded, closed-minded, bigoted and generally unpleasant to their fellow humans, so long as they’re not in government, anyway. Turner is, however (worse!) all over the shop with her logic.
To summarise, we have her telling us that sexual orientation is fixed, that bisexuals are fooling themselves (oh, that old chestnut!), and that if you’re gay you shouldn’t be running the country because, um, you’re not capable. For some reason.
She defends this last point in time-honoured fashion:
Before I am accused of prejudice, I should say that not only are some of my best friends gay, but probably most of them are. I work in the media, for goodness sake. It is precisely because I know such a lot of gay men that I can say that I don’t think many of them are capable of representing the interests of the vast majority of people. Their lifestyles are too divorced from the norm. They are not better or worse, but they are different.
Does she really believe she can speak authoritatively of all gay men just because she works in the media? Furthermore, I’d assert, with tongue only slightly in cheek, that the reason their lifestyles are “divorced from the norm” isn’t that they’re gay – it’s that they work in the media. (Just kidding Bash.)
Anyway, she then contradicts her assertion that “they are not better or worse, but they are different”, by explaining how “they” are, in fact, worse:
“Gay men face challenges of their own, but they do not face those associated with having children which is the way most of us live. … My gay friends have not sat in accident and emergency with a small child. They have not had to make the decision over whether to give them MMR. They have not struggled to get their child statemented or gone through the schools’ appeals process.”
No Lowri, gay men (and women) never have children in their life. You’re absolutely right. They never do. They never adopt, for example. And when they do they make an even bigger mess of it than straights, even straights with jobs in the media. By the way, I’m being sarcastic at this point.
There’s more of the same, and she does seem obsessed with the parental experience. Saying that gay men don’t have the experience of sitting in casualty with a small child is crazy – gross and patently untrue overgeneralisation. I will grant that you’d probably find it happens less than with straight parents (purely on numbers, I mean), but that doesn’t validate the point. Further, if your next statement is “thus all gay men know nothing of children”, and the one after that is “thus, this particular gay man should not govern”, you clearly haven’t grasped the idea of rational thinking yet. Unfortunately, that’s exactly what she does. It’s also a deeply flawed argument in that it would apply equally well (if it worked) to straight people who happen to be childless.
Anyway, has she never heard of the Conservative Party? ;-)
The USA must forcibly annex Khuzestan in the next couple of months to prevent the catastrophic collapse of the dollar?
My students are invited to club together and buy me a How’s My Teaching? t-shirt. Charcoal grey or olive, medium or large, long or short sleeved, phone number as on my work home page, please. ;-)
WTF? Crash Bandicoot was written with Lisp??? Seems everybody’s talking about how great Lisp is lately…
And on the subject of games, these are pretty cool too.
I saw this a while ago and meant to blog it, if only for the super useful/interesting “Big Five” list of XML uberlanguages whose existence means it’s best if you Don’t Invent XML Languages [lambda]. Of the Big Five, the one I’m interested in Right Now is DocBook.
Two hamster stories: First, With This Image We Can Achieve World Peace and second, Snake Befriends Snack Hamster [pixi]. It’s not just any hamster, it’s a snack hamster. Like a pure bred Siberian, but more snacky.
Mint Sauce [malc]. “Mint” was always something I experienced second-hand, mainly through Malc going on about how good it was, and seeing the occasional strip or single image. It always did look like something I’d like to read if I had a big book of them on my lap, Calvin-and-Hobbes style, and yes Malc, Summer is awesome, and by awesome I mean totally sweet. I particularly like the glimpse of Mint’s paw in her hand in that strip (and the CATs). Ah, it takes me back to days of big hair, cloaks and emberday tarts (must cook that again some time).
Baby Bush Toys – Barbara sent me this link before Christmas but I’ve shamefully only just followed it. Oh, so busy! Anyway, good stuff. I particularly like the Circle of Liberty Puzzle.
I can’t remember how I came across it, but I’ve had a copy of The Cyprus Crisis: A Multilateral Bargaining Simulation (pdf, 100KB) sitting on my shelf waiting to be read, for about six months now. This morning I finally got round to it, and a good time was had by all.
The paper describes a technique used in Florida State University’s Political Science department, where students simulated a few days of the international situation surrounding Cyprus. (Note that the simulation takes place “in the real world” – this is not about computerised simulation.) Individual students took on roles of various political actors (eg members of the UN Security Council), and over a few days various negotiations took place, against a backdrop of unfolding events beyonds the students’ control.
It’s quite short, and well worth a read, even if this isn’t your field (it certainly isn’t mine). There’s not a huge depth of detail, and while the main concern of the article is whether the simulation worked as a teaching technique (it seemed to), there’s little in the way of heavy analysis – largely it’s just a description of what they did and why.
A succinct interview with Chomsky, touching on the morbid state of democracy in the USA, the “War on Terror”, Iraq, oil, all the usual stuff… Some very interesting (but short) comments on China towards the end as well.
Now let’s talk about withdrawal. Take any day’s newspapers or journals and so on. They start by saying the United States aims to bring about a sovereign democratic independent Iraq. I mean, is that even a remote possibility? Just consider what the policies would be likely to be of an independent sovereign Iraq. If it’s more or less democratic, it’ll have a Shiite majority. They will naturally want to improve their linkages with Iran, Shiite Iran. Most of the clerics come from Iran. The Badr Brigade, which basically runs the South, is trained in Iran. They have close and sensible economic relationships which are going to increase. So you get an Iraqi/Iran loose alliance. Furthermore, right across the border in Saudi Arabia, there’s a Shiite population which has been bitterly oppressed by the U.S.-backed fundamentalist tyranny. And any moves toward independence in Iraq are surely going to stimulate them, it’s already happening. That happens to be where most of Saudi Arabian oil is. Okay, so you can just imagine the ultimate nightmare in Washington: a loose Shiite alliance controlling most of the world’s oil, independent of Washington and probably turning toward the East, where China and others are eager to make relationships with them, and are already doing it. Is that even conceivable? The U.S. would go to nuclear war before allowing that, as things now stand.
Apache vs Yaws. (Executive summary: Apache dies at 4,000 concurrent requests; Yaws is still working fine at 80,000.)
Yaws is written in Erlang, which seems to be far-and-away the best language around at the moment for concurrency.