Archive for the ‘ Links ’ Category

Floating Point Guide

I came across a great article about the pit falls of using floating point numbers in programming. All to often software bugs come up because developers expect something like 0.1+0.2==0.3. The article goes into very clear detail as to why it is not the case that we can expect exact equality while using float point representations.

No NoSQL

I’ve recently seen major websites start to move their database back-ends from MySQL to a NoSQL solution. NoSQL for those that have not yet heard of it is way to story data in a loose manner without a rigid scheme defined in a non relational way. The claim is that it these newer technologies can scale better than other relational based methods.

Which is fine and dandy for certain projects and if it works it works. However, a recent article underscores a feeling I have had with this trend. What is wrong with MySQL? The recent move to NoSQL would make one wonder how did we ever manage to store this information in the past? I’d have to guess that over 99% of all projects are not large enough to every be concerned with scale issues. By scale issues I mean trying to store Google’s search information. MySQL or some other relational database back-end is being used by nearly every large cooperation in the world to store and manage tons of information.

Relational storage based solutions are still perfectly fine for nearly every project and they are often much easy to use. Be sure to think carefully before trying to decide which direction to head down.

Future of AI

AI has always intrigued me. The idea of recreating human or at least intelligent behavior with software is an amazing idea. Unfortunately modern AI is nothing like the dream of creating human behavior. Sure the current solutions can solve some pretty cool problems, but its not the types of problems that people think of when they dream of AI. At h+ Magazine an article was posted discussing what the experts of the AI field predict to happen over the next century. Most seem to think we are a long way off from even being able to pass a 3rd grade exam and possibly 100 years off from making smarter than human AI.

The thing about most AI style problems is that we can solve them in a much easier ways without AI. Passing a 3rd grade exam could be done with advances in natural language processing and some clever Internet searching. It turns out to be very difficult to find ways to test AI. Even the famous Turing Test may not be as satisfactory as one might think. Its hard for a human to tell even if they are talking to another human even if they are, in fact, talking to another human.

The reason why it is so hard to identify another human during the Turing Test is because we don’t know what we expect from another human. It comes down to the fact that we have no idea what makes us human. Its nearly impossible to describe a humans intelligence and identify the intelligent parts. So it would be very difficult to quantify how an AI system is better than a human, let alone equal.

I think before we are able to make any true AI system we first need to figure out how the human mind works. Which is turning out to be much easier said than done. Every time we figure something out about the brain, it creates at least ten more questions about the brain. To put this problem in some sort of perspective: We had a theory of computation decades before the first computer hardware and we had predictive models of space centuries before we had the ability to test them. However we have the hardware to run our AI systems on, but no theory as to how to do it. So I think we are at least half a century away from having anything near what we dream AI to become.

MySQL and Java common problem

Have you ever received the following error while using Java and MySQL:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘????????????????’ at line 1

This is a common error when you first set up Java and MySQL to work together. To correct it simply add the following lines of code to your my.cnf in the section [mysqld]

collation_server=utf8_general_ci
character_set_server=utf8

Dual booting Linux and Windows with linux already installed

I have always been told in order to dual boot Linux and Windows you must first install Windows then Linux. The idea being that Window’s boot loader does not play nicely with Linux like Grub or Lilo does. However it is often easier to install Linux then Windows; like with the up coming Windows 7 release, Linux users may want to try out Windows 7 without having to reinstall their Linux installs. I cam across a great tutorial on how to do just this.

Twitter can be neat

If  you are like me you don’t exactly see the usefulness of the social networking site Twitter. After reading a recent wired article I can not better see that usefulness. There appears to be some pretty clever people connecting common house hold devices to Twitter.

This really isn’t all that new of a concept however. People have been connecting bots to IRC for control for a very long time now. I would suspect similar devices have been plugged into IRC. I wonder about the secuirty behind putting so much control of your house onto the net. Losing control of your own account could give an attacker control of say your air conditioning and drop your house to 60 degrees. Causing your electric bill to ski rocket.

Great C Tutorial

Dr. Dave Marshall at Cardiff School of Computer Science has written a great C tutorial. This tutorial is mostly aimed at UNIX C developers and covers the basics of C programming to advanced multi-threaded application development. This is the tutorial that I used to learn C and I still open it up whenever I need to look up something new or need a quick refresher on something. Unfortunately it appears that Google keeps burying the link so I thought it would be helpful to others that are looking for in my opinion the best C tutorial available online.