Freesteel Blog » 2007 » May

Monday, May 28th, 2007 at 10:10 pm - - Whipping

I remember the spray-painted message that appeared on the concrete underpass when I was twelve. It said:

Lennon lives

The lead singer of the Beatles had died the night before in New York.

It’s now 2007. I live in Liverpool. Things have moved on.

The Reagan presidency has been and gone.

Two men from Nixon’s White House, Rumsfeld and Cheney, have started a war for oil which is still going on.

Global warming is presently the greatest threat known to humanity.

It’s caused by burning fossil fuels.

Everybody knows this.

There is nothing innocent about our age.

John Lennon’s widow, Yoko Ono, came to town last Friday to inaugurate of the first daily flight from Liverpool to New York.

For the bargain price of £159 you too could fly from John Lennon Airport to JFK in under eight hours while releasing one tonne of carbon dioxide into the atmosphere.

“The millions of people who already use JFK will get used to seeing the name Liverpool John Lennon on the destination board, and that alone will attract attention.”

“Above us only sky.”

John F Kennedy was the American president who sent helicopters into Vietnam to put down the insurgency in 1963.

Symbols matter only so far as they sell the product.

She came to Liverpool to promote something she knows causes irreparable damage to the atmosphere in the name of a singer who was once anti-war.

She ought to have called that aircraft

“Borrowed time.”

Monday, May 28th, 2007 at 3:24 pm - - Whipping 5 Comments »

What do you get for making your best FOI request ever?

Dear Mr Todd,

Your Freedom of Information Request and complaint

I am sorry that you were not satisfied with the response to your request for information. I have investigated this matter further.

I find that the response sent by my colleague, on the 12th April 2007 was correct and comprehensive, and exemptions to disclosure were applied correctly.

No statutory obligation regarding disclosure has been ignored. Although the Freedom Of Information Act does encourage disclosure where “confidentiality” may have been suggested, in these particular circumstances, the public interest does not, in my opinion, outweigh the need for confidentiality as set out in [the] letter to you.

As the contract you seek access to is a current contract, which is still running and not “concluded”, then we have exempted from disclosure the sections of the contract where the commercial interests of the contractor may be prejudiced were we to release the information you are seeking.

You have now exhausted the council’s complaints procedure. If you are still not satisfied with the response you have received then you have the right to complain to the Information Commissioner, details of your right to complain can be found at . [link still incorrect].

Yours sincerely

Senior Solicitor
For Head of Legal Services

Oh well. Luckily this is only about corporate corruption in the supply of over-priced and sub-standard (microsoft powered) ICT equipment for the purposes of educating as few of the next generation as possible in the art of computer programming, and not something as important as, say, somebody’s liberty.

Whatever the cause, the psychotic legal attitude is always the same in the way that every justification gets twisted — however dubiously — into an argument in favour of the public interest.

It’s not in the public interest to reveal this contract, because we signed a piece of paper that says we could be sued if we did so, and that would not be in the public interest.

We cannot let innocent people out of jail whom we locked up on the basis of bad evidence because it would not be in the public interest for the authorities to admit they had been lying, and the public might lose confidence in the only body that had the power to fight for their security in this time of war.

So, here goes:

To the Information Commissioner’s Office

Dear Sir,

Complaints regarding Bristol City Council:

1. Claims to have “contracted out” of the FOI Act.

2. Failure to acknowledge or comply with the process of FOI disclosure detailed in its contract.

I have included the full correspondence on numbered pages. I have experienced numerous difficulties with my inquiries, resulting in a final impasse.

I have been in pursuit of details of a £8.9million contract to procure ICT equipment for schools from Northgate Information Systems announced in July 2006 (page 0). I had initially believed this was done according to EU law through a BECTA framework contract. However, it appears it was instead done through Skanska plc and a “Local Education Partnership” (page 10a).

Both the framework contract and the standard contract approved for use with Local Education Partnerships set out detailed procedures for compliance with the FOI Act which were being ignored.

