Saturday, April 12th, 2014 at 9:43 pm - - Hang-glide

What’s a blog post if it makes any sense the next year? It usually doesn’t when I go back over them to look up an important piece of information, like the date when something happened. I do have a separate logbook for the flying and things like that. Blogs don’t seem to work. Too whimsical and public and I tend to leave out names.

On Wednesday I took the DoESLiverpool intern down to Mach2014 as he is a mechanical engineering student when he’s home in Italy.

Lots of whizzy cutting machines and mechanical gadgets, mixed in with generally unfriendly software companies who deserve to be left for dust when the far more efficient open source methodology finally moves into this sector and the programmers can talk to one other freely and discover how to get things done. The best ideas can never all be inside one company. (You can forget about ideas that are the combinations of many other ideas). It’s just a question of persuading the market to raise X dollars for the programmers to do the work, rather than handing over 100 times X dollars to companies who own the dead capital and mismanage the software development process with their layers of management and high level strategy thinkers who have grown too lazy to do any programming themselves, yet still believe they have something to contribute.

You know the saying: “All politics is local”? Well, I’m beginning to believe that All programming is low-level. You either understand the software, or you don’t. There is no high level structure that you can be involved in without knowing about the code. Take, for example, another branch of engineering. It’s self-evidently ridiculous that you could have anything to say about the shape of the skyline of a petrochemical refinery if you have no idea about what the chemicals are doing, and what needs to be mixed with what. Is it unique to software that people who don’t program want to be in charge of the design? The one thing we do need from managers are specific performance targets to keep us from making excuses. Something like: “If I’ve got a 32 core machine, I want it to run 32 times faster on this example. Is there a theoretical reason why I can’t have that?”

Anyway, the picture on the left is a set of printed titanium parts for a bicycle frame that no one dared ride. The one on the right is of a mini-machine tool with a huge toolchanger system. There are no plans for a toolchanger on our triangular machine. I wonder if we’ll discover that this is a problem.

I spent all Friday at Llangollen for a 12 minute flight down the hill where I only barely cleared the fence into the landing field having taken an extra turn to bleed off height when I was stupid enough to think that I was going to overshoot. Something wrong with my judgement here. The guy I drove down with reckons the half-life for hang-gliding skills must be 6 months. Got a lift back to the top, set up again, then the wind changed, and we watched three paragliders soaring up to the clouds while we were grounded in a light, cold easterly cross-wind. Humph.

Time for something new. A month after seeing kitesurfing on the Wirral on a bike-ride with Francis, Becka and I were having a 4 hour lesson with a surfer dude in the same place near New Brighton.

This would have been last week, but after we’d got up at 6:30am, caught the train to Birkenhead where it broke down, and then cycled at a mad rush to the north coast through the morning rain, we met the man in the van who said there was not enough wind. He gave us a lift back over the water, and got the message that we were keen.

Still, compared to anything else I’ve tried to do, this is very close to instant gratification. We were kite body-dragging through the waves by the end of the fifth hour of the lesson. What a long day.

Tuesday, April 8th, 2014 at 9:56 am - - Cave

Weather was nasty over the weekend, I’m losing the plot when it comes to programming, and I enjoyed the physical activity I did last weekend, even though the flying was not successful.

I joined Becka and others on a “promising” dig in Gaping Gill beyond Hensler’s endless flat out crawls, and through the “blowhole”.

The dig was a tight wet inlet with pooling water, mud, and not enough room to turn over onto your back from your front. Clearly this had been subject to terminal worm-holing. There were a lot of digging tools to use with which I tried to widen the passage vertically at the front — though I didn’t pass much spoil back into the digging trays during the process. Tom took over after 90 minutes of me hogging the dig until he got too cold due to not wearing enough neoprene. We retreated and warmed ourselves up by chucking a heavy rock back and forth between us until our lower backs hurt. The remaining diggers complained that we’d used up all the air, so they couldn’t do any more. Never a good sign that a dig is heading towards big passages.

