Wednesday, February 29, 2012

Probably won't get this job

So, yeah, I'm been working a job on a temporary basis, with the understanding that I might eventually be taken on as full time...  I wrote about this a few days ago.  Somehow, today, I really felt like I won't get get hired on. Can't say why, just a really bad feeling that I'm not needed.  The group used to have many more people in it then there are now.  The others are on temporary assignment to other divisions, and they are all experts in lots of different stuff.  I'm an expert in nothing.  I pick things up, but no expertise....  Anyway, by April (at some point) they will make their decision, and let me know.

Monday, February 27, 2012

Evolution

Forget, for the moment, the technical issues surrounding the following exercise.  I suppose, it can be run using a shell script, perhaps, but anyway...  Let's run some computational experiments on evolution.  Consider the following.  You wish to write a series of programs that do the following things to test evolutionary processes:


  • Load it's own source code into memory.
  • Search on the Internet (or through a large database) to find ways to make the program faster.
  • Copy the new lines of code into the source code, and write it into a different file.
  • Compile the new source code.
  • Run the new code.
If the new code doesn't compile, then that "species" dies out.  If it does compile and run, then the new code starts repeating the cycle above again, finding new code to implement into it's source and recompiling it's new children.

Essentially, you will create a series of programs that try to reprogram themselves.  You will, in a way, create a new "ecology" populated by running computer programs.... (you could even go so far as to say that the "programming language" is the haploid part of the the life cycle and the running program is the diploid part)

You can measure how quickly a certain lineage evolves over time, how quickly it can reproduce itself, how complex (over time) the program can become.  And you could even try other variations, by adding limited resources to be shared within a community, or other needs that must be performed prior to reproduction.  

Supposed you introduced sex.  One running program encounters another running program and loads their source code as well as its own.  You could either pick out the best parts of both and load that into the next generation, or (supposedly like modern biology does it) at random, with half from the "mother" and half from the "father".

What about cannibalism?  Can a machine write code that not only makes itself more efficient, but also delete source code from other competing programs?  Initially, I would have said"no", there wouldn't be any evolutionary advantage, but what if there were something outside of the program that might cause it to compete.... an "environment" if you will....  

I'll bet someone has already done this.... I'm too lazy to search for it, though...

Enhanced by Zemanta

Friday, February 24, 2012

New Job

I haven't posted in a long time.  I don't know why, maybe there isn't much to say.  I started a new job this month, which is exciting.  I'm working as a "consultant" but with the hope of becoming a full-time employee at the new company.  The manager says "If you work hard, we could offer you a full-time job."  I'm taking him at his word.

But, to be honest, everyone there seems very friendly, including the manager.  My cubicle overlooks a river, and I'm right underneath the approach/take off pattern for the airport, so there are always interesting things to look at.  And, of course, it's not just me staring out the window, either.  There are interesting projects to work on, and I'm learning new things all the time.  For instance, I took a course in Java 8 years ago and never used it once since.  Now, I am developing Java code, so it's nice to "re"learn new things.  And, the group I'm working in is using Agile software development, so they are training me to us their method, which is nice.  Plus, everyone in the group has a PhD, and in similar fields to what I studied, so that's cool, too.

I do what I'm asked to do, quickly, which I hope is making a good impression.  But, I also sometimes screw around.  I do, sometimes, check out some blogs that I've been following (not much, but a bit) on the work computer online.  There are some sites that are blocked, such as Facebook, but that's ok.  And, I'm not surfing porn or anything.  A lot of the blogs I follow are science-y blogs anyway, so...

One person, the next cubicle over, seems to be streaming videos on his computer.  He's in a different division from me, under the same VP.  I noticed it a few times while I was going to get hot water for tea.  I thought it was funny, but paid no attention to it, except when I get up... He got fired today, for that.  Yeah, that sucks.  I mean, I can understand why since he did seem to be always streaming things.  And you have to work while you're... you know... "working."  But, still.  Did he get a warning?  He was a "temp" like I am, so maybe they just let him go rather then discipline him.  I hope I didn't screw up my chances by surfing too much.  I really like my job....