Wednesday, July 20th, 2011 at 4:16 pm - - Machining 3 Comments »

I took the plunge and made the online slicing application live today. Read about it on the Free Stuff page.

Friday, May 1st, 2009 at 4:31 pm - - Weekends

Yesterday night Stella and I went to rural Cheshire to shine a torch into some muddy ponds. And traps were stuck into the mud. The traps are home made from empty pop-bottles (the big plastic kind) with the top cut off, reversed and stuck back into the bottle, then speared with a little stick they got stuck into the mud along the edge of the ponds. Somehow these traps are attractive to amphibians, like newts. But be warned: You have to be licensed to use these traps: it is illegal to kill, capture or even possess a Great Crested Newt, or mess with it’s habitat. Needless to say Stella is licensed.

It was really interesting: In one pond we saw dozens of leeches moving about, probably waiting for prey. We did not try to identify them, but reminded ourselves not to forget to wear gloves when reaching into the water. Then we spotted fresh water mussels which were huge and native. Stella identified them as “Swan Mussel”.
We also saw a large bird, probably an owl, hunting in the dark near one pond. I say we, but it was really Stella who has this amazing ability to spot any wildlife, whereas I always miss it. But I heard owls calling out from the field verges.

We left the traps over night (we had set ca. 90 traps) and returned early this morning to check them and count any amphibians that got inside. These traps warm up during the day in the sunlight, and any animals trapped would die if they are not let out in time.

Only one newt was found, a more common, so called “Smooth Newt”. Newts are protected all over Europe, and “Great Crested Newt” enjoy the highest level of protection in the UK. Other animals found included a water scorpion, a few little, very frightened fish, tadpoles of frogs and toads and a few fast moving water boatmen.

No need to say this was a very welcome distraction from the usual day of working behind the computer.

Really sorry I did not take a camera.

Wednesday, March 18th, 2009 at 6:45 pm - - Machining

Here a snapshot of current development, showing two ways of machining fillets: For roughly horizontal fillets we machine “along” the valley following a spiral, for roughly vertical fillets we machine “across” the valley of the fillet, from side to side.
valley2

Thursday, December 4th, 2008 at 4:34 pm - - Machining 3 Comments »

Check out the online version of our STL slicing application.

I’ve used ajax for calling a server script to do the actual slicing.
The link should also work in Internet Eploder (I’ve tried it in version 7).

Thursday, August 14th, 2008 at 5:40 pm - - Machining 3 Comments »

Here’s a bit of easy C++ code using a template class with a template member function that compiles and executes with no problems on MS VC8:

#include <iostream>
#include <vector>
using namespace std;

template<class T>
struct A
{
 T x;

 template
 void fun(IT& it1, IT& it2)
 {
  for(IT i = it1; i != it2; ++i)
   cout << (*i + x) << endl;
 }
};

int main(int argc, char* argv[])
{
 A<int> a;
 a.x = 1;

 vector<int> b;
 b.push_back(10);

 a.fun(b.begin(), b.end());
 return 0;
}

But try this on a linux machine with gcc (I used “gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)”) and you will get into compilation trouble:

g++ main.cpp -o main
main.cpp: In function âint main(int, char**)â:
main.cpp:27: error: no matching function for call to A<int>::fun(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >)
main.cpp:12: note: candidates are: void A<T>::fun(IT&, IT&) [with IT = __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, T = int]
make: *** [main] Error 1

So, what’s wrong?
If there’s only one candidate, why does the compiler not instatiate that one? Why is there a matching problem, and why does VC8 not spot this?

I could wait until tomorrow with telling you the solution, but I won’t let you racking your brains…

here it is:

replace the declaration of the template member in template struct A with this:

void fun(const IT& it1, const IT& it2)

and you get a result. But why is that? You tell me!
And what do you do if you want to code a member that needs pointers, not constant references? Somebody out there who knows the answer?

Friday, May 23rd, 2008 at 1:37 pm - - Machining

Julian noticed a lot of spam showing up in the html sources of the side bar, as hidden text. So finally there was a good reason to give in and update to the latest version of WordPress. We also threw in a few more plugins to protect us from further spam bot attacks (or whoever spammed this site).

Wednesday, September 19th, 2007 at 11:06 am - - Machining 1 Comment »

My guess is that this is one of the most used lies in the world of business.
But sometimes it’s true, like yesterday when I called a company a second time to chase up an invoice that was well overdue. On my first phone call I was told that somebody would call back but never did; and on my second call a day later I was told that a “cheque is in the post”… I can’t help but see a connection here, or do you really believe the cheque would have been in the post without my insisting phone calls, after nearly 2 month since I sent the invoice?

Luckily I knew about the late payment legislation and how to word an invoice: If the money is not handed over after 30 days of your invoice date you can claim compensation for debt recovery as well as interest for every day the payment is late.

Funny that the company who owed the money probably know all this from writing their own invoices: They are charging their customers periodically for their products, and I bet you that any overdue payment is dealt with in a swift and efficient way, much more efficient than we are.

Finally the cheque arrived today, and my invoice for debt recovery and interest will go out today as well. I will keep you posted on the next cheque that should be in the post soon.

Thursday, November 23rd, 2006 at 12:01 pm - - Machining

I have translated the brochure into German, you can download it from here. We will take it to Germany to the trade fair Euromold 2006 next week.

Wednesday, November 15th, 2006 at 4:17 pm - - University

Python programmes can be for mulltiple platforms. If you can get away with not using platform specific packages in theory at least you should be able to run one python script on several different operating systems with the same look and feel.
I recently (last week Friday 10-11-2006) had the pleasure to put this to the test once again: I was asked to programme a psychology experiment where the person experimented on is exposed to a series of 3 letter sylabels on the screen, one of which is red. They have to press a corresponding key and time as well as the correctness of the answer is saved to a file for later statistical analysis. I programmed this in python and used Python Imaging Library and wxwidgets for the graphics and the user interfacey bits. All done on windows xp, and it works fine. Now, making a Mac version should be very easy: you should be able to take the code and run it on the Mac. Some hours later, compiling all sorts of stuff to be able to read and render font files on the Mac, work around the fact that a Mac keyboard has a different layout than a PC keyboard… In short, you still have to do platform specific programming; and the biggest annoyance is that there does not seem to be a very simple sound interface to just do a beep on the Mac. Do I really have to read and play back a wave file to just sound an acoustic warning? And, I have the suspicion that keyboard events are buffered differently on the Mac version of wx than the PC version. This is critical, because i have to filter out multiple key strokes, when the tested person goes maybe into ‘computer game’ mode and starts hammering one key…

Saturday, October 21st, 2006 at 6:13 pm - - University

Friday was a day at the psychology department. I battled with wxwidgets to get a full screen frame without any window decorations on Mac OS X, not with the desired outcome. The best I can get is a screen filling frame, but with a title bar and a ‘close window’ button at the top. Acceptable. Shame that it works as desired under windows. The other thing I looked at was using py2app to wrap up a python application that uses Python Imaging Library and wxwidgets to run on another mac. After some unsuccessful attempts I decided to upgrade python and site packages to newer versions. I upgraded python from version 2.3 to 2.4 and downloaded wxwidgets latest available version. The new site-packages installation meant I had to reinstall py2app. Success, with the latest versions py2app created mac a working application. A lot of these different packages come with their own installation tools. Ever heard of ez_install.py (say eazee(!))? Well, that is used for setuptools and py2app. Or python eggs? Don’t quite know what they are good for, but some got laid in my working directory.

And I had a chat with another scientist at the department about programming some experiments for her.