Browsed by
Month: October 2010

Bees can solve the traveling salesman problem

Bees can solve the traveling salesman problem

Researchers at Queen Mary, University of London and Royal Holloway have discovered that bees learn to fly the shortest possible route between flowers even if they discover the flowers in a different order. This ‘Travelling Salesman Problem’ often takes supercomputers days to solve, but Bees are now the first animals proven to do it. Computer-controlled artificial flowers were used to track the bee’s path and found they quickly learned the shortest route. Since a bee’s brain is only the size of a pinhead, researchers are hoping to identify the neural circuitry required and use that understanding to construct their own systems that rival the computational power of existing machines

Fascinating. A humbling reminder that despite the fact we consider computers near godlike in their abilities – there are solutions even the brightest minds can’t duplicate with a Turning-based machine. Or even reproduce at all.

Has often made me wonder if some day we’ll have a quantum or other non-Turing ‘co-processor’ with our current machines that is based on an architecture more suited to solving these types of difficult problems.

Earth shattering…

Earth shattering…

While it might not look like much, this software program called the Eureka machine uses standard video input, examines the behavior of a system, and with no previous knowledge of a system’s physics, kinetics, etc – it generates equations that accurately describe what is going on.

The program, from simple video input and a little massaging, it was able to generate the Hamiltonian equation for the difficult double-pendulum problem in about 30 minutes.  And a Lagrangian Equation that describes a double harmonic oscillator in another case – all in very short periods of time:

While this is very cool and to some degree just an expansion of what we have been able to do with neural net programming that ‘learns’ by trying out techniques and checking their results against reality – the ability for the program to generate equations takes this all a step further.To give an example of what this brings about – they recently applied the algorithm to some complex data collected in cell interaction.  While the scientists had struggled to make any meaning of the patterns, the program was able to come up with a formula that accurately described how these cells worked.  But this presented a new problem.  While the equation seemed to match exactly what was going on, the scientists who fed the data couldn’t figure out what physical components the variables the equation related too. They made the decision NOT to publish the equation in any papers with the accurate modeling equation because they didn’t actually understand how the equation modeled the system. While not unsurprising from an program that simply generates an equation from data; its the first time that these computers might actually be out-matching us for models of systems.  However, since they are unfettered by making the actual variables equate to real-world  phenomenon – they are free to generate equations who’s variables aren’t necessarily based on the underlying physical phenomenon.  THIS is the interesting part.It seems (rightly) that just modeling the situation isn’t sufficient to say you understanding it.  Does understanding of a phenomenon require the understanding of the underlying principles?  Should it? Sure, you might be able to come up with an equation that models what’s going on for the cases you have, but without understanding the principles behind it, you’re just putting your faith in the equations generated.  But is this what we do today?

I was taught since 6th grade science class that every scientific principle was only one repeatable converse case away from being refuted at any time.  History is full of such events – including the most deeply held ones such as Newton’s laws of motion. Depending on the size scale of use, they either work very well, or in the quantum/astrophysical realms – fall apart completely.  Those rules have been getting ‘touch-ups’ for years.  While Newton certainly isn’t categorically wrong – it’s clear we didn’t (and still don’t) have all the corners fleshed out.

So we find the crux of the matter -why shouldn’t the equations generated by this program be any more deserving of our trust than Newton’s?  I’d say the key lies in several ways: mostly in the requirement for rigorous review, numerous experimentally repeatable verifications, and apparently that the equation needs to be explainable with principles and terms that we DO understand.  The first part is very understandable.  No scientific statement worth it’s salt should be accepted without lots of peer review, repetition of the experiment by others in different conditions, public discussion, and confirmation via different methods.  This program required user intervention to get a balance between absolute accuracy and ‘simplicity’.  Which means it had to go through numerous iterations and a little bit of pre-known knowledge to get it to generate equations that corresponded to principles we understand. This implies it could generate different equations for the same phenomenon.  More on this later…

