date

Alien Hand Syndrome Cous Cous

, , , , , , , , , ,

ingredients
makes an enormous plate of filling stuff that can be served as most of a meal for two

* note - these must be bang on identical by volume.
** note - It will probably say 400g(drained weight 260g). Obviously this is post-soaking weight if you're doing things properly.
*** note - larger chopping boards are available
**** note - I'm rocking a subzi polo mix at the minute: parsely, dill, chives, coriander and fenugreek.

soundtrack
Thunderbirds theme tune, followed by Aleksi Virta.

process
First, chop onion and put it in the pan over a low heat to fry in olive oil. Then add small-ish blocks of chopped courgette. When stuff starts looking brown, put in the harissa, a strong tunisian chilli paste. When you get to this stage, you may think you should add amount according to taste, but you won't. You will just watch fascinated, and a little appalled as your hand moves back and forth seemingly of it's own accord ladling ever more firey potency into the pan where 'your' food is cooking. Then you regain composure by bunging in the chick peas and stirring to coat evenly. Then, having chopped the tomatoes and capers up with your special tomato knife, and hacked the dried apricots up a bit you add them to the.. oh dear gods no the left hand is ladling more harissa into the mix like some unstoppable ladling machine! How can this be happening and why won't it stop? Distract the hand by making it put the vaguely specified herbs in. As the mix fries, put the vegetable stock on to boil, add some salt and immediately take it off when it begins to boil. Chuck in liberal quantities of olive oil followed by the cous cous. Cover and ignore for a few minutes. When it's all fluffy and nice, stir the mixture through the cous cous and gingerly taste it with some hot pitas. Affect surprised noises that somehow exactly the right amount of harrisa was added.

There is still no decision about which microformat to use for recipies, otherwise this entry would be using them.

20:51 21 May 2008 /food/ cous

Some Notes on Monitoring and Testing Load Balanced Resources

, ,

One of the challenges faced when designing end-to-end checks is encountered when you are facing a load balancing arrangement. It is necessary to repeat part of the check more than once so that you can be reasonably sure that you hit all the resources that are being load balanced. Repeat too many times and you push your resources (ah, nothing like stress testing a live production system). Repeat too few times, and node 12 will keep serving that critical error you thought you'd fixed.

Random

Perhaps the most common case is random or semi-random balancing. If the balancing is fair (that is if the probability of a request being assigned to a given resource is constant across all resources), this is a case of the coupon collectors problem. Essentially the problem is the same as someone collecting a full set of coupons (or baseball cards, world cup stickers or pokemon etc.) - the first few are easy to get but it becomes progressively more difficult to get new ones as your collection grows.

In this case, the problem scales as O(N ⋅ log(N)), where N is the number of resources. To calculate the number of times we need to repeat the checks to cover all the resources(C), we first calculate it's expectation:

⟨C⟩ = N ⋅ HN
= N ⋅ loge N + γN + o(1⁄N2)
≅ N ⋅ loge N + γN as N → ∞

Hn is the Harmonic Number of N, and γ is the Euler-Mascheroni constant. For small N we can find Hn by hand.

Hn = 1/1 + 1/2 + 1/3 + … + 1/n

We can then use the markov inequality to find a bound on the probability of coverage, which should be a satisfactory guide.

P(C ≥ xnHn) ≤ 1⁄x

Round Robin

The other common load balancing algorithm is set up for round robin balancing, when the resources are ordered in a list, and the balancer chooses them in sequence, restarting from the top when necessary.

In this case we will need to know the number of 'organic' requests coming through between one test and the next. We can calculate this if we know the request probability density L(t); which is something you really want to be keeping track of anyway. If we can assume our L(t) is cyclostationary, the expectation of the number of requests between checks that take with period T at time 0 is:

0NT L(t)/N dt
= L(t)T as NT → 0.

We can find the probability that no requests come through by using the markov inequality again, if needed.

If you are running the checks in a quiet period (or running them quickly enough) then you get full coverage at C = N with probability 1-PO, where PO is the probability of an an organic request. Unfortunately simply adding an extra check or two will not help; you'll have add another N-1, to get probability 1-PO2. If you do your checks at busy times L(t)T >> N, when it's almost certain that several requests have come through, you can delay or randomise the timing of the checks so that either