On 1 November 2006 (page 1) I requested details of the contract between Bristol City Council and their educational ICT supplier (believed to be Northgate). On 1 December (page 2a) it was refused because “disclosure of this information would be a breach of confidence… and could lead to legal action against the Council… [which] would not be in the public interest”. This clear attempt to “contract out” of FOI obligations was cited again on 2 January 2007 (page 4b) and confirmed on 6 March (page 10a).

On 3 December (page 3) I asked for details relating to their decision to sign what they believed were legally binding confidentiality requirements. I repeated my request on 2 January 2007 (page 5). On 24 January (page 7a) it was refused because it would take longer than 18 hours to locate the evidence. The refusal was confirmed on 6 March (page 10b) as it had been lost “among many un-indexed boxes”.

On 20 March 2007 (page 12) I explicitly asked for the contract between Bristol City Council and the Local Education Partnership. On 12 April (page 14a) I was told I couldn’t see it because it was deemed commercially sensitive, but that I could download a copy of the approved standard form of the contract from a government website.

When I checked out this standard contract (pages17a-h) I discovered that the FOI obligations had indeed been considered and addressed by those who had drafted it. On 20 April (page 15) I informed the Council of the procedures for compliance that I had found therein. However, after the usual delay, the senior solicitor let it be known (page 16) that I had now exhausted the Council’s complaints procedures.

I hope this explains the issues clearly enough to take action. Please do not hesitate to contact me if you require further information.

Yours sincerely,
Julian Todd

What happens now is it’s supposed to get assessed by the Case Reception Unit. Hopefully I then get an acknowledgment letter and a case reference number. It’s then referred to a Case Resolution Team and allocated to a Case Resolution Officer. If they can’t resolve the issue informally, they’ll issue a decision notice.

This is known as checks and balances. A separation of powers. A system wherein it is supposedly more difficult for corrupting influences to control all areas necessary in order to turn a profit.

Corruption is the enemy.

Just as the design of a fortress is determined exactly by the type of enemy it is intended to defend against (do they have canons or spears?), the design of a system of governance is determined by the sort corruption it is intended to resist.

Oddly, it is considered impolite to mention corruption in the designs, so all notions of corruption must be put down to incompetence, bureaucratic misunderstandings, and other suspicious coincidences. It you smell a fart, it’s always the dog who did it, but the man who looks guilty has to leave the room.

For those who listen to audio podcasts, I recommend The Royalty Treatment 11 May 2007 episode of Now NPR which details the story of an official in the US government’s Minerals Management Service of the Department of the Interior who attempted to pursue a $10million underpayment of royalties by the oil company Kerr McGee (who?). Just ten million dollars! He was told to stop the investigation, and later lost his job when the department was suddenly “reorganized”. Interestingly, US law appears to have so little confidence in the regulatory authorities that there are provisions which allow for a private individual to bring a case on behalf of the government which the government doesn’t want to touch, for reasons of being corrupt (the False Claims Act, dating from the US Civil War). If you win you get rewarded with a financial percentage of the fraud that you exposed. (Do check out the top 20 cases.)

In England, our corruption is much more subtle, because the oil company would have simply have made a deal and paid up some of the money it could afford, and the official in question would get promoted to a deeply boring job where he couldn’t cause any such trouble again. Eventually, all the staff remaining in positions of importance in the civil service would be incompetent at enforcement, and yet absolutely effective at covering up for their incompetence.

The public, meanwhile, would sense that something was not quite right, yet would be unable to put its finger on it. You watch the same magic tricks on stage year after year, yet you never work out the illusion.

There’s never quite the number of £20 notes left in your wallet at the end of the day. There’s a pickpocket at work and you don’t know where. Until you learn to write everything down on a separate piece of paper as you pay for it transaction by transaction and add it up later, you will never be able to discover what is going on.

Update: Purely by coincidence, there’s a consultation paper about bringing Qui Tam into the the UK. The proposals are mostly about criminal asset recovery, and not so much concerned with the corruption by, say, the big IT companies who, through their management consultants, advise the government of their insatiable need to loot the public treasury on delivery of crap software.