But the second reason, and the one the jury appears to be out on, appears that one needs to be able to explain WHY the equation works, or at least be based on terms we do understand.  In other words, just pulling the ‘answer’ out of the back of the book isn’t real understanding.  The right answer doesn’t seem to be sufficient by itself for science to classify as real knowledge.  For science, we also apparently need to be able to explain why it’s right too.  Only then can we actually say we have a decent understanding of something.

The unanswered question is if that requirement of being built on understood principles needlessly inhibits us.  What if we just ‘went with the flow’ and let machines like this generate those horribly difficult equations for us?  What would that look like/imply?  The equations that the software could generated didn’t always correspond to previously known/modeled phenomenon – and needed to be ‘guided’ by the user to answers in the form they wanted.  But this implies the computer in other circumstances might be revealing a different *kind* of thinking that we could backtrace?  What if those equations are just like another ‘culture’ or ‘language’ that sees the same reality in a different, but no less valid, way that we could explore and understand? I think that could be an interesting discussion for another entry.

This instance reminds us that there are very important philosophical principles behind what is considered scientifically known and not.  Principles that have real and interesting effects; and depending on when/where you lived, there were/are very different requirements for what is considered knowledge.

In case you’re interested, philosophically, this question of what is knowing is called Epistomology – and might be worth a look.  (Is my philosophy undergrad work showing?)

Really? We’re still worried about path variables, and that they have a maximum length?

Really? We’re still worried about path variables, and that they have a maximum length?

I mean, come on already.  I have 8 gigabytes of memory in my machine; and 3 terabytes of storage.  Yet, I just spent 30 minutes getting hosed by an (admittedly poorly written/buggy) installer because I’d exceeded my DOS path length in Windows 7.  Yes, here’s the official solution to an error if you install the Intel Compiler and get this message:

Unable to install the integration into Visual Studio. Failure in “<blahblah>integrate.bat” “<blahblah>Microsoft Visual Studio 9.0Common 7Tools”

If you see it, do this:

Because some others seen the same problem, I’m posting the solution and the rootcause here.

The rootcause: our installation adds the “bin” directories to the “path” environment variable. so after installed many compiler updates, the “path” exceeded the max and the “C:Windowssystem32;C:Windows;” dirs got pushed out; and potentially off the end of the path.

The solution:
1. uninstall the last compiler update that has reported the error
2. clean-up the “path” to remove all the bin directories added by Intel Compiler installation.
As for how to clean up, goto the property dialog of “my computer”.
make sure the system directories are there.
3. install the compiler update again: it will add the bin dir again. this is so you can run your program without adding the bin dir.

The installation of newer compiler does check the length of “path” if I remember correctly. But I need to verify this.

But I mean – why am I still losing productivity with this kind of bug?  Haven’t we the technology to make a path variable as long as we want now?  Ring, ring!  Hello?  1984 called and wants its operating system back.

How to get beyond the start of your career

How to get beyond the start of your career

I found this article (20 Reasons Why Musicians Get Stuck at the Local or Regional Level) to be an interesting analysis of band careers in the music industry.  But I also find that some of the advice is very good for any career.

1. Poorly-defined goals – It’s a good idea to sit down and state where you want to be in 5 years about every 6 months or so.  It doesn’t have to be earth-shattering (or it could!); but if you aren’t headed towards something – then you’re being driven by whatever current is coming your way.  Often those currents lead to stagnation, growing irrelevance – then unemployment with a huge hill of getting back on track to climb while you’re unemployed.  You should regularly be preparing yourself for the next trends/market needs and you do that in the job you have today.  Just sitting around waiting for something to happen is a recipe for nothing to happen.

2. Band members with different goals – If you’re married, it’s a *really* good idea to talk out your life and career goals with each other.  This could be touchy, but if you’re not both on the same page/understand each other – then they can’t help you and vice versa.  It’s also good to talk about where career begins/ends and the relationship takes precedence.  If you’re on very different pages (i.e. my career is my life and you’re along for the ride); then you’re likely headed for a world of pain.  Hopefully you did this before getting married – right?