T >> σ(L(t))
or
σ(T) >> L(t)N

in which case it reduces to random.

Other Algorithms

If the load balancing is set up to favour 'least loaded' resources in some way, then we have a different kettle of fish. In fact, unless we're load balancing requests that always take the same time to complete this is usually a bad thing to have in place anyway, and even then it's highly questionable whether this added complexity helps.

Sparrow Grass Penne

, , , , , , , ,

ingredients

Servings: It's pasta. If more people turn up, make more pasta. It just means people get less sauce.

Gomaiso. 'Go-My-Sew'. What do you mean you don't have any gomaiso? Ridiculous! Well then do you have

Mix 4 parts sesame seed with one part sea salt, and then pound it to bits in a granite pestle and mortar until the salt is almost invisible to the naked eye. Now you have

soundtrack
Anything incomprehensible, noisy and Japanese for making the Gomaiso (Afrirampo would be a good choice, for example). Anything by Thievery Corporation for the rest.

process
Add the halved, tailed asparagus spears briefly to a pot of boiling water, taking them out sooner rather than later. Make the pasta using the asparagus water as you leave the asparagus to dry off. Gently fry the onion and chilli up with a little olive oil, adding pine nuts a little bit later. Splash a half tablespoon of tamari in and add the asparagus to finish cooking in this new environment without getting greasy inside. Toss the (now cooked) pasta with plenty of olive oil, stir in the asparagus mixture and top with plenty of gomaiso. Discard weary arms.

I feel obliged to point out that owing to an accident of genetics I, like many others, simply cannot smell 'asparagus wee', the effect of which Marcel Proust described as transforming his chamber pot into a 'bouquet of flowers'. Be aware that people who do have this superpower will probably be able to tell whether you have just 'been'. Also do not eat this before attempting to escape from supervillans with cost-effective access to sniffer dogs.

Consume with any of: pickled ginger, nori flakes, miso soup, garlic naan bread, mixed olives, goat's cheese, lime and sweet potato won-tons, scottish red ale.

There is still no decision about which microformat to use for recipies, otherwise this entry would be using them.

21:18 17 Mar 2008 /food/ asparagus_pasta

Korg Poly 800 (Limited Edition)

, , , ,

There has been a new arrival in the MC Evillest Coven household this evening, and the hallways are resounding to the pitter-patter of tiny DCOs. The Kord Poly 800 is a (very underrated) 1984-vintage analog-digital hybrid, kind of a poor man's Juno, and now I've got one of the rare ones. You can see it below with my other new toy in the background.

Detail of studio showing Korg and Eee

I have Plans for this machine, but for now I'm just enjoying the sounds - I've been at it for four hours and it is Fun.

sample 1 playing with the joystick
sample 2 A bit loud, overdriven upper register filter stabs
sample 3 Detuned sawtooth & lots of delay.
sample 4 Similar to the above but with 'clicky' envelope.
sample 5 Bass
sample 6 More bass using the 'hold' control.

All the above recorded into audacity through a Berhinger UB802 mixer and a JSH DX99 Digitec delay. I'm still figuring out the levels so there is some clipping.

22:49 03 Mar 2008 /music/ korgpoly800_1

Sometimes Less really is More

, ,

Today I made some computers go faster by taking out some of their memory and halving the number of CPUs in each one.

No seriously I did. There were three VMware machines on a dual core 3G Xeon running ESX that we couldn't coax above 150 MHz if there was activity on the NICs, no matter what we fiddled with. Bizarrely an almost identical (virtual) machine on the same (physical) box ran fine. We couldn't find anything different enough between them to warrant this massive difference.

In desparation VMware support in Cork suggested we try cutting the allocated memory and for good measure reducing them to one core each. Amazingly this punitive measure worked; performance leapt by an order of magnitude. Developers were jubilant, managers sighed with relief. Network engineers were mostly apologised to.