If only we could take a case to court where we could visually show the software that was provided against the invoice that was issues and see a discrepancy.

Monday, May 28th, 2007 at 2:11 pm - - Weekends

It’s cold and rainy on a Bank Holiday weekend in Wales, while the rest of the country is down in Hay on Wye hearing from all the great politicians and popinjays.

Here’s us about to be lowered down a 90metre shaft in North Wales. The chaps in the local club were kind enough to run their winch all day in the rain and bring us out at 4pm. It’s quite scary not being in control as you get hauled back up, occasionally brushing the rocky walls and then swinging across to the other side as you continue to rise. If your over-suit got caught it would get torn right off your body.

Monday, May 28th, 2007 at 1:52 pm - - Machining 2 Comments »

The originator of many of the innovatory ideas in Machining Strategist was not Julian Todd. The spiral entries, the plunge machining and rolled corners were innovated by Heinz Deiter at Depo GmbH as you well know. Your innovatory method of ‘rest-machining’ described in the CAD Journal was never a success; it was slow and inaccurate and your tessellator was surpassed by [other people’s] work.

The biggest indictment of your work was that all your machining algorithms displayed the triangular tessellations – they are visible on precision parts in all versions up to version 7. The Vero team and the NCG team were left to fix this serious shortcoming after your departure.

Some of your work was good, but as long as you claim HSM was ‘the fruits of my intellectual labour’ implying that you alone were responsible, even the respect that is due to you will be denied and you will continue to be ‘bugged’.

In your CAD Journal paper in October 1999 (the one the editors rejected) you dismissed the work of 7 other CAM groups with the statement: ‘Aside from the serious over-all difficulties encountered in pursuing such methods’. Nobody on the planet except Julian Todd can write CAM software.

Frankly you are big-headed and unbearable.

Tuesday, May 22nd, 2007 at 11:06 am - - Whipping 1 Comment »

It’s taken just two years of the Freedom of Information Act for our politicians to decide they can’t take the heat, and they have connived to pass a Bill that totally exempts the Houses of Parliament and all correspondence between a Member of Parliament and any department of government from the public’s right to know. They have lied about the need to do this to protect the public’s privacy, and proven it was a lie by rejecting a change to the legislation which would have targeted just this issue.

As readers will know, I use this blog as my own personal archive of FOI requests such as this one, until a national one gets set up.

Because the measure is so unpopular, they have tried to evade responsibility with a minimum turn-out, and leaving most of the dirty work to an army of ministers. Still, there was a filibuster which needed to be over-turned. Some MPs came in to vote for closure — a termination of the filibuster — and we recorded it on our voting set. One of the MPs who voted for closure and then tactically absented himself from the vote that followed took exception to our implication that he supported the Bill, and has told us we’ve got it wrong.

For the record, here’s my reply.


There is a big difference between what is democratically justifiable and what stands for normal operating procedure in Parliament. There is also a genuine divide between the public interest and MPs’ perceived self-interest. This particular Bill, which has been supported by factually false claims, crosses the line so clearly that you folks have tried to do it in such a way that as few of you as possible will be held culpable.

As Simon Hughes MP put on record, no one who supported the Bill spoke in the debate, yet there were a hundred MPs including scores of Ministers waiting in the wings to force it through. The only tactic of opposition was to filibuster. You have put on record an expression of a “desire to proceed with the vote”, yet no desire to participate in the vote. This leads us to believe that your absence (not abstention) was not wholly innocent.

It is true that our analysis may be inconsistent and inaccurate with regards of those who for tactical reasons stayed away from the division. This represents the often conniving incompleteness of the data with which we are presented. Parliamentarians are such masters of evading accountability that it’s quite an achievement that we are able to point a finger at any one of them.

While we have absolutely no influence over how the Parliament conducts its business, we do reserve the right to say what we think it is doing on the basis of authoritative evidence, common sense, and past performance. If you disagree with our analysis you are free to log-on and improve the data, as any member of the public is. No MP or their assistant has ever taken up this opportunity to detail what the heck is going on, so we can presume that you prefer we know as little as possible while attempting to bully us for being novices when we form conclusions you don’t like.