I got back-of-the-knees wetsuit rash walking up to the entrance, and we nearly got lost in the fog on the walk down. It was great. After a quiet night at Bull Pot Farm (all members were at the dinner/AGM), I got dumped at Clive’s house for a few hours while Becka went caving. This lead me wasting time on a couple of FOI requests to [1], [2], and flicking through the ACCU magazine to find an article about the First International Conference on Software Archaeology.

About time people started talking about software archaeology. It’s evidence of the dereliction of responsibility that the executives running our large moneyed software companies whose wealth depends on the functioning of decades old piles of buried and very crappy code are not properly funding this field of study, and leaving it up to a small number of visionary amateurs to do what little they can, while the executives cash out their share-options for yachts and corporate take-overs. I see no process within the corporate power structures that would result in those who control the money becoming aware of where the actual needs for investment lie. If it was seen that corporations devolved certain budgets to be disbursed by internal committees staffed by people who understood the challenges and were in a position that they did not need to get things signed off by senior officers who didn’t understand the challenges, maybe something positive would come out of it. After all, the public sphere exists as a system of quasi-autonomous organizations with their own budgets to get on with matters that central government are not always politically happy with, but which need to get done, so why is it not a viable option to consider such formal systems of operation within corporations?

Tuesday, April 1st, 2014 at 8:26 pm - - Hang-glide

Not cool! How did I end up holding my glider this way up in a bog at the foot of Whernside on Sunday?


Monday, March 31st, 2014 at 8:21 am - - Kayak Dive

Not quite such successful conditions as when we dived under LLandudno Pier the first time. This time we were attempting to take a couple of strangers who wanted to get into kayak diving on the first available day with reasonable conditions since September last year. (It’s not been a good year for weather.)

There was a brisk easterly wind, and the waves were stirred up. It was somewhat bouncy under the pier. Even this far from the shore the water was still the consistency of weak tea (with milk). But I got the anchor in. Then, just as we were in the water with waves crashing past our ears, three guys in safety gear and orange jump suits stuck their heads out from above, and shouted. “Hey, what are you doing? You’ve not got permission. This is private property.”

They began shinnying down through the barnacle and mussel encrusted iron work.

Wednesday, March 26th, 2014 at 12:29 pm - - Machining

Trying to get this surface triangulation distraction closed down today. The proposition was to see whether I could repurpose my toolpath strategy code and apply it to the problem of triangulating trimmed NURBS surfaces. After all, trimmed NURBS surfaces exist on a 2D parametric domain (like the 3-axis drive plane), and the trimming curve is very much like a machining boundary. You have to know that something like the constant scallop routine is actually modelling a surface that is repeatedly being eroded away, because the toolpaths you see are in fact the boundary outline of that surface.

One of the common triangulation results I kept getting looks like a nice Afghan carpet pattern, like this:


I have an explanation. This happens when maxHdiffFibre is too small.

The surface is divided up into cells, and the sides of each cell has at least length/maxHdiffFibre extra points inserted along them. The convex polygonal area of each cell is then triangulated by lopping off the sharpest corners repeatedly, until you have an 8-sided shape that still has points along the top and bottom sides because they were the longest to begin with, so these are joined up. The outer boundary is the trimming curve, so one side of over-sampled cell is trimmed away leaving three sides that have too many points which need to be joined up in the best way they can. Then, at the corners of the trimming curve, the cells are subdivided to get smaller and smaller complete rectangular cells which are small enough not to be over-sampled.

I don’t think anyone else in the world misuses a 3-axis toolpath algorithm to make a triangulated surface, so this type of buggy behavior is unique.

Meanwhile, a correspondent of the blog took up the challenge of making an excellent triangulation of a cone. He did this by starting with the triangular lattice with rotational symmetry of order 6, and then cutting a pie slice out of it in order to join it together to form a cone. Because he didn’t have the power of Twistcodewiki to draw 3D geometry direct from Python in your browser, he implemented the picture of all the edges by exporting Postscript commands, and didn’t have the capability of drawing the triangles themselves in order to see the folds:


Twistcodewiki is great. I use it all the time, even though its light/shading features are crude and terrible, and the interface is almost non-existent. But the one thing it does is so important and unique that I can ignore the fact that it doesn’t do it very well. The same probably goes for a lot of software out there.

Tuesday, March 18th, 2014 at 1:54 pm - - Machining

I hadn’t worked on triangulating surfaces since the first version of machining strategist in 1994, but always thought I could do it better by distributing the triangles in a nice enough manners. It is true that the people who write surface triangulators in engineering CAD packages don’t in general try very hard, but I don’t think many folks realize that there is no right answer.

Suppose we have a smooth surface S, defined by a function from a subset of the plane to real space

  f: D ------> R3, where D is a subset of R2 
                  representing the set of points within a boundary B defined by:
  b: [0,1] ------> R2 where b(0) = b(1)

… roughly speaking.

We want to approximate this surface to the tolerance e with a set of connected triangles defined by triplets of points in R3-space:
T = { (p0, p1, p2) }

It would be nice if it had the following properties:


Thursday, March 13th, 2014 at 7:41 pm - - Machining

The days and weeks are passing me by. I’ve got to stop doing this programming and get with something I’m interested in. I don’t think I’ve been outside of Liverpool since January.

Due to a surface triangulation crisis (the speed of machining operations being four times faster than the initial time it takes the CAD kernel to produce the triangles it needs to start work), I spent the last 10 days hacking up a trimmed NURBS surface triangulator and triangle flipper with Martin based on some of the machining algorithms. We pretend the trimming curves are machining boundaries and encode an XYZ point at each XY 3-axis sample point instead of just tool tip height.


The triangle flipping is a second component experiment I’d been meaning to try for a long time. Can you redistribute the triangles in a better way than simply along the UV parametric lines? Not sure I’ve got an answer yet, but it’s exhausting trying to find out. I’ll write it up later when I have the energy.

Meanwhile, in another part of the city, things are being built by real engineers. I’m looking forward to installing it in the office and making it work. Which is more than can be said about many of the programming projects I’ve put my hand to recently.

I’m also wasting time posting ideas onto the internal Autodesk idea database. Most are sinking like lead bricks into mud. It’s pearls before swine. The latest idea which everyone hates is to hold Simultaneous Satellite Tech Conferences in each region rather than wasting a shedload of carbon by flying all the techies to meet in a hotel in Canada for two days.

“Oh, but I find the in-person meetings are so important for building relationships,” they say. “This never happens with on-line meetings.”

No one seems to think that maybe it’s because on-line meetings generally last less than an hour, but when you travel half-way round the world to a meeting, the duration of the meeting is in practice like 20 to 40 hours long (with sleeping breaks).

Perhaps this extended time period is what’s important, eh?

I mean, look, if you teleported into your favourite tech conference for, let’s say, one hour and fifteen minutes before suddenly vanishing in a puff of smoke, you wouldn’t be able to build a lot of relationship experiences with the people there, would you? However, if you were trapped in an elevator for 10 hours, and all you had was your phone which you could use to call the person in stuck in the other shaft, you’d become friends for life with that individual.

It’s all in the mind. Use your imagination. A functioning virtual telepresence system should not involve booking the suite for an hour on a stupid meeting. Instead it should require being time-locked in a tank for 12 or 24 hours where the only communication line is routed via the office to which your business travel destination has been designated. You can phone home, but the phone call will literally need to be be directed into a physical acoustic coupler device in that office. You are there, with all the inconvenience of being stuck there, meaning that the place of least effort to communicate is there, and it will be rude and boring if the people in that office don’t pay attention and entertain you while you are stuck there. Maybe after the first six hours you will have dispensed with enough pleasantries and finally be talking about the things you need to be talking about, and building those bonds of friendship that take time to form. Glue and cement and gelatin all take time to set. Do you not think they same could be true for our frivolous minds?

Wednesday, March 5th, 2014 at 11:55 am - - Whipping 1 Comment »