The ESX hypervisor will seemingly starve itself of RAM in some cases unless you leave a portion of RAM free, although exactly how much you need to be on the safe side we have yet to determine. For some reason this caused the 'lucky' (virtual) machine to be scheduled to run with far greater likelihood than the other three when the nic was busy. This could well be (and I'm guessing here) an artefact of the way ESX gathers entropy - in lieu of anything better a lot of RNGs take their cues from packet arrival times. It's probable that the number of CPUs is a bit of a red herring - but apparently there are scheduling weirdnesses that can kick in where some of the VMs begin core-squatting (for want of a better term - though the behaviour of taking a resource in order to do nothing with it fits more landlords than real-life squatters).

Coincidentally I learned a wonderful chinese idiom yesterday pronounced roughly "joe joe gwee yee" meaning literally "nine nine return-to one"; which basically means 'integer overflow - carry the one', and is used colloquially to express the idea that taking too much is as bad as never having enough (which is important to much of Chinese philosophy). In the west I suppose we have the game of 'chicken' as a similar cultural reference.

Like most 21st century techies I'm reasonably confident these days working in the bizarro world of virtual hardware, but this was the most counter-intuitive result so far.

21:49 01 Feb 2008 /articles/systems/ less_is_more

Ellsberg's Wager

, , , , , ,

There is a bag containing at least one token. Tokens must be either black or white. One token will be drawn at random from the bag and then returned to it, say at noon on Sunday. Now imagine that everyone in some community has one black token and one white token. They can place one (and only one) on a Magic Box before noon, and if it's colour matches the token that is drawn out at noon, then a Desirable Prize is dispensed. There's no penalty for getting it wrong. Which token should they choose? For those who are interested we're playing a game where the payoff matrix is identity.

token choice
blackwhite
the bag's outcomeblack10
white01

Obviously the best strategy depends on what the bag contains. Suppose it's a balanced bag that contains an equal number of white tokens and black tokens. Even small children will tell you that either token is equally good in this case, and when psychologists have investigated people's choices they about 50% of people choose black and 50% of people choose white. What if we have no idea what's in the bag except that nothing but a white or a black token will be pulled out? It's a bag of mystery! Again either token has a 50-50 chance. And given the choice, in this case too people will choose roughly equal proportions of each token.

So lets's be clear - the strategies for a one-off game are identical for balanced and mystery bags. Now suppose we offer people a choice of matching their token against a token drawn from either the balanced bag or the mystery bag. Most people choose to play against the balanced bag. Most of the people choosing the balanced bag will not switch to the mystery bag even if the game is repeated. This is known as Ellsberg's paradox. It's named after Daniel Ellsberg, better known for leaking the Pentagon Papers in an attempt to stop the Vietnam war, by the way. He's now an outspoken opponent of the USA's war in Iraq, and the frequently threatened attack on Iran.

See, in the case of the repeated game, the mystery bag offers the opportunity of learning to exploit any imbalance that may exist in the proportion of token colours, but in the balanced case you're always stuck at 50% and can never improve upon it. Ellsberg's paradox caused much consternation amongst many economists as their theories are frequently based on the assumption (spoken or unspoken, and frequently attended by hordes of similar assumptions) that all agents act rationally (ie. in their best interests). Psychologists aren't really sure why so many people choose the balanced bag - could it be a commitment to fairness, a preference for not making hard choices, fear of the unknown...? Nobody really knows for certain. But maybe we can make an educated guess.

Let's look more closely at how strategies for the one-off game are arrived at. In the case of the balanced bag we have an probability estimate of 50%, and a maximum confidence in that estimate - given that token colour is a random variable we can't do better. The balanced probability is considered to be unconditional. In the case of the bag of mystery we have an initial probability estimate of 50% but no confidence at all in it - it's really a representation of our own ignorance, what Bayesians would call a 'prior'.

A mathematical formalism that addresses this notion of confidence is called Dempster-Shafer theory, a generalisation of Bayesian statistics. Take the set ω of outcomes. In the case above ω = {black, white}. We are interested in the 'power set' or set-of-all-subsets of ω. We write this as 2ω = {ø, {black}, {white}, ω}. Now let's define a function called the mass m, which will be a little bit like probability in that it adds up to 1, but it's defined not on ω but on 2ω. We'll define m(ø) = 0 and then we can ignore the empty set completely.

The mass of a set s is m(s) and represents the 'weight of evidence' that the outcome is in that set, but not evidence for a particular member of that set. At the beginning of our game:

m Balanced Mystery
ω 0 1
{white} ½ 0
{black} ½ 0

As the game progresses, we will receive evidence for the mystery bag's internal state (the particular outcomes of each draw) - and gradually we will see m(ω) going down, and m({black}) and m({white}) rising. While we will never have the rock-solid certainty of the balanced bag system, we could conceivably find that one or other of the outcomes is in the lead and adapt our strategy accordingly.

For decision making purposes, we usually don't want to work with the masses themselves, but with an interval of probabilities. The Support S(p) where p ⊆ ω is defined as the sum of m(x) where x ∈ 2p. The Plausibility of p is the extent to which evidence against p leaves room for the possibility that the event is in p and is given by Pl(p) = 1 - S(¬ p). Also note that S(p) ≤ Pl(p).

To look at our table again:

Balanced Mystery
m S Pl m S Pl
ω 0 0 0 1 1 1
{white} ½ ½ ½ 0 0 1
{black} ½ ½ ½ 0 0 1

This sort of reasoning has lead some people assert the nonexistence (or sometimes non-utility) of probability altogether (whatever that turns out to mean). Judea Pearl, an AI dude from UCLA, has argued that the support is actually a probability of provability, where provability is contrasted with truth. Judea Pearl is also the originator of much of the science of belief propagation (by 'belief' he means 'support') and causality research (I've become very interested in this recently).

As evidenced by the confused thinking on the subject of decision under uncertainty it appears a pervasive human cognitive bias is preference for the experience of irreducible risk over the experience of having to deal with our own ignorance. Knowing this bad mental habit is certainly useful in itself, but I was interested to find out that there is an entire branch of decision theory that is based on it, for those situations where it is actually appropriate. They call it 'info-gap theory' which is just about the worst name I could have imagined. It comes as no surprise that the 1950s are ultimately responsible for this crime against nomenclature.

The appropriate domain is wherever the precautionary principle applies wherever making the wrong decision leads to irreversible harm and there is no further opportunity to make the decision over again- medicine, biodiversity, etc. In info-gap theory we need make decisions based on optimising robustness under failure, not the expectation of 'utility' (or just 'payoff' in pure game theory). Pascal's wager is a fun example. Pascal's wager is the argument that you have nothing to lose from believing in a God because if (s)He doesn't exist you'll still be as just as dead as if you hadn't. There is a similar, but subtler, argument attributed to the Buddha.

There is an obvious problem with Pascal's approach; the assumption that Gods will invariably reward belief and/or punish denial. We don't know this. Now we're almost back to our bag of tokens; we have two levels of uncertainty. Drawing any conclusions, that is, deciding whether to believe in Gods, deciding which set of Gods to pick, deciding whether to decide whether to believe in Gods at all, and adapting your strategy to account for potential past or future lives is left as an exercise for the reader.

19:32 20 Jan 2008 /articles/ ellsbergswager

Strategem 36

, ,

I am very glad I didn't subcumb to my impulse to mix Stratgem 36 with a Public Enemy a capella track.

01:32 10 Jan 2008 /music/tracks/ Strategem36

Cage Brrd

, ,

A new track - Cagebrrd has been 'almost done' since September, but I've only got around to finishing it now.

01:26 10 Jan 2008 /music/tracks/ Cagebrrd

Happy Kepler Day

,

At 0608 Zulu time today, if our calculations are correct, the sun will cease it's apparent drift to the south and begin moving northwards again, lengthening the day. If this doesn't happen, then Kepler (and quite possibly Copernicus) were wrong. Kepler's laws were the first step towards seeing the physical universe in terms of conservation laws (and hence symmetries). In fact if this doesn't occur we can pretty much drop almost all of physics since Aristotle. Thankfully the celestial dynamics have not altered since (at least) 1605 when Kepler discovered his three elegantly stated laws of planetary motion.

This is why, every winter on this special day (and a few days either side usually), people of all countries, faiths, cultures and opinions about loop quantum gravity celebrate Kepler Day. Kepler day is a celebration of the fact that the earth's entire orbit last year has gone as planned - no black holes, inflationary scalar fields, casimir forces, wandering MACHOs or anything have contrived to make Newtonian mechanics a bad approximation. We're still moving elliptically around the big shiny thing.

If you can, take a moment to wish a happy Kepler Day to your friends, family, colleagues and random confused druids this year. The druids tend to think it's some sort of fertility festival - one track minds, you know how druids are.

00:04 22 Dec 2007 /misc/ happykeplerday

Octarine Kale with sweet & sour chutney

, , , , ,

ingredients
Dinner for N people; chutney keeps overnight well, too so make too much.

soundtrack
Part of the new Go Go Bordello album which you then take off and replace with the last Go Go Bordello album which was much better.

process
This recipe uses a kale of some kind. Kale is a brassica like savoy cabbage or panfry, but it has a confusing and contradictory nomenclature. The variety I used is variously known as 'red', 'black', 'purple', 'blue' or 'sea' kale, depending on where it is. As you can probably guess it's an amazing colour - sort of like what forest green would be if it grew up with a lot of litigious purple role models.

Put the spuds on to boil - they're going to be the backdrop of the meal. While they're cooking wash the kale and de-stalk it. Then chop the onion and fennel bulb into small pieces (also chop or grate the ginger into bits) and get two frying pans out (one big and one small). Place the onion and fennel in the small pan with the sunflower oil. Gently heat, and when they start to sweat put in the cider vinegar and the ginger. While the chutney mixture does it's thing, fry the kale in the big pan with plenty of olive oil. Start grating orange peel to add to it but then realise that this isn't an organic orange so it probably tastes horrible. Discard orange zest, consume orange. The kale will be fine without it.

Drain and half-heartedly smash the finished spuds and restrain yourself from adding butter or anything - just some salt. Serve the kale on top with plenty of chutney (which should be glistening; not dripping). There should be a 2:1 kale:spud ratio. Eat with ales.

There is still no decision about which microformat to use for recipies, otherwise this entry would be using them.

19:45 25 Nov 2007 /food/ octarinekale

About MC Evillest Coven

me I started out writing BASIC adventure games on the Apple IIc when I was 8. I have since worked on planet-hunting telescopes, mainframe assembler, homing devices, systems integration and migration, SMTP clusters, antispam message analysis, ajax web applications and mobile information services.

I am available for work at the moment - to find out whether I'm right for your project it's probably best to start by downloading my CV, and if you like what you see get in touch. I am interested in both developer and sysadmin-like projects. Please feel free to get in touch with me by emailing 'steve' at this domain or by phoning me.

My current professional interests are in multivariate analysis and it's application to strategic and decision problems (such as classification and planning) especially in the light of machine learning. I am also interested in scalablity, monitoring & forecasting, and distributed control systems. There are some fields in which human ingenuity outperforms any algorithm, and I am interested in systems which effectively bridge this divide, allowing the machine to augment the mind and vice versa.

In my own time I like to work on algorithmic and semi-algorithmic composition/synthesis, most often with Csound, and taking whatever unusual languages or concepts I can find and trying to figure out how to listen to them.

I'm a Free Software/BSD Unix/Linux kind of person. Python is my weapon of choice.

This site mainly exists in order to serve as my personal propaganda organ, but since my contributions to humanity these days tend to sit in the fields of music and software it'll also serve as a container for my outputs. The name derives from a (near) anagram - but a CNOT gate is a type of quantum logic gate that features in important foundational theories. There is also a famous passage in Three Dialogues Between Hylas And Philonous where Berkeley argues for the kind of extreme empiricist views I hold. My 'real' name is an anagram as well.

You can get in touch with me by emailing 'steve' at this domain.

20:03 12 Nov 2007 / aboutme

chomp;

, , , , ,

ingredients
Makes main meal for one (side dish for two). Make more than you need; good reheated for breakfast.

soundtrack
Space Station Soma

process
This is a variation on a northern irish recipe called champ - a kind of 2.0 champ. A 2.0 ``Mash Up''. Chop up spuds & sweet spuds into pieces with equal surface areas and moments of inertia - they should be more or less the same size and shape. Put them on to boil. Meanwhile finely shop the spring onions, and herbs. When the potatoes are cooked, drain and mash with the margarine, and mix well with the remaining ingredients. Serve with veggie sausages, mushroom ketchup and javascript.

There is still no decision about which microformat to use for recipies, otherwise this entry would be using them.

17:25 31 Oct 2007 /food/ chomp

The Polyglot Experiment

, ,

One of the traditional introductions to learning a programming language has been (since the time of K & R1) to write a program that prints "Hello, World!" or some suitable variation to the screen. In the case of C, it makes some sense to use this as a learning tool, as it introduced the concepts of the main function, data types, printf, escape sequences, the preprocessor and the standard library.

#include <stdio.h> int main(void){ printf("Hello, World!\n"); return 0; } Hello, World in C

The venerable 'Hello World' is still serving proudly as a sanity check2 on many thousands of newly set up development environments worldwide. But it has long since lost it's status as a learning tool. The reason being that modern languages tend almost always to reduce all this fun to a laconic one liner3. For example,

print "Hello, World!\n"; perl

puts "Hello, World!" ruby, or maybe tcl

print "Hello, World!" python, but could be most kinds of BASIC or possibly lua

"Hello, world!" print the io language likes to mix things up a bit

SELECT 'Hello, World!'; this should work in most dialects of SQL, and it isn't even turing-complete!

You get the picture. In unix environments people are always trying to print various strings to an output stream, and many languages earn their keep by making this easy and intuitive; so much so that there's nothing to learn. People have been taking the piss4. Frankly they're just right to do so - "Hello World" was really only intended as a minimal check, to test that the compiler, I/O and so on were operating correctly.

So "what's your alternative you smart-ass?", I hear your all chorus. "How else are we to compare programming languages and illustrate their main features?". Well, one of the other main programs that follows up Hello World is something like the factorial function, or the fibonacci sequence. Both these demonstrate the way recursion works, but they omit all the I/O necessary for a language to be useful.

The Trabb Pardo-Knuth algorithm covers data structures (arrays/lists), mathematical operations, subroutines, IO, iteration, program structure (conditionals). It is (I think) the algorithm Missy Elliot rapped about in "Work It" - read 11 numbers in, apply a function (traditionally 5x³+abs(x)½) and (in reverse order) print out the number if the result (is less than, say, 400) or "TOO BIG" if it is, well, too big. Missy glossed over a few details. In fact it was designed specifically to demonstrate the differences between imperative languages. And that's a problem with it - it's a very imperatively focused challenge.

So what else is there, something perhaps a bit more "real world" but still containing theoretical content? Something we can use to get a feel 'at a glance' for how the language looks at the world?

If you're of the opinion that real programmers don't eat quiche, or need know whether the processor is big- or little-endian before sitting down to code, you may think this is all a bit namby-pamby or 'high level'. How good is the language for real work, like implementing crypto routines? The Tiny Encryption Algorithm is nice and simple.

And surely, in this age of the intertubes, a routing algorithm like Dijkstra's algorithm should be able to satisfy the criteria of usefulness and theoretical rigor, as it's both a classic, beautiful, algorithm and in use in actual (OSPF) routers today?

And surely one of the most definitive features of computers is that they are machines which operate on symbols, converting from one representation to another? This is where the whole notion of a programming language comes from after all... What about something like the Shunting algorithm for converting between infix and reverse polish notation?

I propose to try and implement all the algorithms mentioned in this article in a set of programming languages that I would like to know more about. I hope this will be a useful learning experience and help to provide a more substantial set of trials for my own use in trying out new languages with. I hope to manage one language a month.

It may be that the tests I have chosen are inadequate - for example none of them seriously address the extent of libraries for, say, matrix operations, database abstraction, GUI programming, regular expressions or XML or whatever. This could be said to undermine the advantages of languages like PHP, Perl, Objective C, VB.Net etc.

The quality of libraries is undoubtably of the utmost importantance to getting anything done with software. The problems with trying to evaluate a language by issuing library-driven challenges (such as, say, editing MP3 metadata or retrieving emails over POP3) are twofold. First is that we are testing the language libraries' suitability for that purpose, rather than for implementing arbitrary algorithms. Secondly, the better the library, the less we learn - we could end up back with the same problem that we started with; life just isn't hard enough for us!

footnotes

1. K & R: The first reference known is in fact Kernighans' earlier tutorial on the 'B' language, but I think it's safe to say that that's not what made it traditional.

2. sanity. See the C2 wiki.

3. most. Java is keeping the faith - it is necessary to understand what a 'static public void' method is before attempting to design Hello World.

4. Hello
21:49 05 Oct 2007 /code/ polyglot_expt

nomillroadtesco.org is live

,

The campaign to save the Mill Road area of Cambridge from the insipid, depressing big-brand mediocrity that supermarkets bring has well and truly kicked off. Tesco plan to open a metro store on the road, inevitably destroying the smaller merchants and sucking all the character out of the place. Metro is a special code-word that magically reclassifies tesco supermarkets as non-supermarkets (convenience stores) thereby allowing them to bypass the usual competition laws. Tesco control 30% of the UK grocery market - but over 5% comes from metros so the magic 25% that would otherwise incur the wrath of the competition comission is avoided.

The main site has links to all the relevant resources such as tescopoly, indymedia and even a facebook group.

There's an excellent blog highlighting the many problems with the decades-long supermarket chain explosion the UK is undergoing. In fact criticism of Tesco in particular is so widespread it even has it's own wikipedia page. Another site worth a read is tesco employees' own Very Little Helps.

There is a lively protest planned for this weekend at the proposed site, from 10am on Saturday.

I fully endorse this product and/or event.

20:54 03 Oct 2007 /articles/action/ tesco1

List of All Released Tracks

All tracks released before this site went live have actually been available all along, it's just that people have recently reminded me that I haven't mentioned it to anyone. Here's everything I've ever released.

Putting them in one directory makes them easy to back up!

15:31 28 Sep 2007 /music/ all_tracks

Things for linux users to bear in mind when starting to use a mac (part 1: hardware)

, ,

So I (finally) agreed to see what the fuss was about. I must confess to being a little, um, underwhelmed. I'm not going to write off something on the basis of less than a weeks' experience, but my initial impression hasn't been wonderful. In short - if you don't mind messing about with libraries, installing many things by hand and generally being prepared to do a lot of learning (the kind of learning that doesn't help solve your problems), by all means use a Mac. If you want it to 'just work', stick to Linux.

Some caveats; there are really three exeriences for me to have first impressions of here: hardware, software, and the integration between the two. We will consider OSX in a separate article, which will be imaginatively titled 'part 2'. I am using a 2007 15" macbook pro with OSX 10.4 (Tiger). It should also be borne in mind that I am only interested in it as a software development laptop; the ease with which one can back up their iPod is not relevant.

Having said that, I can report that as expected the integration component of my first impressions was excellent. With almost complete control over the hardware environment, apple can restrict what kernel development needs to happen to the essentials, and get them right, much like Sun did with sparc Solaris. I was expecting to find this wonderful as this has always been the weakest part of the Linux user experience. Other things which linux isn't great at like proprietary codecs and JVM implementations 'just work' as well. It's worth pointing out that in fairness there are economic and legal forces outside the Linux kernel developers' and distribution creators' control here.

The hardware is of excellent build quality, but very quirky. I am very impressed with the power connector - so many otherwise functional laptops are lost to damaged AC connectors which nobody will admit to being able to repair.

The lack of a proper mouse at first seemed to be an infuriating hinderance, but later the OSX environment obviates this by making impossible most of what you'd use one additional buttons for. The keyboard is bizarrely laid out - requiring 'Alt-3' to get a hash symbol (the § and ± are conveniently located where the escape key normally is, for some reason). The enter key is so small that I regularly hit several of my fingers off the side of the keyboard trying to press it. The caps lock key is much larger and more conveniently located (this is a bad thing). Inexplicably there is second enter button concealed between the left-arrow key and one of the two logo keys - which have replaced ctrl in most of the software. The keyboard warms up rapidly, to the extent that it is actually uncomfortable to use. In fact the whole machine warms up the room quite considerably.

Replacing the keyboard and mouse with external usb devices is better, but leaves no free usb ports (though there are two flavours of firewire).

00:47 09 Sep 2007 /articles/systems/ apple_imp1

216-digit Lime, Ginger and Spring Onion Tofu

, , , , , , , ,

ingredients
makes dinner for 1. Scaling determined by rice.

soundtrack
Pi (the film)

process
Finely chop up the ginger & garlic and lay them in a bowl. Chop the tofu into trianglar sections and lay them in the bowl. Add the smashed lemongrass. Drench in lime, and splash soy all over it. Go and ring your parents. After you get off the phone, mix the cinnamon & flour and roll the marinaded tofu in it. Begin heating some oil in a wok. Chop up the bottom parts of the spring onions really thinly. Tear the pepper and the tops of the spring onions apart with your hands. Frythe tofu on both sides, and then chuck in the veg. Take the lemongrass out of the marinade and chuck it in the pan as well. Serve with rice while it's still a bot crunchy.

verdict * * *
Lime & ginger are a great combination - I've used it as the base of a soy marinade frequently. It works especially well with tofu. The 'innovation' here was to chuck in a truly excessive amount of spring onions, and some lemongrass. It more or less works, especially the wee bit of garlic. It could do with being hotter though - I'd use a chilli next time.

There is still no decision about which microformat to use for recipies, otherwise this entry would be using them.

22:26 24 Aug 2007 /food/ 216tofu

Gelin-style Tempeh Wrap

, , , , , , , , ,

ingredients
makes 3 wraps (dinner for 1). Scales linearly.

soundtrack
Beginner's Mandarin Chinese Lesson 4

process
Marinade the tempeh with the lemon juice and garlic. Begin heating some oil in a pan. After a half hour of trying to figure out what the hell "Gelin" means in Mandarin realise that it's actually a rendering of "Green", who is a fictitious person that the authors inserted into the lesson in order to make things "easier" to understand. Realise the oil is getting pretty hot, tip the slightly overmarinaded tempeh into the pan, turning down the heat, and turning over as soon as they are browned underneath. Put the onions (both kinds), pepper and chilli in. Stir occasionally, but leave it a bit if the tempeh tries to crumble. While they cook, put the tortillas somewhere to warm up. Add soy sauce and coriander leaves to taste. When it's done, transfer to a bowl. Take out the warm tortillas, wrap up bits of the mixture in them and Nom Nom Nom

verdict * * *
The chilli & lemon thing works as well with tempeh as it does with everything else, and the marinade with garlic worked well too. The coriander leaves defied the second law and clung straight away to the tempeh. It was pretty nice and would have got more stars if it wasn't for the tortillas I used. I don't care how good for you whole foods are, I'm going back to the white, extra salty kind for the next set of wraps, purely for their structural properties (ie they actually soften and wrap stuff). I'm glad I forgot to use the olives - I don't think they would have added much and I'll get to use them later.

There is still no decision about which microformat to use for recipies, otherwise this entry would be using them.

23:03 20 Aug 2007 /food/ gelinstyle

Seize Steve's Stuff

If you have ever coveted any of my belongings you are going to hell you should look up my new giveaway page. It is a work in progress, so check this page up till the end of august for more offers of free stuff.

12:00 17 Aug 2007 /misc/ giveaway

Diamond Glide

, ,

A new track called Diamond Glide.

19:20 12 Aug 2007 /music/tracks/ DiamondGlide

quick links


food
music

categories

feeds

(RSS) (atom) whole site
(RSS) (atom) this bit

contact


Email 'steve' at this domain.
My public key (gpg)

elsewhere