Julian Todd.

I’ve also got round to making a new entry into the Publicwhip FAQ: What is a motion to sit in private?. There’s more information there than asked for.

Update: Apparently we have agreed to differ, which is a fancy way to say we don’t agree.

Monday, May 21st, 2007 at 3:55 am - - Machining, Whipping 3 Comments »

Our news system is bad. It’s under-resourced, out-sourced, and used for the benefit of its owners, the corporations. It’s not censored, because in the West access to the press is open to all — like the Ritz hotel.

So, let’s take a story: Parametric Technology Corporation has suddenly purchased NC Graphics, my former employer for whom I wrote a large portion of a 3-axis machining kernel.

(Some people don’t think I was instrumental in this endeavor. So while the suits who are running the world’s CAM corporations have been scrapping over various copies of that particular piece of code, I have in the meantime contributed several new and superior algorithms into another 3-axis machining kernel. So the case has been established beyond doubt. But what damn right do I have to know more about software than the people who own it, eh?)

Anyway, the purchase of NCG was announced on the PTC web-page on May 16, 2007. Three documents: an FAQ (which nobody read), the thousand word Press release (which everyone copied from), and a cluttered up 18 frame slide show.

May 16

The news showed up on 5 webpages.

Bizjournal lifted 2 paragraphs from the press release, Les infos translated them into French, and BusinessWire took the whole press release word for word.

MCAD Cafe also repeated the entire text, but included the contact details for Nicole Rowe of PTC and Amanda Keane of Weber Shandwick. Shandwick is a massive PR corporation whose New Zealand office in 1999 leaked a large quantity of documents which formed the basis of the book Secrets and Lies. If you want a company to corrupt politicians, fake citizen’s front groups, cover-up for attempted murder and lie through every channel of the media in order to strip your country of its last pockets of native forest, they’re your guys.

Finally, Ralph Grabowski sensibly ignored all the choss in the press release, and quipped:

PTC continues to acquire companies on the periphery of CAD, this time CAM [computer aided manufacturing] software maker NC Graphics and its 15 employees located in England. Welcome to New England!

May 17

CIO in Bangalore, helping to copy text from a computer in Massachusetts to my one in Liverpool, moved the sentence: “the acquisition of NC Graphics is in direct response to customer demand for specialized CAM capabilities” down one paragraph.

Money control controlled its costs by giving us another identical replica of the press release. And so did The Manufacturer.

The day ended with one bright ray of information from Managing Automation where Stephanie Neil squeezed from “officials” the allegation that:

The deal…, valued at less than $10 million, broadens PTC’s design product suite and aligns the company closely with the needs of toolmakers, 65% of which are small or mid-size businesses…

(It’s been suggested that one reason they haven’t disclosed the price is that the deal is messily complicated, so doesn’t reduce to a flat figure.)

Ignoring the designated inquiries talkers Nicole Rowe, Chris Brown, and Meredith Mendola at the bottom of the page she phoned Sandy Joung and got:

The existing [Pro/E] CAM software addresses production machining, but does not offer functionality specific to mold and die manufacturers. “[I]t is not purpose-built for high-speed precision machining capability,” said Sandy Joung… “This product is fast in terms of execution speed… It is multi-threaded to improve productivity. While you are creating a machining program and calculating it in the background, you can be doing other things in the application, like starting new jobs or working on multiple designs.”

“Also, putting it in the context of our portfolio and [customer] needs, the value proposition for PTC is that once we’ve acquired a product, we make sure it integrates with … our portfolio so that we don’t have a collection of point solutions.”

This particular website seems to provide more than the normally provided nothing added. Unfortunately, since all the websites except Grabowski’s look the same — infested with shite ads — it’s hard for people to notice the difference. I could tell because I’m running SequenceMatcher on the text. Most visitors won’t know. Recommendation: If you are different, you should look different.

May 18

