My Pages

Sunday, November 21, 2010

Where is FOSS now?

According to Mozilla 86% of it's revenue comes from Google. This made me wonder what would happen to Mozilla if Google decided to revoke funding and focus on developing Chrome more. Many people are already starting to switch to Chrome which, at some point, one would consider this to be a conflict of interest. Why? Well, if they put an ad for Chrome on Google homepage and the homepage of Mozilla links to Google... Well you get the idea.

Mozilla (Firefox, Thunderbird) are one of the best examples of FOSS (Free/Open Source Software). Users have never once paid for the software that they are using; however, I would like to point out that they ARE paying for it with ad sales. What are Ad Sales? If you use Facebook then you'll notice the adds on the right hand side of the page. These are paid advertisements (i.e. the company that the Ad is supporting paid Facebook to put that ad up) that are targeted towards people whom Facebook feels will purchase those products or click on the ad itself.

Of course, many people get angry about the ads and how annoying they are. Many others feel that software should be free and should not have to have ads. The problem with this thinking is that you end up with software that is either 1/2 done, full of bugs, or worse becomes vaporware. This occurs because if the developer(s) are not receiving any funding from the users of the product; then they must have a full or multiple part time jobs as their main source of income.

This is bad because the developers are usually unable to focus directly on the software itself. Even if there is a group of 2-3 people it becomes hard to make decent progress. So why am I talking about this? Because I feel like people who complain that all software should be free and there shouldn't be all of this marketing on the sites really don't understand what it takes to create and support a piece of software.

I do believe in paying for software; I believe that if I am going to own a copy of Microsoft Office or Windows then I should have a legitimate copy of it. One might ask why I would prefer to pay for the software; my comment is that I know I am keeping another developer employed as long as I purchase the software. Now I am a Unix user and I do quite a bit of development in Unix; and to this I would be more than happy to address.

In my time of developing for Unix; I have seen many changes within libc between 4,5,6 and libssl, regex.h etc... Some of the things that I've seen are when functions get deprecated or when functionality gets changed and you are forced to go back and make changes in your code, notably with #ifndef's, to get around the changes depending on where the application will reside (i.e. you need to now support 3 different versions of a function call that changed in each version). This is the life of FOSS developers.

The FOSS community is pretty soulless in their ability to make things backward compatible. Many times the people who work on the *nix kernel or some other development library don't really care that much for preserving the original functionality and usually don't care. Their facet is that you are using their library and you are at their mercy if they decide to change something. Note that this is where I see the disconnect in the FOSS community. Watching some application that someone wrote that I found really useful that the guy doesn't want to keep up anymore fail because I did an apt-get upgrade.

Sadness then ensues when a function that was linked against no longer exists etc... As such, I'm now have 2 choices; either A) I settle for some half-assed solution, or B) I fix the code from the original application. This of course is what some would reason I should do, pick up the code and fix it, this is noted but if I was not a developer then this would be much harder than anything (as I would have to learn how to program). So why would I bring this up? Because if you look at the Window system; they provide a level of backward compatibility that is completely redeculous.

Windows has a level of backward where you could run an application from Windows 3.1 on Windows 7. Why? Because the developers for Microsoft has ensured that all changes to library functions fix an error in the function but do not change the underlying functionality of the function. They also do not remove functions after they have been created. So what is the difference here? Easy, one is a fully supported application that people develop all the time and are paid for the supported and continued development of the product (Microsoft) versus an application that people are asked to donate money to (Linux Kernel).

Why did I bring up the example with Facebook/Mozilla earlier? This was to show that although people THINK that Facebook is free; someone is still paying for the product.

Sunday, November 7, 2010

New Computer & Post about new project!

So I have finally rebuilt my main rig and it is currently a beastly machine. I am of course no stranger to gaming as I have gamed for most of my life. Starting with the ever popular Commander Keen up to the Halo [123] etc... Although increasingly I find myself more infatuated with the older games than the newer ones. Which of course makes me ponder why I spend some odd chunk of change to rebuild a rig that clearly does not need to be this powerful. But then I remember, ah yes I want to code.