3. Lack of musical focus – I started work as a generalist and thought that as long as I’m good at a number of programming technologies/languages then I’ll do well.  While somewhat true, I found the opposite is more true in reality.  People make far more money, want to be hired by more people, and are generally make a much larger impact when they have specialized in a particular technology.  Unfortunately, if you’re a generalist, you can be replaced by just about anyone.  Even if you are a great performer – there is less to recommend you when the ax must fall.  Now don’t confuse this with being inflexible – this is not that.  Instead, this means becoming an expert at a particular focus while the iron is hot; and constantly learning new things to position yourself for those hot-spots.  But get crazy good at them – if you’re just so-so, there’s a lot of other folks in that boat too.  Experts are hard to find and command great salaries and working conditions.  If you’re regularly paying attention to new hot-spots and re-adjusting your path to follow trends – then you won’t have to worry much about stagnating in a technology that’s going away.  In short, being “A jack of all trades and master of none” will get you nowhere but the bottom-feeding of your profession.

4. Ineffective artist management, or not listening to good management – strive to find people that have succeeded in your field; or managers that are known for growing their employees.  Then listen to them.  Try to model these people’s attitudes and work ethic and you’ll also do well.

5.  Poor networking skills -Are you regularly reaching out to people in your industry?  Even occasionally?  Having lunches with people from different departments or companies?  Making friends around your industry?  Going to conferences related to your field?  You don’t have to be a schmoozer or used car salesman, but you should regularly be growing your contacts or keeping up with the new things your friends/acquaintances are working on.  This is a great way to become more effective in your current job – or have links to another job if yours fails.  You can’t wait till your unemployed to do this – by then it’s too late.  You get to meet and befriend far more people while employed than when unemployed.  Trying to build a network from scratch while unemployed is a huge disadvantage – because they sort of know you’re talking to them to land a job. If you have work; then it’s all about the tech/person/connection.

6. Working with people who don’t have contacts in the industry at the next level – if you’re topped out where you’re at or with the people you work with – you are going to remain where you are.  If you want to do certain things with your career, you need to align yourself with those folks that are the gateways to those paths.  This is just good career management.  Early on, I joined groups that had many senior people that I could learn from and grow by watching – this helped me tremendously.  I got access to working on parts of major projects.  Being the biggest fish in the pond is not really a good place to be long-term; because others will come along and unseat you while you’re getting stagnant.

7. Signing with a label with inadequate funding or poor distribution – don’t join companies that are underfunded, are forcing extra hours, or have folks going without pay.  The dot-com days are OVER.  Almost nobody makes millions overnight anymore.  Yes, it can be done – but the techniques of starting a startup have changed dramatically.  They should have a working demo and customers lined up before they even secure funding and start.  If they are in money problems – the are signs that they are in real trouble. Probably 10-20% of companies in this situation will actually turn it around – most will not.  I know of one guy that’s been at 80% salary and 6 day a week situation for 2 years now; and no end in sight.  You want a company that will grow you; not one that will suck your will to live and leave you a husk with nothing left to give to a new job when they go belly-up or you quit.

8. Lack of a live following – Have you been recognized by those in your field for some contribution?  Awards and recommendations are important things to collect.  Don’t be an attention/award whore – you’ll come off like a used car salesman and everyone will see through it.  But honest awards for excellent deliveries are very important.  Yeah, you’ll need to put in 20-50% more effort; but you should be getting 1-2 of these every couple of years.  If you’re not – then you won’t have as good of resume as the next guy.

9. Dated musical style – You are keeping up with the trends in your field right?  Reading magazines, reading websites/forums on your field, etc.  If you’re a coder, you learn new languages every now and again in your spare time – or code things up in your free time as well.  Keeping up with the trends is how you stay relevant and employable.  In almost no field can you just sit around and expect to stay employed with a skill set you last developed 10 or even 5 years ago.  I make a habit of regularly looking at the jobs pages for companies in my field.  What technologies/skill sets are they looking for?  Does my resume have those?  If not, how do I get the skills those people need?  This helps you do #1 and #3 better – by spotting trends and figuring out which ones you like/want to go for.