Cadalyst moved the sentence “in multiple discrete manufacturing vertical markets” down one paragraph. And SDA-india changed the phrase “has acquired NC Graphics” to “has plans to acquire NC Graphics”.


And that’s it. You wonder what’s the point of the business press if it’s mostly just echoes of the same lifeless corporate text. Many of the web-pages have a “Rate this article” and an “Add your comment” form, and I don’t know why. The point of this so-called “news” is for share-holders. They know nothing about the companies they own, they are told nothing about the companies they own, and they base their prices for buying and selling on no information. It’s no surprise that this happens in what is an utterly cynical and empty profound waste of human effort.

Stephanie Neil says that PTC has the goal of becoming a $1 billion company. The 2006 annual report gives it a aggregate stock market value of $1.78billion and revenue of $855million with 119 offices around the world out of which work 1,145 sales and marketing people, 1,307 in customer support, 420 in administration, and 1,437 in product development. You are only part of a number.

So let’s say they get their goal. What next?

“we have established a new goal for 2010: $1.5 billion in revenue and 22% Non-GAAP operating margin.”

Well, blow me down. That is so inspiring.

What’s most important, what it’s all driven by, is the result that the five guys with the power are compensated for their suffering with approx half a million dollars salary, half a million dollars bonus, and one million dollars stock options each year. That means they’re winners. Unless they compare themselves to their friends on ten or twenty million dollars a year. There’s no such thing as enough.

I’m genuinely baffled as to what you do with that kind of money. I mean, you can use it to help pay for 48 kilograms of unsecured highly enriched Uranium to be shifted from a derelict nuclear weapons plant in Serbia to somewhere safe.

Or we can work from the fact that the US Government prefers to spend its money buying PTC products to manage it’s vast stockpile of nuclear massacre machinery, and realize that something positive like that isn’t going to happen. Standby for further production of sports-cars, swimming pools, and mansions. That’ll move things forward in this world, won’t it?

So where does that leave us? Tonnes of money in the hands of a small group of people where it’s not going to do any good. And a very few number of low-budget programmers doing what they can to avert war whilst scraping together a living by inadvertently contributing to the military-industrial complex and its ability to manufacture yet more killing machines.

This — the whole lot of it — is a vast misallocation of resources.

The species is doomed.

Our social failures are systematic on the macro level.

Friday, May 18th, 2007 at 8:03 pm - - Machining, Whipping

Discovered while attempting to parse some processed UN documents. Here it is:

import re
s = "Add.1, 2020 and Add.1, 2021-2023, 2025, 2028 and 2029 and Add.1) R"
r =
print "It's going to crash"
print, s)
print "It didn't crash"

This example has been painstakingly iterated down from an extremely long case. It could probably go further, but it’s good enough for a report.

I have been using this regular expression module for three years, more heavily than anyone I know. I have iteratively built gigantic matching expressions and applied them to megabytes of poor quality data at a time. This is the first time I have ever, ever encountered a problem with it. It is absolutely the most reliable code I know (possibly because it runs Google), so I’m feeling a bit chuffed.

Owing to the fact that Python is a no-nonsense tool of, by, and for the people, without any demi-God like beings such as Donald Knuth kicking around in the background, I probably won’t be getting a reward cheque for this.

Oh well. I’ll just settle down and find out how to submit this bug, and then do a work around.

Meanwhile, scary emails from rich people are lurking in my in-box as a result of my rant yesterday. I’m too frightened to open them, and have forwarded them to Francis, my appointed agent for this month of May. He can deal with it. It’s the least he can do for encouraging this irresponsible attitude.

Update: Bug now reported with number 1721518

Thursday, May 17th, 2007 at 2:51 pm - - Machining 2 Comments »

Just recently I discovered a flaw in my usual algorithm for choosing the triangle that a point is inside. This means the error is in everything I have written up till now. It’s a pretty rare case, and manifested at the university where they were trimming a line through the origin with a triangulation of a cylinder.

The problem resolves to the following question. Given a point in an area, and a triangulation of that area, which single triangle contains the point?

