Well, since I’m waiting for my latest algorithm test to run right now (it takes around 30-40 minutes each time I want to test it) I thought I’d write a bit about my work since I haven’t done so before.
Basically for the past 4 months I’ve been working each day on the same algorithm. It’s related to CAD geometry data and partitioning / grouping multiple geometry elements in to complete forms inferred solely from their relative positioning. It’s a hard problem, or so I’m told repeatedly, and I tend to think so too. Even though it’s one algorithm, it consists of multiple steps which are in themselves complex.
Most of the ideas and work on it have been solely my own with assistance from my supervisor only when I need to know how to do some particular type of geometry analysis function. I’ve found very little information in academic papers to help me, and I don’t have a lot of resources from which to get feedback on my ideas.
My algorithm still does not work, I’m not sure if it ever will, but I hope so. I have times when things are going well and I am making a lot of progress, other times I hit a brick wall for days at a time and get nowhere. This week I realized a fundamental part of it was using a completely wrong approach, making the wrong assumptions, and had to rewrite that segment from scratch. Right now it’s completely broken, I guess I’ll be spending the beginning of next week fixing that.
It’s really hard to gauge how far along I am, and how far I have to go, at the moment I just know it doesn’t yet work. At times I feel extremely discouraged because I am taking so long, and of course I always worry about failure; maybe I’m just not doing it right? There are many times I thought I had all the write answers, only to find out what I came up with didn’t work at all. Then it’s back to the drawing board and rewriting code.
At least I can be thankful I’m allowed to do pretty much pure computing work, with no deadline. I don’t have to worry about cruddy Microsoft API’s, or precisely positioning widgets on a grid, or making things easy to use for stupid users. Instead I just have to make the machine do something that for us humans is dead simple but exceedingly difficult computationally.
I’m still optimistic that I will be able to solve this problem, and I’m not at a dead-end or out of ideas just yet, so on I go. I hope I will be successful.