Freesteel Blog » 2014 » February

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.

Tuesday, February 11th, 2014 at 5:43 pm - - Adaptive

Taking a break from all my other mindful notions to do some proper work on this stay-down linking job.

I have an A-star function that works on the underlying weave structure. The white zones refer to the weave which defines the interior of the contour, and the red zones are the places where it’s safe to go without colliding with the uncut stock.

Most A-star algorithms involve one start point in each tile which spreads out to all sides of the tile. But in my implementation the paths from the sides of the tile are pulled from the receiving end, so it’s possible to have two start points in the same tile with two paths going through, as shown above.


Wednesday, February 5th, 2014 at 8:33 pm - - Canyon

Spotted the new(ish) Liverpool Wakepark on the docks when I cycled passed it on the weekend while taking a break from endless, endless coding every day.

So we booked a ride on a fine grey February afternoon.

The place (called “Industry.1”) is dude central, and appropriately disorganized and friendly. Downstairs from the changing rooms numerous fire service bods were practicing how to rescue each other with tow lines from the static salt water. Looked a bit dull, but they can’t justify wakeboarding on working time. If this flooding goes on much longer, they’d do better to get their training at one of those artificial whitewater courses where they’d get washed off their feet and they added tree branches into the flow. See that river: that’s your high street.

I took my caving wetsuit, still muddy from the last time I used it in July. This finally got it clean.

And we’re off. It’s probably exactly the same as water-skiing, except without the power boat, the mess and the noise. I never had rich enough friends to do that.

Becka seemed to enjoy it a heck of lot more than snowboarding. Or canyoning.

We both got standing and going in a straight line before our time was up.

Not bad for something that’s literally a quarter of a mile away from home. How lucky is that?

Now, back to work. This ain’t the summer yet.