My machine is an Antec 900 case with a Corsair 850w power supply. The video card is an older BFG GTX275 with a 160GB Raptor and 1TB WD 7500 and Edirol MA-10D monitors. All of this was previous hardware and now on to the new stuff.


  • Intel Core-i7 950

  • 12GB DDR3 1600MHz

  • ASUS Sabretooth x58

  • Zalman 9700 (with i7 kit)

  • LG DVD Burner



So, why the DVD burner you ask? Because the newer motherboards no longer come with PATA connectors. So of course, my previously purchased DVD Burner is no longer useful and I am forced to purchase another SATA drive. So much fun, but hey $35 isn't bad for a DVD Burner now.

The machine is running quite well; everything works except of course my keyboard. The fun part about doing an upgrade (especially because of catastrophic hardware failure) is that you tend to find a piece of hardware that had some other issue which may have caused your actual failure. In this case I am convinced that my keyboard shorted out my old Fatal1ty board. Regardless, I threw that one out and settled in with my old Dynex until I remembered that I had a Cherry ML4100 lying around. I put that on and am currently typing with it until my wife gives me my card back and I can purchase a Space Saver 104 from Unicomp.

Regardless, I don't see much use in complaining; the machine is running fantastically and I cannot wait to see what this thing can do with some VM's. Right now I am more concerned about getting VS2010 up and running with XNA4.0 so that I can work on getting a new game out. Hopefully that will be my next project and this machine will last me until the end of it.

This is the topic of my discussion today. Currently I am working out the details of my game; I want to pay homage to the old school Mario/Sonic style games but I don't want to just create some basic knockoff. Instead I think I am going to instantiate some uses of static variables within classes in managed languages and do what would be "enmity" on a global scale. As your enmity increases for a specific enemy type, the more they will try to kill you in crazy ways. For example, based on your enmity, as jump to try and jump on the head of an enemy they will try to navigate faster/slower to be right next to you when you land. The faster they move, the better reaction they will have to being able to be directly next to you.

Or in some instances, being able to force you off a ledge early etc... Of course, with enmity comes a way to decrease it; each enemy type will have a foe enemy type. If you kill an enemies foe, you will decrease your enmity for that enemy of course increasing your enmity for the foe type. Of course you will be able to gain points and finish the game, however the majority of points will come from killing enemies. This means that to get any kind of decent score, you will have to increase your enmity.

What will be interesting is to have multiple endings based on the amount of enmity you have for each enemy type (i.e. if you have more enmity from turtles than mushrooms or koopas etc...). This will also give the ability for harder achievements since one could be made for finishing the game with the most/least enmity from XXX enemy group. The holy grail basically being to finish the game with 0 enmity across the board. This would mean that you would have to finish the game without killing a single enemy.

Can't wait to start working on this, should be quite interesting to see what happens!

Sunday, April 4, 2010

Why do we program vs. Why did we choose to program?

For so many years I have wondered what drives us (as programmers) to continue, to push ourselves and the programming barriers. And for many years I just kind of assumed that it was because people just needed a job and this was one that dealt with computers. But once I got out of college and into my first position in my first post collegiate job I realized that the question that was hounding most of us was why do we program?

Why do we program, it's a question that I've pondered so many times in the past few years I've been working. But as I continue it's not technically the question that I was looking for; the answer to this question is extremely simple, because there is a market for applications. I discovered this while I was working as a Security Analyst. The programmers that develop our applications continue to create and innovate based on what the market and the users want. I made this discovery right before I switched to be an Operational Intelligence Engineer which was putting me more into a development role.

At that time, it became very apparent that the actual question that I was looking for was Why did we choose to program. This is my current question that I am looking into as it deals more with the start of why we choose to program versus why we continue to program. Everyone has their own reasons of why they started programming it's a very interesting question for everyone to ponder.

One reason that people start is because of the job market, many people get into programming because of the possibilities of making lots of money (more especially within the consultation realm). But if you just wanted to make lots of money why go with programming? Why not go with a doctor or a lawyer? The answer is that we all have an interest in what computers can do.

The very thought of technology being bigger and badder than it was a year ago makes us all even more interested than we were before. I believe that deep down inside we all have a connection to discover how close to actual human intelligence we can program a computer. That I believe is the answer to the actual question of why did we choose to program, we are all interested in the creation of (in some form or fashion) A.I.