We want a single answer, calculated using all the reliability of floating point arithmetic, where there is no such thing as being perfectly on an edge. (If it is on an edge, which is practically impossible unless the edge is aligned with an axis or at 45 degrees, then it doesn’t matter which side)

Point in triangle test

The first part of the usual solution is to solve it for a single triangle. If you have a reliable test which tells you whether your point is in a given triangle, then all you need to do is loop through the triangles in the area, and return the one which satisfies the test.

We are given a point p and a triangle with vertices a, b, and c

You can find on-line some bad implementations of the point in triangle test, and I have even once witnessed an implementation of the “worst algorithm in the world for testing points” in a triangle, known as the angle summation test.

One common technique is to find the coordinates of the point in the triangle by solving the equation:

p = a + s(b - a) + t(c - a)

for the scalars s and t. The point is inside the triangle when s > 0, t > 0, and s + t < 1.

The actual way forward is to use dot-products. If you have a vector v = (x, y), then the clockwise perpendicular vCT is (y, -x). We can say the point p is to the right of the oriented line ab if:

(p - a) . (b - a)CT > 0

This is using the dot-product operator. The condition is determined by 5 additions and two multiplications (a subtraction is the same as an addition with the sign changed).

If p is to the right of the oriented lines ab, bc, and ca, then it’s inside the triangle (and the triangle has a clockwise orientation). If it’s to the left of all these lines, then it’s also inside the triangle (and the triangle has a anti-clockwise orientation).

So, we have a quick test for the sideness between a point and a line, and if the point is on the same side of the three lines joining three points, then it must be inside the defined triangle. There are obvious ways to optimize the function to quit early and reuse calculations.

Point in triangulation test

The trouble with these tests is the boundaries. Owing to the behavior of floating point arithmetic, a point that is very close to the line might give differing results depending on how you do the test. It is possible to get the contradictory result that p is to the right of ab, and also to the right of ba. The important asymmetry is the (p - [a or b]) value, which will lose variable amounts of precision according to whether the coordinates of a or b have different enough exponents to vanish different parts of the mantissas of the coordinates of p. The fact that there are two coordinates means they can act in opposite directions to ensure that the results are truly unpredictable.

The result is, if you apply the point in triangle test on each triangle independently, you might wind up with the point being in no triangle or in two triangles when it is too close to an edge and the sidedness is decided inconsistently.

Until two days ago I thought all you needed to do to fix it was decide which side the point was in relation to each edge once, and stick to the answer. That way when the point was on an edge it would be sure to be in exactly one of the two adjacent triangles.

Unfortunately, I found the counter-example in the form of the point b in the picture above where it almost perfectly coincides with a vertex of the triangulation. Remember, the decision for a point that is in-line with an edge can go either way. If all the edges connecting to the vertex settle for sides that happen to all be in the same direction, then the algorithm will determine that the point is in none of them!

Nasty fixes

There are two quick fixes which you can apply if you can’t be bothered to get it right. The first is to add a sub-tolerant value that is too small for anyone to notice to the position of your point so it will be unlikely to coincide with any of the vertices. If there was such a thing as an inspector for auditing geometric modeling source code, they would know how to look for this bodge.

The second and most common fix is to bring in an epsilon value. It’s kind of the opposite attitude to dithering the point so it is safely away from the special cases, because you instead draw it into them. When the given point is with an epsilon distance of an edge, you treat it as though it were exactly on the edge, and if it’s within epsilon of a vertex, you make a special case out of that too.

This fix looks appealing because it appears to be covering all bases properly, subject to messing with the incoming data just as much as in the first fix, although not all the time. However, it does introduce discontinuities in behavior, and sometimes the special cases are so hard and rarely occurring that you are tempted to cut corners. The case I have in mind is when the triangulated plane is self-overlapping because it comes from the flat projection of a triangulated surface, and one of the points is surrounded by a shape that looks like a partly-folded umbrella.

