Tuesday, September 25, 2007

A Drop of Intelligence II - Making Things Simple

A while ago I wrote an article about how smart applications can improve our lives by taking care of menial and common tasks for us and allowing us to spend more time on the things we actually enjoy doing.

Since lately I have been doing some research of my own on how can we use the AI theories in making practical applications that can act as personal assistants for their users in helping them find information or in doing common repetitive tasks for them, I would like to begin a series of articles in which I am going to share my conclusions and my problems as I progress along with my research.

Today I am going to expose my perspective on why I believe that Artificial Intelligence practices have a small adoption percentage in commercial applications, so without any further due, here's my take on it.

The industry that makes the most use of Artificial Intelligence theories in its applications is the gaming industry. Games have come a long way in AI evolution and some of them use complex techniques like neural networks for machine learning, planning and and adaptive behaviors for their actors (NPCs) to provide great entertainment for the gamers, but even games still have a long way to go in this domain until the experience provided will be more realistic.

So how can the AI techniques evolve taking into consideration the current technological developments and the research invested in this field of Computer Science? I believe that if the AI research would be better promoted to and understood by the developers working on commercial applications today, the field would have a lot to gain in new advancements since if these techniques will start to be adopted in commercial applications and the practical experience will be very valuable to perfecting them. What the AI field really needs is some promotion and some good non-academic books that can be easily assimilated by the masses, and then the experience and the practice of its wide adoption would help in its advancement and growth.

In the following articles I will try to share my experiences and my problems in learning the AI techniques form my perspective. Bear in mind that I also am in the process of learning and understanding the intricacies of this field and any help, experience or ideas that you have or would like to discuss are welcomed, so keep close :).

P.S. I really had a lack of inspiration for the article title, so if you have a better suggestion, do share :).

Monday, September 17, 2007

No iPods on Linux? Why?

There's been a rumor going around that Apple implemented some kind of protection for their new iPods so they could not be used with other synchronizing software. What does this mean? It means Linux users owning an iPod won't be able to synchronize their music since there's no iTunes for Linux and the software available on Linux for this won't work anymore (unless hacked).

What puzzles me is why on hell would Apple go on and do that? Don't they want people using Linux to buy their iPods? Doesn't that bring more profit for them?

This piece of news started some passionate arguments and complaints...I am not going to complain about their decision, after all, the requirements of an iPod are on the box and you always have the choice not to buy it. Still, as a company, wouldn't you be interested to make the requirements list as low as possible? Wouldn't making your product available to more people be more profitable for you?

Some opinions state that it might not be Apple's fault and they may be constraint by the record companies in order to have more control of what's played on the iPod. Even so, I don't think that is a good excuse, why don't they release a Linux version of iTunes? Isn't the money of Linux users just as good as other customer's money?

You might say that in order to support iTunes on Linux, they will need more developers, more developers cost money and in the end the effort might not be worth it or it may rise the prices on iPods. I say that with today's technology there is no excuse for such a thing. I am sure that if they thought about it, they would find a way. Ever heard of portable software? Why not implement iTunes in Java or in Python, after all they are portable and almost ubiquitous...

As I think about this issue more and more, I really cannot find a good explanation as to why Apple would act like this. The only reason coming in my mind would be that they want to keep the ecosystem built around their iPods intact, so if you want and iPod you should buy a Mac also. Well, not everybody wants to buy a Mac or windows in order to own an iPod, this requirement is absurd. I just want to be trendy and own an iPod and not have to spend more than it's price to be able to use it.

It's not that I want to condemn them and the way they run their business, after all they have the right to choose their customers, but if I were running things at Apple, every customer would be important to me, after all more customers = more profit, it's basic business thinking.

Wednesday, August 29, 2007

A Linux Drivers Rant

I have been using both Ubuntu and Windows for about 2 years now and it's been a combination that has worked for me just fine, but now I am thinking of completely switching to Ubuntu.

