## Wednesday, October 24, 2007

### Notebook computer woes

This is a very sad and nerdy posting, but those who have spent hours or days tracking down computer faults will know the state of mind that it creates, and the consequent need to drink large amounts of beer and write drivel!

I bought myself a new notebook computer (HP Pavilion dv9340ea) three months ago, and would you believe that a fault has already developed? Luckily, the fault turns out to be fairly benign so I can continue to use the computer, but the fault continues my unbroken record of always managing to buy notebook computers that go wrong.

What is the fault? The graphics display developed a habit of locking up with no warning, and the computer would then reboot showing various regular patterns on the boot screen, and then go to a "blue screen of death" (BSOD) informing me that nvlddmkm.sys had thrown error 116. The computer would then reboot again offering me the choice of booting into a "safe mode" of Windows Vista, which I duly selected, and I was then allowed back into the machine. At least I could get at any files that I wanted to extract from the computer.

So, off I went onto the internet searching for information about nvlddmkm.sys and error 116. In turns out that you can find lots of complaints about nvlddmkm.sys, which I found perversely gratifying because it meant that I had company. Various wise individuals offered solutions to this problem, which mainly focussed on manually uninstalling the old and buggy graphics driver (i.e. nvlddmkm.sys) and installing the latest version of this driver. I did this but it didn't fix the problem. I repeated this process several times, steadily enlarging the scope of my manual deletion of old files before installing new files, but I completely failed to fix the problem.

Maybe my nvlddmkm.sys problem was not in fact the same as the one that could be fixed by updating the graphics driver. Apparently, error 116 is quite a general fault that could be thrown by almost any error condition in nvlddmkm.sys.

I then did a full virus scan but it found nothing unusual.

I then decided to pay more attention to how my computer behaved without any special graphics driver installed. It showed the same regular patterns on the boot screen that preceded the BSOD that I mentioned at the start of this posting, but the BSOD itself did not occur, and I could boot into normal (i.e. not "safe mode") Windows Vista, so I had all Windows services available to me, but the screen resolution was relatively low because there was no special graphics driver installed.

The only other sign that something was wrong was a strange coloured granularity that showed up in what should have been featureless regions of colour on the screen. On rebooting, this fault occasionally disappeared, so I tried various experiments to check whether it was a thermal problem that went away temporarily if I switched off for a while. No luck there. I could not find a systematic way of influencing the fault.

In desperation I tried tapping the computer case with my finger, moving around all over the case, both on top and underneath. I noticed that when I tapped in one particular place under the case the strange coloured granularity disappeared at exactly the moment that I tapped the case. Jackpot! Although the fault quickly returned, and after a few repetitions of this cycle I eventually couldn't get the fault to go away at all, I had now absolutely convinced myself that my computer had a hardware fault that was probably in the graphics subsystem.

A loose memory chip maybe? The only memory that you could fiddle with was system RAM not video RAM, so reseating the system RAM modules didn't fix the problem, nor did I really expect it to.

However, I managed to find some photos of the system board of my notebook computer, and I noticed that immediately under the area of the case where I did my few successful taps was ... drum roll ... the graphics subsystem. I think this fairly convincingly demonstrates that something has gone wrong with the graphics hardware in my computer.

Now, all I have to do is to convince whoever it is that actually fixes my computer that they don't need to reformat my hard disk to check whether doing so cures the fault. In fact, it would be really nice if they would simply bring out a new system board to swap with my faulty one. What's the betting that things will not go as smoothly as this?

Update: After multiple emails and phone calls to HP they have agreed to service my computer under warranty, but they insist on restoring my hard disk to its factory settings. Resistance is useless! Since I don't relish going through the whole process of reinstalling all of my software, especially since there are lots of fiddly little things you have to do to get some of my old Windows XP software to work correctly under Windows Vista, I have decided to buy some disk mirroring software (i.e. Paragon Drive Copy 8.5). This software spent 2 1/2 hours mirroring my notebook computer's hard disk, and then announced that it had successfully done the job. Do I believe this? Do I believe that if it has done this part successfully, then it will also do the reverse mirroring successfully when I get my computer back from HP? I don't know what to think, but at least I have tried, and the Paragon software didn't cost too much (i.e. £30).