The Green Party Spring Conference was held in St Georges Hall at the weekend. I didn’t take any photos except for this one of Jean Lambert MEP.

International governance is a serious issue with major consequences. It doesn’t help that the British public enjoy electing clowns from UKIP and the BNP to these positions where they don’t even pretend to do any work. Politics is not a sports show, like the football league. This stuff matters. And it is logical.

This morning there were two politicians debating on the radio news program: LibDem MP Martin Horwood and UKIP Leader Nigel Farage squabbling about immigration, and tripping over themselves to praise the Transatlantic Trade and Investment Partnership treaty being secretly negotiated between the EU and the US. Horwood asserted, without any evidence, that this deal would “eventually help to create millions of British jobs”, while Farage said that if we were out of Europe we could sign this deal much faster than allowing Europe to do it.

Farage argues for Britain to get out of Europe on the basis that it gives us greater national sovereignty and control over our own laws — something which is flatly undermined by these trade deals whose sole purpose is to establish the supremacy of corporate rights over people’s rights, and where there will be no Parliament to over-see its operation.

Wednesday, February 26th, 2014 at 1:41 pm - - Adaptive 1 Comment »

Last year we got a chance to see SolidCAM’s iMachining and laughed at the way its progress bar jumped all over the place, from -14% to 200% and back again.

Then we looked at our own Adaptive Clearing strategy which we had just spent the past year making multicore — and noticed it did the same stupid thing!

How embarrassing.

You never notice yourself picking your own nose, but when someone else does it in your face, you realize it’s ugly.

Progress bars don’t get as much love and attention from the programmers as they ought to, given how much time the users have to stare at them. The users think it’s so normal for the progress bar to be absolutely wrong that it’s considered a sign of extreme naivety to think about complaining. They probably believe that we’d going to laugh at them if they raised the issue.

It turns out that the progress bar on multiple CPU processing is not hard to get right, but you do it differently to how you do it on a single-threaded process.

Let’s first think about what a progress bar is for. There are two different options. It could report the time remaining for the process to complete, or it could report the percentage of the process job that has been completed.

The time remaining might be the most useful information for organizing your life (is there enough time to grab lunch while this completes?), but there’s no way you’re going to get that information — even though it’s what everyone wants to know.

You will hear: “How many days till it’s done?” more often than “Are we at the 75% complete stage yet?” for a project — and that’s even before it’s over-run by a factor of two.

In fact, the only practical implementation for the time remaining is to run the whole job first, time it, and then set a count-down timer from that value when you run it again. It’ll make everything run twice as slow, but what’s the big deal?


Saturday, February 22nd, 2014 at 10:25 pm - - Hang-glide

Today is Saturday and I’ve stayed home to work while Becka went off caving and having fun.

I’ve got absolutely no useful work done. I spent the morning fussing over my photos on various external drives and went to town to print a batch of them. Then I swapped them around with the photos in the frames on the walls, having decided that such changes would bring some variety over the years in addition to seeing the paint progressively peel from the plaster as the walls dampen. Then I swept out the garage after piling all the knackered gear onto the shelves. And finally I pondered over the fact that google appears to have just put my whole 3D scanning project completely out of business. Why bother trying to do anything?

I need some fun. Last week my favourite radio show ThisIsHell aired an interview with someone who had written an article What’s the point if we can’t have fun.

I know what fun is. It involves being in Austria with a hang-glider. And, unlike work, if someone else has already done it, it does not imply that my time spent doing it is consequently wasted. Put into that perspective, I’m doing people a favour by not getting any work done. However, I now have a headache and I’m very annoyed.

The two places I want to go back to as soon as possible for hang-gliding are Greifenberg and Loser.

Here are the webcam images for both places today:

greifenbergwebcam loserwebcam

Here’s the alptherm view:

Not very promising really. But I want to get into the habit of looking at it so I can think about picking my days for booking the ferry, driving straight out there, and getting it done when there is an adequate weather window.

Let’s check the record for when flights at these places early in the year:


I got some waiting to do. And I had better get some work done in the meantime. Not going to happen tonight, though.