Now don't get me wrong, Ubuntu is a very nice Linux distribution, it installs quickly without too much fuss and is very user friendly but it still isn't perfect. The things that bother me the most are the lack of support from most hardware vendors and, for the 64 bit version, the missing flash player and Java web start plugins. However, today I am going to rant a bit about the lack of Linux support from most hardware vendors, including even some big names in the hardware industry that do not support all their products on Linux.

As our friend Lord Vader would say: "I find their lack of hardware support on Linux disturbing", and then would breath heavily :). Indeed it is a bit disturbing to see that great hardware producers like Creative and HP have very little support for their soundboards and multi functional printers, respectively. I believe that lately Linux has been a glowing point on the OS map and it's popularity among the desktop users is ever increasing so I don't see many reasons why the hardware vendors shouldn't support Linux for their products. Sure they can invoke reasons that it is costly to develop drivers for Linux, and that is true, but probably if they would study the feasibility of investing in Linux support they would reach a conclusion that the market is now in a point where it is worth doing it.

While Ubuntu and other Linux distributions do their best to support a large variety of hardware it is impossible for them to cover everything and for all their drivers to work seamlessly, so I would prefer the support of the hardware vendors for their products.

Fortunately not everyone is blind or indifferent of what's going on on the Linux desktop market and there are some big vendors who already started supporting this operating system. Kudos to nVidia for their great support on the GeForce video adapter series and to DELL for beginning to deliver PC and Laptops with Linux distributions. Also kudos to Ubuntu for making possible the use of the restricted drivers that are available.

I do hope that everyone else will fill the vibrations resonating within the Linux Force and start delivering Linux drivers for their hardware. Meanwhile I will orient myself to those who already support it before buying anything and I would advise everyone who wants to use Linux as a desktop OS to do the same.

Until next time, take care and May the Linux Force be with you!

Tuesday, August 14, 2007

Looks like someone's been reading my entries

This June I wrote an article titled "First Things I Would do as Microsoft's CEO" in which I said that I would pretty much Open Source all of Microsoft's products as soon as I would get accommodated :). Why am I bringing this up now? Because yesterday while I was quietly looking on dzone's new links I found a link to an article with the title "Why Microsoft is Going Open Source" on the Linux Journal site, so I followed the link curious to see what was all the fuss about.

The subject of the article is about Microsoft's new site on Open Source supported by Bill Hilf and his OSLab and about the submissions of some of Microsoft's Shared Source licenses to the OSI for approval as official Open Source licenses. The article also wonders about Microsoft's real reasons for doing this and I must say that even though their initiative is commendable, I am quite skeptical about their reasons also.

As Linus Torvalds so elegantly explains it in his interview published at linux.com, Open Source is not motivated by altruist reasons, but by the constant struggle of an individual to improve his/her own standing. In doing so, and contributing their work back to the community, they manage the bring the whole community a step forward, so even though its motivation comes form selfishness, in the end it manages to help everybody else too, and that is the beauty of the whole concept.

This being said, I intend to keep an eye out to see how Microsoft's initiative will play out and if their actions will indeed be made to also help the community or they will just be a completely selfish act. I hope it all plays out for the best.

Thursday, July 19, 2007

The Best Things in Life are Open Source

It seems that after all this time since Open Source (OS) is around, there still are people with misconceptions about this model for software development. In this post, I want to try to explain what are the reasons I like the OS and mainly what is its strength.

Open Source's greatest power doesn't come form the fact that the software developed under this model comes free of charge, as some people might think. Although saving some money by using free software, might seem like a good idea, the real reason why I believe this model was invented is because it gives it's users the power of choice. By being open and allowing it's users to see the source code, open source opens a gate towards a plethora of opportunities that wouldn't otherwise be possible, if you would use commercial closed source software.

By using OS software, it doesn't mean that you don't have to pay anything, as a matter of fact the great advantage is that you can buy support not just from the software creators, but from third parties that also know the software very well. Because of this and because usually there is more than one choice when it comes to an Open Source application with a certain functionality, the support you get is usually of high quality compared to that of a commercial application. The competition in the OS world is good because it also spurs innovation, innovation which is necessary for the various Open Source service vendors in order to keep their business on top and keep their clients.