10. Bowing to peer or family pressure not to change – Not as relevant for careers; but is a good point.   You should be growing in your field – which means change.  Don’t think that you’re ever ‘done’ at some point and can just relax and do nothing from here on out. That works for 6mo to 2 years in software, then you’re in real trouble that takes 2x the effort to get out of.  And while you’re trying to regain relevance, you’ll be at the top of the chopping list if the economy goes south.

11. Drug or alcohol issues – yep – same is bad for your career too.  It’s hard enough to keep employeed without an extra monkey on your back.  I got my first internship as a sophomore in college (this was pretty unheard of usually) because their first pick failed a drug test.  This started my career a year earlier than everyone else and I thank that guy to this day.

12.  Spouse / child obligations – you need to get it clear in your head what comes first for you – family, spouse, or career.  You WILL have to choose – and you should be upfront an honest not only with yourself – but with those in your life too.

13. Impossible to work with – This applies to both mean and nice people.  Obviously, if you’re the type of person that doesn’t mind stomping on others to get to your goals – you’re likely a person that others find hard to work with.  This is not good for a long-term career path.  Like it or not, it’s NOT just about the results.  Long-term career success is EQUALLY about helping and growing those around you.  If you’re in the habit of irking off, destroying, alienating, back-stabing, bad-mouthing, or injuring in any way the folks that helped you get to your goal, coworkers, boss, or even those that stood in your way – attitudes towards you will shift and people will not want to work with you.  In fact, folks will start subtly putting roadblocks in your path.  If you’re the kind of person that desires everyone to be successful, gives good feedback, shares success, then others will enjoy working with you and you’ll attract success.
Being impossible to work can also apply to nice people too.  If you bend over backwards so much you don’t get your own work done,  having a personal/philosophical/religious/gender, race, ecological, or other bias or agenda that is an absolute/used to beat others with, if you can’t make decisions on your own and take responsibility for them, if you demand that things be your way in order to proceed and gripe, sabotage, and stonewall if it doesn’t go your way, or a host of other ‘in-flexibilities’.  While this doesn’t mean you don’t have principles; it should mean you can negotiate with tact, style, and genuine listening and consideration for the facts.  Intel has a value called “Disagree and commit” – you state why you disagree with the direction, but you publicly commit yourself to proceeding with the majority wish without backstabbing or sabotaging.  In extreme cases if you can’t compromise your principles (such as a moral/ethical problems), you should be able to state yourself clearly, calmly, and directly to the situation and say why you can’t agree – accepting you may need to leave such an organization.
Another trap is if you’re constantly switching jobs every 6 months or you don’t stick around until projects are completed – this also starts counting against you.  Employers know it takes an investment of time and money to train someone – they expect that investment in you to pay off for them.  If they see you have a history of not sticking around – they will be unlikely to make that investment to hire you.  We’ve all had terrible jobs, but you need to at least produce some positive output from the position before you leave.  If you leave in a huff and don’t accomplish anything in the position – you’ll risk come off sounding like you might be a prima-donna when you interview for the next job.

14.  Not understanding how the industry works – You have to know how the game is played in order to move the right pieces.  This is also true of knowing how a company works.  Learn what a successful employee looks like to the company you’re working for/want to work for, when are the right times to move and not burn bridges, what the promotion criteria is, etc.  This is not being a brown-noser or sell-out – they are essential skills if you want to remain employed at a company.  It’s no different than a relationship with a significant other – you both have expectations – it’s good to make sure they match up for both you and them.  Go a step further and also learn how to spot the bad: learn to spot the little signs that projects are about to get canceled, spot ahead of time that people are about to be laid off, what happens when groups get re-orged, etc so you are out of the way if the train is about to crash.  There are almost always signs – having a good network of older workers at your company helps you spot the signs.