Update: Finally, after further phone calls to HP, they have agreed on specific dates to collect & return my notebook PC for its servicing-under-warranty. My main criticism of this process is not so much the large number of phone calls that I had to make, but the fact that HP uses call centres staffed by people who speak fluent English but with an impossible-to-understand accent. I had to ask several times for things to be repeated, and only with a certain amount of ingenuity and prior knowledge on my part could I understand what was being said. On more than one occasion I had to abort the phone call because I couldn't understand the accent at all, and on one occasion they aborted the phone call because of my inability to understand them!

Update: Finally! My notebook computer is back from the HP repair centre. The repair notes state that it had exactly the problem that I had originally diagnosed (i.e. a video hardware fault), and that the repair was a straight replacement of the motherboard. I hope that this fault was merely an "infant mortality", and that now I am likely to have years of trouble-free operation.

## Friday, October 19, 2007

### Enigma 1465

Here is how Mathematica can be used to solve New Scientist Enigma number 1465 in the 20 October 2007 issue.

This Enigma problem can be solved by using a very simple analytic approach which I give at the end of this posting. But first I give a much more flexible approach to illustrate the use of one of the Mathematica packages.

Solution 1: Brute force approach using the Combinatorica package.

Needs["Combinatorica"]

Define a large enough grid graph size that the solution is contained within it.
n=11;

Build a directed grid graph which allows movement only rightwards and upwards. Note that the starting node is at the bottom-left hand corner. This type of directed structure forces all paths from the bottom left node to each other node to also be shortest paths.
g = MakeGraph[Range[n^2], Function[{x,y}, If[y==x+1 && Mod[x,n]>0 y==x+n, True, False]]]
-Graph:<220,121,directed>-

Compute the shortest path length from the bottom left corner node to each of the nodes in the graph. Because of the directed structure of the graph all paths are also shortest paths.

Generate a list of distinct shortest path lengths.
pathlengths2 = pathlengths//Union;