By adopting Open Source as a development model, as a company, you can sell support, training, customization and other related services around your application, building a healthy business model. Another great advantage is that you can create communities around your applications that will help you in developing and improving them.

While single vendor integrated solutions do have their advantages, I would still go to an Open Source/Free Software solution over an integrated commercial one anytime and that is because I love my freedom of choice and I love to be able to control how I build my applications over being told how to do it and depend on a vendor to support my needs. In the end it all is a matter of choice, so what path would you take?

Wednesday, June 27, 2007

It's about the people

Lately I have been reading some blog posts about how people are a big influence in the success rate of a software project and I thought I should throw my 2 cents on the matter.

Damn right that people are a big influence on software projects, as a matter of fact they are the most important variable that should be considered when putting together a team for a project and it seems that many times this is not well enough thought of.

So, how do you get the right people for the right job in software development? I am no recruiter, nor do I have experience in interviewing and hiring people, but I do have an interest in working with a certain kind of people in order to do my job right and in order to reach the goals of a project. That is why I am just going to describe the kind of people I like to work with, by listing a set of qualities they should meet.

Most important quality a software developer should have is passion about his/her work. I think it's needles to say that if you don't like what you do, then you should seek to build a career in something else that might better suit you and in which you can work with passion and pleasure.

Another must for a software developer is enthusiasm and the will to learn and improve. In a domain like this if you have no desire to learn new things all the time and you feel contempt with your current level, you're a dead man.

Intelligence is also a very important quality for a software developer. Without it there's no place for innovation and creativity. Without innovation and creativity, there's only mediocrity.

Besides the qualities the developers should have, there are also some negative traits I wouldn't appreciate at all in a team mate. First of them is vanity or excessive pride. Nobody likes a jackass that brags about himself all day long and considers everybody else below him and there's nothing worse than having such people in a team, regardless how good they are.

Another breed of people I don't like having near are the ass kissers. These people will go to any length to please their bosses in order to be promoted or to get a raise that they can even jeopardize a team's unity by taking care of their interests before the interests of the team. Also, if you are in a lead position and you are surrounded by this kind of people, you will have a distorted vision of the reality because their interest would be to please you and they will tell you what you like to hear instead of the truth.

As a conclusion, the kind of people I like to work with should be smart, passionate, enthusiastic, without fake modesty and honest. My mother used to tell me "surround yourself with friends that can teach you good things". I think that is the best kind of advice a parent could give and I seek to follow it as much as possible. Now that we have a simple profile of a developer, another problem is to attract them and keep them together, but that is a good subject for another post...

Thursday, June 07, 2007

First Things I Would do as Microsoft's CEO

If you haven't figured this out from the title yet, this one is going to be a rant about Microsoft again :). I know the internet's full of them and it's quite an worn out subject to rant about them but I decided to do this one more time, then I am not going to even bother about them anymore...at least until they do something incredibly stupid or outrageous, so I can pick on them again :)).

So, without any further due, let's delve directly into the subject of this article, namely what I would do if by any chance I would become Microsoft's CEO, even for a day.
  1. I would immediately open source all Windows versions, providing a nice subscription system on which all types of users could enter if they wish and which would guarantee them technical support for their Windows system according to their type of subscription (e.g. home edition subscription would be cheaper and would address the common users, enterprise edition subscription would be expensive and would address the enterprises). This move would certainly close the mouths of many free software advocates, including myself. Now we would have the choice to change Windows if we don't like it or shut up and pay for support :).
  2. .NET would also be completely open, well maybe except Visual Studio, which will have a commercial version.
  3. I would change the policy on supporting the Mono project and I would invest some time and money to develop it and make sure it integrates and is compatible with the .NET platform. This would make my development environment ubiquitous.
  4. I would renounce on using DRM on the media distributed on the Zune and I would open Microsoft's multimedia codecs to make them easily accessible to whoever wants to use them, even on Linux.
  5. I would try to make all my software portable so it can be used on all major operating systems.