I really don’t like epsilon value fixes, although they are rife throughout the geometric modeling world, and I am in a tiny minority for recognizing that they are a bad thing in the very long term. Why? If you set the value too small or too large, the system breaks down in various different ways. Therefore there is a range of values where things all work. As the system gets larger in terms of how much code has been added or how widely it is applied, the interval where it works can only get narrower. One day you might find that it disappears entirely, and there can be no value that makes the system reliable.

Nice fixes

I’ve not worked it out yet, but I believe there is a robust answer to the problem where you first cut the triangulated area with a horizontal line through the point so that you get left with a partition of intervals along that line. Then you locate the x value along that line and read off which interval and therefore triangle it is within.

The best answer is probably to make an analogue of my line cutting offset polygon function, and forgo any chance of making it work for an offset of zero. This is not the same as the an epsilon solution, since the range of values for which it works only has a lower bound. You can set it to take offsets that are large enough to close any gaps so that it can accept triangulations that are not watertight and avoid having to build a complex algorithm to “heal” the cracks.

There are several such healing algorithms in the world, and I imagine that they are unbelievably complicated. I don’t intend ever to write one, because I believe it is always be possible to reconsider what it is being used for and whether the watertightness condition is absolutely necessary.

Thursday, May 17th, 2007 at 1:15 am - - Machining 1 Comment »

The wikipedia article for NC Graphics is now up to date.

A tip-off brought to my attention the press release which, since it’s on the internet, is officially public, meaning I don’t need to explain why I know about it, since it I can claim that I am sufficiently sad that I spend my lonely evenings after the pub browsing through the press releases of the Parametric Technology Corporation, purveyors of Pro/Engineer machining software products.

Indeed I do! It’s all very interesting. As the originator of the 3-axis machining algorithms that seem to have now infiltrated a surprising percentage of the world’s CAM systems, I can confirm that none of these multi-million dollar deals between men in suits dealing out the fruits of my intellectual labour that I contractorally handed over lock-stock-and-subroutine to my capitalist employer before it had been technically possible to prove my worth, result in so much as a post-card to say thank-you for doing such a wonderful job.

It would appear that this set of code is one of the more widely successful and sought after pieces of work in the business; these companies have spent decades investing their own employees’ time and patience in their own versions of 3-axis kernels, so for them to go and buy this “mastery of high-speed machining” means something.

None of this cash goes back to the original developers in any theoretical sense, in that I’m sure I would have got paid the same, if not more, had I done shoddier job and wrote algorithms that crashed more of the time, since they’d need to call me back to fix it.

But it’s not the money I’m bugged about. It’s the respect. Sure, while Picasso’s oil paintings were being exchanged for millions of dollars between New York art dealers, he didn’t get a cent. But every so often they’d hang one up on the wall, and say, “Picasso did that. It’s good, isn’t it?” And then if Picasso stopped by in town, they’d probably be keen to take him out to dinner if they could, and then afterwards to one of their favourite late-night topless bars. He’d have a good night out being the centre of attention.

I don’t know. I think the expectation of respect is what drives programmers to do good work. It can take years to tell whether some code or other was designed and executed well, long after the job is done. The long delay in the assessment, and the systematic lack of recognition when something works well, means that good code is impossible to incentivize financially. You have to want to do a good job. Irrationally. No one actually notices, and any expectation that something else is going to happen is merely the delusion of youth. You will not get treated to lunch in the executive dining room at any time.

Meanwhile, I just discovered that my old pre-university 1986 computer game Fat Worm Blows a Sparky has suddenly got its own wikipedia page. That’s pretty cool. A complete stranger did that, and it’s made me happy.

So, here’s a question to pose to any young programmer setting out in life to make his mark on the world. Who would you rather be? Bill Gates or Linus Torvalds?

Remember, to become the richest man in the world, you have to devote your life to setting back the course of PC development by as many years as possible. You don’t get ahead by writing the best operating system in the world; you do it by preventing anyone else writing and selling another operating system, or browser, or programming language that could compete with you. As Judge Jackson wrote in 1999.

Microsoft deprived consumers of software innovation that they very well may have found valuable, had the innovation been allowed to reach the marketplace…