For each distinct shortest path length generate a list containing the number of distinct shortest paths to each node that has this shortest path length.
pathnumbers = Map[NumberOfKPaths[g,1,#]&, pathlengths2];

Extract the two cases where the same number of paths occurs 4 times. Since the solution lies in the quadrant opposite the starting node it must have a relatively large number of paths, so it can be selected by inspection of this result.
pathnumbers2 = Transpose[Cases[pathnumbers//Flatten//Tally, {_,4}]][[1]]
{10, 3003}

Solution 2: Quick approach using the known number of paths in a directed grid graph.

Compute a table each of whose entries is the number of paths from the top-left node of a directed (rightwards or downwards) grid graph.
With[{n=11}, Table[Binomial[i+j,j], {i,0,n-1}, {j,0,n-1}] // TableForm]
{
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11},
{1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66},
{1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286},
{1, 5, 15, 35, 70, 126, 210, 330, 495, 715, 1001},
{1, 6, 21, 56, 126, 252, 462, 792, 1287, 2002, 3003},
{1, 7, 28, 84, 210, 462, 924, 1716, 3003, 5005, 8008},
{1, 8, 36, 120, 330, 792, 1716, 3432, 6435, 11440, 19448},
{1, 9, 45, 165, 495, 1287, 3003, 6435, 12870, 24310, 43758},
{1, 10, 55, 220, 715, 2002, 5005, 11440, 24310, 48620, 92378},
{1, 11, 66, 286, 1001, 3003, 8008, 19448, 43758, 92378, 184756}
}

The three 6-fold paths mentioned in the first part of the problem can be seen in the correct positions in the table (i.e. (1,5), (5,1) and (2,2), where the top-left corner is (0,0)). The 4-times repeated solution(s) found above can be seen elsewhere in the table, and the larger solution lies in the lower right quadrant.

### Ising model simulation - online software

I showed here how to use Mathematica (version 6) to create an interactive simulation of a 2-dimensional Ising model, but the software could be used only by people who owned their own copy of Mathematica. I reported here that Wolfram had now made available the Mathematica Player online conversion system for transforming Mathematica notebooks into a form that can be run by the Mathematica Player.

I have submitted my Ising model notebook for online conversion, and I have uploaded the converted notebook here (855 kB) plus a zipped version here (26 kB).

I would be interested to hear from anybody who does not have Mathematica (version 6) whether they can successfully get this converted Ising model notebook to work. I would particularly like comments on the ease of use of the zipped version, because this is by far the more disk-space-efficient way of doing things.

Update: Since no-one has responded yet to say that that they have succeeded in getting my converted Ising model notebook to work with Mathematica Player, I decided to install Mathematica Player on my old notebook PC (which didn't have Mathematica already installed) to check things out for myself. I downloaded the zipped version of the converted Ising model notebook, and fired it up in Mathematica Player. The contents of the converted notebook look perfectly OK, but seem to be completely inactive, so you can't run the Ising model simulation. I haven't got the faintest idea what is wrong here, so I'll now go away to try to sort this problem out.

## Monday, October 15, 2007

### Mathematica Player online conversion

At last! We can now use Mathematica to write software that we can publish on our websites and which can be run by anybody, i.e. this is not limited to end-users who own their own copy of Mathematica. This development was quietly announced in a Wolfram blog posting entitled The Day that Documents and Applications Merged; at least, that's where I learnt about it. It takes the form of a Mathematica Player online conversion system for transforming Mathematica notebooks into a form that can be run by the Mathematica Player. The blog posting summarises this as:

But the new online conversion service opens up almost any notebook. If you're a Mathematica user, that means you don't have to share your work just with other users anymore. Create your dynamic applications and share them with anyone you'd like. You can even post them on your website and link people to the Player download - a great way to publish research papers, books, or interesting computational models.

This changes everything! Long-time users of Mathematica such as me have been gnashing their teeth for 20 years at the fact that, although they have a uniquely powerful tool in Mathematica, any software that they write has been limited to being used by only those people who have their own copy of Mathematica. Unfortunately, there is almost zero chance that any randomly selected person owns Mathematica.

Many years ago I made the decision to use Mathematica because it was my "secret weapon" that allowed me to do things that would be much more cumbersome to do with other software tools such as C++, Matlab, etc. It allowed me to do a lot more research than would otherwise have been the case. In fact, I covered ground so fast that people couldn't keep up with me; that's praise for Mathematica rather than an inflated view of my ability to do research. I have received almost universal criticism from those around me (who use C++, Matlab, etc), because the fruits of my Mathematica labours are not available for them to use, at least not without a lot of effort to translate the software into a form that satisfies them (i.e. into C++, Matlab, etc). My use of Mathematica is regarded by these people as a selfish act, because it makes life easy for me and difficult for them. I can see their point! However, I am not one to be swayed by other peoples' misguided opinions, so I carried on regardless.

Of course, the Mathematica Player online conversion system comes with some restrictions, which limit its use to one of the following categories:

1. Educational purposes in a not-for-profit, educational institution.
2. Publicly accessible or published research content.
3. Demonstration purposes, including at commercial or governmental organizations.
4. None of the above. I am interested in commercial distribution.

This set of alternatives seems remarkably generous to me, after 20 years of not being able to use Mathematica in this way. The category above that particularly interests me is (2), which allows me to include working software with research papers that I publish. In fact, I wonder whether I will move to a model in which I seamlessly combine software and research paper in the Mathematica notebook that I feed to the Mathematica Player online conversion system (I assume this is possible).

Thank you so much Wolfram! I hope there aren't hidden caveats that break what appears to be a fully working model.

## Sunday, October 14, 2007

### Random sculptures

Here is a piece of Mathematica code for generating interesting random sculptures by generating 2-dimensional manifolds embedded in 3-dimensional space.

Define a function that computes a random sum of sinewaves, where the maximum frequency is controlled by the n parameter. Differently seeded versions of this function will be used to determine the displacement of the 2-dimensional manifold in each of the directions in 3-dimensional space.

f[x_,n_]:=Sum[RandomReal[{-1,1}]Cos[i x+RandomReal[2\[Pi]]], {i,0,n}];

Display a random sculpture. The n parameter controls the complexity of the sculpture.

With[{n=1}, ParametricPlot3D[Table[f[u,n]f[v,n],{3}]//Evaluate, {u,0,2\[Pi]},{v,0,2\[Pi]}, PlotStyle->Opacity[0.25], Mesh->False, Boxed->False, Axes->False]]

Here are 3 examples of the sort of result that you can obtain. Not bad for a simple piece of code!

## Saturday, October 13, 2007

### Enigmatics

I thought that I should explain the purpose of me posting Mathematica solutions to the New Scientist Enigma problems.

The main purpose is to show how one can quickly get a solution to each problem (usually by brute force attack) using the unique processing abilities of Mathematica. Each posting shows the first line of reasoning that led me to the solution, so my reasoning is usually not elegant and is not intended to be elegant; the goal is to find the correct solution and to do it quickly. Sometimes this means that I deliberately use an unusual sequence of manipulations in order to illustrate a particular style of programming. Occasionally this means that I use a peculiar Mathematica idiom that I just happen to know.

Actually, I do worry about the elegance of solutions, but optimising the elegance of a solution is completely different from simply finding the correct solution to a problem. In the case of the New Scientist Enigma problems I strongly suspect that most of them are constructed in a brute force way (i.e. start with a large set of potential solutions, then impose various perverse constraints, until there is only one member of the set remaining), so there is no guarantee that there are slick and elegant solutions to them.

## Friday, October 12, 2007

### Enigma 1464

Here is how Mathematica can be used to solve New Scientist Enigma number 1464 in the 13 October 2007 issue.

Generate a list of leap years in the 20th century during which the births can occur. The year 1900 is excluded because it was not a leap year.
lpyrs = Table[i, {i, 1904, 2000, 4}]
{1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000}

Generate a list of all days during the above leap years in {yyyy, mm, dd} format.
(days = Flatten[Map[Table[Take[DateList[t],3], Evaluate[{t,#,#+365*86400,86400}&[AbsoluteTime[{#}]]]]&, lpyrs], 1]) // Length
9150

Convert this list of days into DDMMYY format.
(days2 = Map[(10000#[[3]] + 100#[[2]] + If[#[[1]]>=2000, #[[1]]-2000, #[[1]]-1900])&, days]) // Length
9150

Select the cases which are square days.
sqrdays=Select[days2, IntegerQ[Sqrt[#]]&]
{300304, 10404, 200704, 40804, 121104, 91204, 60516, 10816, 110224, 101124, 20736, 11236, 150544, 131044, 80656, 70756, 20164, 50176, 30276, 30976, 51076, 240100, 260100, 230400, 270400, 220900, 280900}

Split this list into sublists for each year.
sqrdays2 = Split[sqrdays, Take[IntegerDigits[#1],-2]==Take[IntegerDigits[#2],-2]&]
{{300304, 10404, 200704, 40804, 121104, 91204}, {60516, 10816}, {110224, 101124}, {20736, 11236}, {150544, 131044}, {80656, 70756}, {20164}, {50176, 30276, 30976, 51076}, {240100, 260100, 230400, 270400, 220900, 280900}}

Select the cases that have 6 or more different square days.
sqrdays3 = Select[sqrdays2, Length[#]>=6&]
{{300304, 10404, 200704, 40804, 121104, 91204}, {240100, 260100, 230400, 270400, 220900, 280900}}

Split the list of square days into sublists for each month.
sqrdays4 = Table[Select[sqrdays, FromDigits[Take[IntegerDigits[#],{-4,-3}]]==i&], {i,12}]
{{20164, 50176, 240100, 260100}, {110224, 30276}, {300304}, {10404, 230400, 270400}, {60516, 150544}, {80656}, {200704, 20736, 70756}, {40804, 10816}, {30976, 220900, 280900}, {131044, 51076}, {121104, 101124}, {91204, 11236}}

Select from all of the cases with 6 or more square days only those for which there is but a single square day in that month. These are the cases where the birth and death days are forced to lie in different months. There is one case that satisfies this criterion, which is thus the grandfather's date of birth.
Select[sqrdays3//Flatten, Length[sqrdays4[[Position[sqrdays4,#1][[1,1]]]]]==1&]
{300304}

## Sunday, October 07, 2007

### Geodesic dome construction

I have been thinking about how to automate the design of geodesic domes using Mathematica. I started off by looking at what Google Earth could see of the geodesic domes at the Eden Project (see 50.3612°N, -4.74483°W in Google Earth). Here is a clear view of the structure of one of the domes.

There is a central pentagon at the highest point of the dome, which is surrounded by 5 hexagons each of which is divided into 6 small triangles, which are in turn surrounded by hexagons (which are not divided into triangles). If you look very carefully you will find other pentagons lower down the dome.

How could this geodesic dome be designed in a semi-automatic way? I have worked out a way of doing this using Mathematica which goes as follows.

Load the library of polyhedron operations so that you can derive tessellated versions of polyhedra.

Needs["PolyhedronOperations"];

Fix the order of the tessellation. A larger order will eventually give you a geodesic dome with smaller faces.

n=6;

Display an icosahedron and its tessellation, and extract the faces of the tessellation for later use.

GraphicsRow[Map[Graphics3D,{#, faces=Geodesate[#,n]}&[PolyhedronData["Icosahedron", "Faces"]]]]

The main problem now is to find a way of extracting pentagons and hexagons from all of the triangles that appear in the above tessellation. This is not trivial because it has to be done in such a way that the extracted polygons neither overlap nor have any gaps between them. The strategy that I use to achieve this is to gradually build up a set of polygon centres in such a way that each new centre is exactly far enough away from all of the centres found thus far that it defines a new polygon that neither overlaps nor leaves a gap with the polygons found thus far.

Define a function for computing all of the triangle face edges surrounding a set of vertices.

faceedges[perimeters_, centres_] := Flatten[Map[Cases[perimeters, {x___,#,y___} :> {x, y}]&, centres], 1] // Union;

Define a function for computing all of the vertices surrounding a set of triangle face edges.

facecentres[perimeters_, edges_] := Map[Cases[perimeters, {x___,#[[1]],y___,#[[2]],z___} | {x___,#[[2]],y___,#[[1]],z___} :> {x,y,z}]&, edges] // Flatten // Union;

Iterating the above pair of functions causes the set of vertices to grow until it covers the whole of the original set with pentagon and hexagon centres. As long as the order of the tessellation is chosen appropriately, then this algorithm will give the centres needed to construct a geodesic dome. Have a play to see what the algorithm does for you, and how it might be improved.

Fix the starting vertex to be the one at the top of the tessellated icosahedron.

startingcentre = {Position[faces[[1]], {0,0,1}][[1,1]]};

Derive the pentagon and hexagon centres and edges of the geodesic dome.

centres = Nest[
(
faceedgesold = faceedges[faces[[2,1]], #];
centresnew = facecentres[faces[[2,1]], faceedgesold]
)&,
startingcentre,
5
];

edges = faceedges[faces[[2,1]], centres];

Display the geodesic dome.

Graphics3D[{
{Opacity[0.75], faces},
{PointSize[0.02], Red, Map[Point[faces[[1,#]]]&, centres]},
{Thickness[0.01], Blue, Map[Line[{faces[[1,#[[1]]]], faces[[1,#[[2]]]]}]&, edges]}
}
]

If you compare this result with the photo of the geodesic dome at the Eden Project then you can see that it has all of the essential features correct. There is a pentagon at the top of the dome, which is surrounded by hexagons, and lower down the dome there are more pentagons.

## Saturday, October 06, 2007

### Enigma 1463

Here is how Mathematica can be used to solve New Scientist Enigma number 1463 in the 6 October 2007 issue. Because this problem is so easy to solve I don't bother to make use of symmetry to simplify the search for a solution.

Generate a list of permutations of the digits 1, 2, ..., 9.
(digitperms = Permutations[Range[9]]) // Length
362880

Arrange each of these sets of 9 digits into a 3 by 3 array and generate the corresponding 12 3-digit numbers by reading rows and columns both forwards and backwards.
(numbers = Map[Flatten[Map[{FromDigits[#], FromDigits[Reverse[#]]}&, Join[Partition[#,3], Transpose[Partition[#,3]]]], 1]&, digitperms]) // Length
362880

Select the cases which satisfy the required divisibility conditions.
(numbers2 = Select[numbers, Apply[And, Table[Mod[Count[Map[Mod[#,i]&, #], 0], i]==0, {i,9}]]&]) // Length
8

Extract the minimum and maximum 3-digit numbers from these (symmetrically related) results.
{Min[#], Max[#]}&[numbers2]
{164, 971}

## Friday, October 05, 2007

### Rotation group topology

Here is a video animation that illustrates the topology of the rotation group SO(3), which is the group of rotations in 3-dimensional space. My apologies for the small size and poor visual quality of the video - I am still experimenting with how best to generate animations and to upload them to blogger.

A rotation in 3-dimensional space can be done about an axis pointing in any direction, so there is a whole spherical surface of possible axis directions, which is represented by the sphere in the video. Each point on this spherical surface represents one possible orientation of the rotation axis, and the whole spherical surface is a 2-dimensional manifold representing all of the possible rotation axes. For the purpose of this blog posting only the topology of this manifold is important (i.e. it has a spherical topology); the detailed geometry of the surface is not important.

Once you have decided where the rotation axis points you then rotate about this axis, which generates a 1-dimensional angle subspace that lives outside the 2 angle dimensions that already live within the spherical manifold. Thus far the overall manifold is the original 2-dimensional spherical manifold (generated by the choice of axis direction) times a 1-dimensional manifold (generated by the choice of rotation). If you rotate by one full circuit (i.e. the rotation angle varies from 0 to 2Pi) then you appear to return to the starting point in the 1-dimensional angle subspace, so it seems that this subspace has a standard circular topology. But not all is what it seems to be.

The spherical manifold of possible rotation axes has a hidden degeneracy, because each rotation axis appears twice over. Each point on the sphere and its opposite point (i.e. its antipode) define rotation axes that are parallel, except that they have the opposite physical effect when a given rotation angle is applied about each of these two axes, i.e. the rotation axes are anti-parallel. So a rotation of x about one axis produces the same physical effect as a rotation of -x about its antipodal axis.

How does this degeneracy manifest itself topologically? The additional 1-dimensional angle subspace that is attached to each point on the spherical manifold must be identified with (i.e. glued to) the corresponding 1-dimensional angle subspace that is attached to the antipodal point on the spherical manifold.

This gluing-together of what were hitherto separate parts of the overall manifold imposes the constraint that a rotation of x about one axis produces the same physical effect to a rotation of -x about its antipodal axis. These constraints impose additional topological structure on the original 2-dimensional spherical manifold (generated by axis directions) times a 1-dimensional manifold (generated by rotations), because now antipodal points on the 2-dimensional spherical manifold are glued together via their attached 1-dimensional rotation angle subspaces.

This final glued version of the overall manifold captures all of the topological structure of the group of rotations in 3-dimensional space (i.e. SO(3)). It does not have the same topology as the unglued version because the gluing causes what were hitherto separate points on the manifold to become identified.

This gluing process is illustrated in the video, which shows how the gluing can be implemented by gradually morphing the 1-dimensional manifolds living at antipodal points on the 2-dimensional spherical manifold, until they eventually lie alongside each other ready to be glued together, and then they are finally coalesced into a single 1-dimensional manifold. Colour helps to identify corresponding points on the pair of yet-to-be-glued 1-dimensional manifolds, so that when the colours align with each other then the gluing operation can take place. It is clear from the video that this forces the pair of 1-dimensional manifolds to lie along a diameter of the sphere. Remember that the interior of the sphere is hitherto unused, so it is free to be used to represent rotation angle. Following the original 1-dimensional circular path from a point on the sphere back to itself again now corresponds to following a 1-dimensional path along a diameter of the sphere to its antipodal point, and then instantaneously returning to the starting point which has been glued to its antipodal point.

What consequences does this non-trivial topology have for rotations in 3-dimensional space? A rotation through 2Pi now corresponds to tracing a path along the diameter of the sphere from a point on the surface of the sphere to its antipodal point, and then returning instantaneously to the starting point. There is a non-trivial loop here because the path has clearly travelled somewhere else (i.e. the antipodal point) before returning home, and the loop can't be made to go away by moving it around inside (or on the surface of) the sphere, because the constraint that a pair of points on the path are antipodes is locked into the definition of the path.

So rotating by 2Pi in 3-dimensional space does not return you to where you started, because the path that you follow has a persistence that is enforced by the above antipodal locking-in effect. Of course, the physical object that you rotate has to have an appropriate physical sensitivity to rotation in order to observe this effect. A rotational scalar (e.g. the temperature of an object) will not show this effect, nor will a rotational vector (e.g. directions in 3-dimensional space) show this effect. An example of an object that does show this and other related effects is the Dirac Belt, where an object (i.e. the belt buckle) is rotated whilst the belt itself is used to retain a memory of what rotations have been applied to the buckle. After 2Pi rotation the belt is twisted so the overall state of the system is not the same as before the rotation was applied. The key to making an object that is physically sensitive to a rotation of 2Pi is that it must retain a memory of what rotations have been applied, which is equivalent to the object knowing about the path through the sphere discussed above. Obviously, there are many types of objects that exhibit this 2Pi sensitivity.

The best bit of all is that the locking-in effect of the pair of antipodal points can easily be neutralised by making an additional rotation of 2Pi, so that the overall rotation is 4Pi. This is illustrated in the case of the Dirac Belt, where the twist of the belt is zero after a 4Pi rotation, so the belt is not physically sensitive to rotating its buckle by 4Pi. The reason that the antipodal locking-in effect goes away when you rotate by 4Pi (i.e. make two circuits along a diameter through the sphere in the video) is that there are now two pairs of locked-in antipodal points, which can separately be moved around inside (or on the surface of) the sphere in such a way that the overall length of the loop can be made to go to zero, i.e. equivalent to no path at all. This interesting manipulation is not illustrated in the video.

So the topology of the rotation group SO(3) (i.e. the group of rotations in 3-dimensional space) is non-trivial as shown in the video, and it has highly non-trivial physical consequences such as those illustrated by the Dirac Belt.

### Ig Nobel Prizes 2007

The Ig Nobel Prizes 2007 have now been awarded. Quoting from News24 here this year's winners include:
1. Chemistry: Mayu Yamamoto of the International Medical Centre of Japan, for developing a way to extract vanillin, or vanilla fragrance and flavouring, from cow dung.
"She seems to claim if companies start using this method it might help with global warming because some of all the cow dung that causes problems in the atmosphere will start getting used," Abrahams said in an interview.
2. Linguistics: Juan Manuel Toro, Josep B. Trobalon and Nuria Sebastian-Galles, of Universitat de Barcelona - for a study showing rats sometimes fail to distinguish between a person speaking Japanese backwards and a person speaking Dutch backwards.
3. Peace Prize: The Air Force Wright Laboratory, Dayton, Ohio for instigating research and development on a chemical weapon, the so-called "gay bomb", that "will make enemy soldiers become sexually irresistible to each other".
4. Biology: Dr Johanna EMH van Bronswijk of Eindhoven University of Technology, The Netherlands, for their census of all the mites, insects, spiders, pseudoscorpions, crustaceans, bacteria, algae, ferns and fungi that share our beds at night.
5. Economics: Kuo Cheng Hsieh, of Taichung, Taiwan, for patenting a device in 2001 that catches bank robbers by dropping a net over them, known as the "net trapping system for capturing a robber immediately".
The inventor, however, could not be found by Ig Nobel representatives in Taiwan "We had people in Taiwan looking for him. He's vanished. Somebody suggested to us the possibility that maybe the poor man was trapped inside his own machine," Abrahams said.