In short, I would try to have an open perspective on things, it would probably suit me better to collaborate with the industry and help those that need my help, thus better consolidating my position on the market by being present everywhere and seizing more opportunities.

What do you think? Could such attitude work for them or is it a recipe for disaster? I would be very curious on your opinions.

Wednesday, May 16, 2007

A Drop of Intelligence

Google has became the most used search engine on the web and has made its owners proud and filthy rich and all this with good reasons. Lately I have been checking out a new feature of Google: if you have an account with them, you can sign in and then do your searches and the search history is kept. Now I haven't got that far using it and I don't know the exact reasons for which they implemented it but it reminded me about my earlier studies of search engines, web crawlers and agents where I found an interesting concept: doing customized searches. Now just imagine that you are a botanist, you log on to Google, do a search query for, let's say "cell", and the results you receive are just what you expected, no more useless links to irrelevant information like prison cells or sheet cells or even human or animal cells...just info about good ol' vegetable cells. That would be nice, wouldn't it? I think it would be great to be able to do that and I also believe it is doable. Just by asking for more details about the user doing the search, his/her background, profession, interests, hobbies and other personal info and then ranking the results against this information, more relevant results can be produced.
This is just a simple example using simple facts and reasoning, the applications you write don't even have to be that smart, you just need to classify information thoroughly. Also with the developments for the new semantic web that are currently happening at W3C, we will begin to see a web that will be more and more close to our human reasoning than the experiences we have today. I just hope that the semantic web will catch on, if not I am sure there will be plenty of ideas and developments to make our computer experiences more "humane".
What I have told you until now is practically just scratching the surface. Just imagine the plethora of intelligent applications and agents that could at least take care of menial tasks like paying the bills for you on time so you never will be late on payments again, investing in the stock market for you, betting sports for you or participating in the lottery for you every week. We should be able to use technology to make our life easier, take care of our menial tasks so we have more free time to enjoy ourselves and I believe that the near future will make this a reality.

Tuesday, April 17, 2007

Portability Matters

Well hello to all my loyal readers (which are probably 2 or 3 of my friends :)). It is time to put some more content in here because I haven't been blogging for a while now. I was out on a nice vacation in the Tahiti island...yeah right...I wish. The simple truth is I've been too lazy to write anything, but now I'm back and I would like to share some of my ideas and visions on the future of information technology.
I would like to start with a few ideas on software portability which has long been a subject of debate between various sides involved in developing various software platforms. For example a few years before, when I was a young pup in the world of programming I used to debate with my friends about the strengths and weaknesses of Java and .NET. Back then the cool thing about Java was its portability. My friends used to say so what if you can't run the .NET framework on Linux, you don't need your enterprise applications to be portable anyway because they are ran on a single server (or a cluster) which can support whatever platform you choose to develop on. Well that was kind of true in the case of enterprise applications but nowadays things are starting to change, mobility becomes more and more important and in order to be mobile with your applications the development platform you are working on needs to be portable and be able to run on a plethora of devices not only on servers. I believe that with the upward trend of the mobile applications market the need for portability will also grow and the big players in the industry have already started to work on it.
Also lately, Linux has become a viable solution for desktops and it will continue to improve and become a good alternative to the Microsoft dominance. Again, portability will come in as a key feature of a development platform together with openness. Sun has already made a big step by open sourcing their Java platform and I believe that Microsoft still fails to see the true potential of being open and ubiquitous. Instead of trying to impose their own proprietary solutions I believe they should start opening things and try to be present with their development solutions on multiple platforms. They would certainly have more to gain, than by staying closed and encountering more and more resistance from the market in adopting their expensive "good for all" solutions. The real power of being open stands in the communities forming behind the technologies, the plethora of components developed, the documentation and the expertise. There is more to gain from communities of enthusiasts than they ever could gain from their big but limited number of employees. Besides, ubiquity in the IT world is power, and it is easier to achieve it by letting things develop on their own with just some guidance, than it is by imposing some solutions as the right way to do things. After all, the whole history of humanity is full of examples of resistance to imposed systems...

Playing for Change