The actions that Microsoft took against [Netscape] Navigator hobbled a form of innovation that had shown the potential to depress the applications barrier to entry sufficiently to enable other firms to compete effectively against Microsoft in the market for Intel-compatible PC operating systems…

This campaign, together with actions that Microsoft took with the sole purpose of making it difficult for developers to write Java applications with technologies that would allow them to be ported between Windows and other platforms, impeded another form of innovation that bore the potential to diminish the applications barrier to entry.

It is clear… that Microsoft has retarded, and perhaps altogether extinguished, the process by which these two middleware technologies could have facilitated the introduction of competition into an important market…

Microsoft’s past success in hurting such companies and stifling innovation deters investment in technologies and businesses that exhibit the potential to threaten Microsoft. The ultimate result is that some innovations that would truly benefit consumers never occur for the sole reason that they do not coincide with Microsoft’s self-interest.

If you recall, the case magically disappeared once the Bush administration took power. Clearly, Bill Gates’s wallet would have voted for him. This then freed Microsoft up to use a front group of lawyers to attack and attempt to destroy Linux.

It’s easy to end now with this quote published in Computer World in January:

“They’re essential,” [the Microsoft technical evangelist James Plamondon] said about software developer pawns, according to a transcript of his remarks. “So you can’t win without them, and you have to take good care of them. You can’t let them feel like they’re pawns in the struggle… I mean, all through this presentation previously, I talked about how you’re using the pawns and you’re going to screw them if they don’t do what you want, and dah-dah-dah. You can’t let them feel like that. If they feel like that, you’ve lost from the beginning…. So you can’t let them feel like pawns, no matter how much they really are.”

Wednesday, May 2nd, 2007 at 11:43 am - - Machining 2 Comments »

Back in the UK, with a slight diversion via Diss to work on the UN thing, and get taken out for a short sailboat trip up the Norfolk Broads to get a terrible headache from a mere one pint of beer at lunchtime. I still had a headache the evening of the following day when I went to bed in Liverpool. God this is annoying. It’s easy not to drink when it hurts that much.

God damn it. I left my skates on the train in Denmark. This pissed me off more than anything that could have happened. They worked really well. I can’t just get another set. Now back home, the allotment has been dug, the grass cut, Tuesday yoga has been attended, and I’m still living off supernoodles because I’m too lazy to go shopping and there’s no one to cook for. Becka meanwhile is still caving in China. I think she’s in safe hands, don’t you?

Meanwhile, I’m looking forward to the sea, and planning a sensible kayak diving trip to Scotland. This follows last year’s successful kayak diving trip round Plymouth. Becka will of course try to get out of it, having taken so many days away caving, while leaving me at home to work alone without any holidays, which doesn’t matter. Also, we’re going to try and visit one of her schoolfriends near Skye who is a long-distance Alaskan sea-kayaker, and an ex-Liverpool person in Inverness who wants a ride on our kayaks, in spite of the odds.

I have already planned the first stop on our tour, a trip out of Brighouse Bay, which is featured in this sea-kayaking podcast, and nowhere else. After years of doing without, I’ve gained a habit of buying all guidebooks that are remotely relevant, and found that the Scottish Sea Kayaking – Fifty Great Sea Kayak Voyages doesn’t list anything within a hundred miles of it, and diving isn’t considered anywhere in the bay, due to the fact that it’s all mud flats. However, my secret marine charts show a short clear bit of deeper water on the coast there. It’s not clear on the coast over at Hestan Island.

Internet researching is amazingly time-consuming since you don’t know what’s there, and there is so much incomplete information. Mind you, there’s advice:

When an isolated rock or reef has an occasional dumping wave break onto it, it is known as a ‘ boomer’. What happens is that the water pulls away from the reef, exposing the top, then the next wave arrives and the crest explodes onto the bare rock. This is probably the worst place you could be with your kayak.

These are the last years of the climate to which we have become acclimatized, as we head off the scale. I was awake late on the boat back from Denmark. The bioluminescence of the plankton in the bow wave was so bright I could see it on the ceiling.