Wednesday, March 03, 2010

Performance in the Corporate Environment

It's tragic. For the better part of the last decade I've been working IT in a corporate environment. I could go on and on about the how it's slowly corrupting my soul, but I want to focus on one particular aspect today: performance.


My corporate overlords have a marvelous app, that among other things, generates reports. There is a particular trio of reports that are inter-related, hence they are executed together. Each of them take about eight hours to run against production data. To make matters worse, all three reports are executed serially. A typical execution lasts 24 hours. That is, of course, assuming nothing goes wrong in that time. 


I was charged with the task of creating a fourth report, and turn this package into a quartet. Assuming similar execution time, we would be looking at 32 hours of continuous execution. That's of course assuming there wouldn't be further performance degradation, or nothing would go wrong in a day and a half of continuous execution. In the face of this task I did what any naive, non-unemployment-fearing engineer would do: I dug down into the existent source to figure out what the crap was going on.


I quickly found that it wasn't the most beautiful code in the world. For some reason there are some who think it's a good idea to run the same query 20K times, providing different parameters. Apparently It was also a good idea to copy/paste code, make redundant back-end calls, and have no inline comments what so ever. Holding back the urges to insult anyone, I got to work. After a couple of days I got the following done:
  • Complete re-architecture of report framework.
  • Created common ground for reports, that allowed easy extensibility for existing reports as well as creating future reports.
  • Optimized database queries which resulted in an order of magnitude faster execution.
  • Made report execution parallel.
  • Overall resources utilization is dramatically lower.
In the end, the quartet or reports which originally would have spent 32 hours in execution, now provide the same data output, in less than two hours! I'm feeling pretty good about myself, and assumed my corporate overlords would be happy with the result... They could care less. On the contrary, they were unhappy because of some trivial technicalities.

This long winded, self serving, dramatic tragedy of a story serves a purpose: to exemplify something I see happening, not only in the corporation I work in, but all over the industry: complete disregard for efficacy, efficiency and scalability. If more hardware, people, or money can solve the problem in the present, we need not fret about the future. We need to put out today's fire. Tomorrow's fire can wait.

Yes, it's boatloads of fun to whine about the problem, or to accuse my overlords of being ignorant, but let's spend some time trying to solve the problem. What is the problem here after all? There is no incentive to write applications make reasonable usage of their resources.
  • Product directors don't participate in architectural and development tasks.
  • Architects and developers don't participate in implementation and maintenance tasks.
  • Implementation and maintenance engineers don't perform system administration.
  • System administrators don't know or don't care about the in house software they are running. 
  • Hardware is budgeted at purchase time. Once bought, it's treated as a common resource for common consumption. No metrics are recorded on performance.
This hot potato game leads to an endemic problem: hardware resources are treated as common wealth in a large corporation. Everyone depends on them, but no one party cares about the system as a whole, because it doesn't affect anyone directly. As long as you do your part, and pass the hot potato along, your next paycheck is safe. Economists like to call this phenomenon "The Tragedy of the Commons":
The tragedy of the commons refers to [...] a situation in which multiple individuals, acting independently, and solely and rationally consulting their own self-interest, will ultimately deplete a shared limited resource even when it is clear that it is not in anyone's long-term interest for this to happen.
 How do we solve this problem? Forgive my use of buzz words, but I believe the answer lies in private compute clouds. Have the system administrators provide an internal service similar to Amazon EC2 or Rackspace Cloud. Their customers would be all the other people filling the roles I mentioned previously.
  • Move all of the infrastructure to virtual environments. 
  • Have teams allocate virtual environments for everything from development, to testing, to UAT to actual production. 
  • Just like Amazon or Rackspace, teams will have options as to the size and processing power of virtual environments.
  • Tie the costs of requested resources directly to budgets, cost centers, bonuses, etc.
The more resources you need, the more you have to pay (in one form or another). This gives decision makers a direct incentive to build and tweak applications perform as best as possible with their given resources. Assuming you have an open market, or a scenario that closely imitates it, individual incentive is the best way to achieve a goal. Adam Smith had figured this out back in the 18th century. No idea why this principle is ignored in the corporate environment, or simply applied exclusively for the elite echelon of executives. 

Startups and small companies have already figured this out, simply because they don't have money to burn on unnecessary resources. Their individual employees are much "closer" to the market place, and therefore are much more worried about sustainability and scalability. Corporations can't and wont figure it out, simply because it hides with the rest of characteristic bloat. Their employees are several layers hidden from the market place, and often ignore it completely. This approach can lead to leaner apps, even within the corporate context.

Private clouds are still being met with skepticism in many corporations. I wont list their advantages over traditional deployments. A quick Google search will provide much better info than what I can personally compile. Most results will point to the technological advantages or cost cutting techniques that can be implemented. Yet changes in social and political approaches to application development are, at least to me, far more fascinating.

Thursday, February 25, 2010

The Hidden Value in Buzz (for Google)



I have been using Buzz for a couple of days now. Hard to stress how delighted I am that the service came out. I hardly log in to twitter anymore, and that is definitely an accomplishment. I had previously discussed my crush on buzz here.


After using it a bit more I came to realize some of the effects that Buzz has had on me. I'm sure will have on other people as well.


Google makes great efforts in making their apps and data open to their users. It might not be as open as some people may want it to be, but go ask Microsoft to do something similar if you aren't satisfied. This makes it easy to use Google services without actually logging into Google web pages themselves. Yet it poses a problem for Google: users are outside clicking distance of adsense. For a while now, I have been using several of their services under this model:
  • Picasa pictures straight from the Picasa desktop app.
  • Gmail on Thunderbird.
  • Calendar with browser plugins.
  • Google Notebook and Bookmarks with browser plugins as well as QSB.
  • Google Contacts on Address Book, Thunderbird.
Could name more, but you get the idea. One of the coolest things about Buzz is it's integration into other Google services. I haven't opened Thunderbird once since Buzz came out. Have been religiously logging into Gmail daily. I am even "brushing the dust off" (so to speak) my old blogger account which I haven't touched in 3 years (which I used to write this).

Not only is Buzz awesome, it makes other Google services, in their native setting relevant again. Google isn't trying to force you to log into gmail, it's giving you an incentive to do so while leaving the option open to do otherwise if you so choose.


I understand there is a public API that could change the game. Given a native app, I will probably prefer it most, if not all, the time. The question is how well these apps will be able to integrate to Google and other third party services to create content. Until those apps roll around, we wont know. Yet I tend to prefer native apps with online access, than pure online counterparts. The reasons are obvious, so I wont list them here. 


Buzz is not the first, but it's an excellent example as to why online apps can have an edge over their desktop counterparts. Keep in mind I am one of the few people left on the dying bastion of last generation old geezers defending native apps. If I can see this coming, it means Google is kicking ass.

Monday, January 08, 2007

Upcoming Innovative Technologies from Microsoft

We have a new year, with it new experiences and opportunities are awaiting. This optimistic state when we are all gleeful is an excellent mindset to check out the new technologies which are presented every year at CES. For those of you who live under a rock, CES is one of the most important trade shows of the year. Thousands of companies display their new concept technology to thousands of journalists. The trend setters in each market generally give a keynote during the event, which will serve to give the rest of use some sense of direction as towards where their products and services will be headed in the near future. With our recent advancements in telecommunications, the average Joe can now participate in these events in real time, or with a couple of hours of delay.

Microsoft took the lead this year being the first company to lead in the series of keynotes. They generally have a big show, lead by the man, Mr. William Henry Gates himself, where something generates at least one BSoD before the show is over. The show all in all was not bad. No BSoD :(. There were some new "innovations" that seem fairly interesting, but I couldn't help but be amazed at the section where they were announcing never before released, new and exciting details about Windows Vista. Justin Hutchinson, the gentleman which was responsible for this section of the presentation showed the public not only their advancements in technology, but their great efforts in research and development as well.

Now, keep in mind that Microsoft has been attacked relentlessly in the past for just buying out or shamelessly copying existing technologies or concepts and selling the in their name. There has been a joke going around for some time now that Apple is Microsoft's R&D department. Never the less, I went into the presentation with out any biased expectations (or as little as possible). It is the optimist season of the year after all.

The first feature which was displayed was the start menu's integrated search. Before long there was a small smile on my face. "They are finally making a preactical search that works", I thought. Sadly all good things must come to an end; this one much too abruptly. "If I just go in and type the first couple of letters of the item I'm looking for, Windows Vista will look across all my programs, websites I've visited, my files, my folders and even my email to bring me back the results I'm looking for...", said Mr. Hutchinson. Then the strangely but unmistakable sensation of deja vu hit me. Wait, isn't this just like the gnome deskbar? Which I have been personally using for quite some time now. Here is a snapshot of the ingenious start menu search followed by deskbar.



















































The presentation continued with the showing of the marvelous preview pane integrated into the file explorer. The preview pane basically let's you see the contents of a file, without the need of invoking an application. The user doesn't know that in fact his documents being read anyway, not by Microsoft Word, just by the file explorer, but in the name of instant gratifications little fibs like that can be told every now and then. Before I could start thinking of good uses for the this feature, there it was again. Just like when Neo saw the black cat for the second time in the Matrix. Hasn't KDE's Konqueror been offering this functionality for a couple of years? Here are pictures of Microsft and KDE's respective offerings.






























He continues with a story of how he mistakenly overwrote an important document. OK, it's plausible. It's happened to all of us at one time or another. "I made a mistake last night. I saved the wrong document. [...] Making a mistake like this before Windows Vista would be a problem, but thanks to a new feature called Shadow Copy I can restore a previous version of this document with just a couple of clicks". Hey, that is a good idea. It's hard to imagine coding without a versioning system at this point. The organization and piece of mind it brings you is important. In a business world, a similar concept for office documents should be a good innovation. But wait, there's a memory creeping in the back of my head. I've seen this before... somewhere... oh wait! This is just like one of the new features in the next version MacOS X, called Time Machine. Only it was thought up and announced months in advance.


















I will admit that the features they are offering in the media center variant of the operating system look quite interesting. They don't necessarily have revolutionary concepts, but they do have a very appealing look and feel to them. It doesn't matter how good your product is. If it doesn't have a good presentation, there is very little hope for you selling it. Doesn't matter what google tells you.

I don't even want to start talking about the striking and uncanny resemblance between windows live search and google earth.

They also developed a partnership with Ford that lets you control by voice mobile devices like cell phones and MP3 players utilizing bluetooth as the communication bridge. There are already navigation systems and other offerings which give you similar functionality. This is just a play by Ford to try to kick up it's sales. It's Japanese counterparts are kicking it's ass on it's own turf. Also these efforts seem minuscule when compared to advancements made by Lexus and BMW, each of which have self parking cars. This can eventually evolve into self driving cars. Maybe we are not as far from the future as we think.

Even if these concepts are just "similar" or in the end are intention blatant copies of it's counterparts, the argument and/or it's result will bring little fruit. Whatever it's outcome will be, I would prefer on the positive side effects of these events:
  • Microsoft is clearly building a software stack that will is rival to none. From the operating system, to the applications and right up with the on line services. This tight integration will give it's users better and more reliable experiences.
  • The vast majority of windows users are simply clueless. They use something when and if it is presented to them. They have no idea what are the developments in other products or operating systems. I have met a few that aren't aware that Windows doesn't need to be on a computer or that there are existing (and superior) alternatives. These enhancements to Windows will be received by open arms by it's community simply because most of them don't know any better.
  • Many of these features are inherently integrated with window's network capabilities. The "Digital Home" or the "Digital Decade" as Mr. Gates and others try to sell us, emphasizes on the ability of accessing your content where ever with whatever. Watching a movie on your Xbox, that's on your computer, seeing photos on your TV that were taken by your cellphone. All with relative ease for the common mortal.
  • Even though I've been on the other side of this argument many times, I know publicly admit defeat. There is nothing like Microsoft Office. There are many copies, a lot of them offer similar functionality. A lot of them can be used day in and day out, and will perfectly serve all your needs. Having said that, none of them come close to Microsoft's.

In the end the combined voices of joy of the many will drown out the concerned pointing fingers of the few. The world will have it's new Windows, the IT economy will get a an economic boost as a result of the avalance of upgrades. This innovation will be the base that will drive other companies to give us better aplications, games, security, integration and hardware. All will be well, or will it?

Monday, November 27, 2006

The origin of programmers

There are a couple million programmers around the world. Being this such a large and diverse demographic, it's hard to state any common ground in the community, except of course for the fact that we all write code. I am going to state some things I've observed. I'm even going to make some assumptions here and there. Fear not, I am aware that they are not absolute, and I probably wont be able to make any determinations of that nature on this subject. These are simply things I've observed and explain some behavior I've seen. If this isn't a good enough disclaimer, then let the hate mail/comments fly in. I don't care if every one of my readers protests about this post... all five of you.

I'm a twenty-something year old programmer, as are most of my colleagues. When I was growing up, as many of the children of may age at the time, I had a strong fascination for video games. Keep in mind, in that time, although video games were popular, they were not the main stream media channel they are today. It's difficult to give you a concrete explanation of the source of the interest in them. Somewhere in between the escapism of reality, the provided suspension of disbelief, or the ability to control your destiny. All of these ideals may be seductive to the average adult, but they are even more so to a child. As a child, you parents tell you what to do, your teachers hand you homework. You have little or no control over what you do and how you do it. It can be argued that as an adult you live an an environment that probably has equal or less freedom, but that's another subject. In that virtual world, you are in complete control. In a sense, you are god.

I remember an experience that came very natural to me while playing these games. Especially in action/adventure games. Whenever I got into a boss fight the first thing I would do is try to identify the boss' attack pattern. That would make a much easier and safer counter offensive. Back in the day, video game consoles didn't have the processing muscle they enjoy today.The enemy's patters where pretty basic and repetitive. To make the game challenging, you had multiple enemies coming at you from all directions. After getting good enough to beat the average game's artificial intelligence, and all of the lame kids that dare play with you, you tend to look for the next step. You start wondering how to make games. This is when you eventually find out about this thing called programming.

I've heard stories of similar experiences, but instead of video games being the catalyst science fiction, comic books and other creative influences have been the culprit. At any rate, the pattern holds. You find about this programming thing, and you probably don't actually get to work on it immediately, but it remains in your subconscious for years to come.

Now you're a teenager. You start hacking away with whatever resource you can get your hands on. Even if you have a fresh memory or not, the impulse that got you here was fun, mystery, intrigue. At this point, it probably is still about that. You make anything from stupid little programs that execute simple mathematical formulas, to fairly complex applications.

Eventually you decide to get a career computer science, systems engineering or some other technology related career because of this fascination. You learn how to code "for real". During or afterwards you go out there and you get a job. Nine out of ten times you will be working on custom business applications. Weather I want to admit it or not, that is where the market for your average programmer is today.

Although making and maintaining business applications can lead to a profitable income, there is one very basic problem with them: THEY ARE BORING! There is no feeling of achievement after writing 14 lines of code that tell you how much money is left at the end of the month. The reason why you this fascination started early in the life of a programmer and the way it has manifested at this point is completely different. Weather he wants remember it or not. Repetitive work tends to make programmers dull. You cannot expect major breakthroughs, or ingenious ideas from someone who has to repeat the same process in different flavors every day, 8 hours a day. Yes, there are exceptions, but they are simply that. Exceptions that confirm the rule.

Some of us get excited while working on "complex" features like networking, security or new web/mobile interfaces. Think about it. All of these things are abstract elements. The need for these elements is an obstacle that needs to be tackled. You have been chosen to do so. The process will lead to identifying patterns which you need to wrap your head around in order to make the given technology work in your favor. In the end, you will be worthy of praise for the addition which will make the product better. Sound familiar? Yep... humans are that predictable. It's another video game. You are hungry for the very things that got you here in the first place. Things that have been replaced with monotonous number crunching and report generating.

Sadly all of the corporate technologies that programmers withing this profile tend to use, weather the want to or not, are working in the opposite direction. They abstract you from anything that may lead you to code something new and potentially exciting. You are left with "your important business logic", that is usually found somewhere in the slogan. Yes, you will have an increase in productivity, simply because you will have less code to write, therefore less bugs to fix. The problem is that you will have to repeatedly write the same type of code over and over again, while your framework/tool/environment takes care of the boiler plate.

This is one of the principal reasons why you see people working happily in a small company or startup. They are making less money, they have less benefits, and have a potentially insecure future, yet they couldn't be happier. Aside from the fact that mountains of bureaucracy will magically disappear, you are generally working on something new, different and exciting. You are going back to the basics. You have another boss who's looking for an ass whopin' and you are just the guy to deliver it. And for those of you reading and have not played a video game in their lives, take my word for it. Kicking a really hard boss' ass, is one of the best sensations of satisfaction and self achievement there are.

Not all is lost. Google is trying hard to get the status of the "anti-corporate corporation" in attempts to lure talent to work for them. They have a program where employees are allowed to dedicate 20% of their time to whatever project they decide. This is one of the most awesome idea's if heard since sliced bread. On one side, you have happy, interested employees working hard to get their ideas across. On the other, you have new products and services cropping up from the company, with a much smaller investment in research and development. Gmail, google news, orkut, google talk where all product/services, that originated from these efforts.

In today's highly competitive market software and information services are getting an ever increasing important role in every day life. This can be said for both personal and business environments. Attention will undoubtedly go to the ones offering the best and most original ways to handle the information. A lot can be said for efficiency and it's importance, not arguing against it. Like anything and everything else in life, a middle way must be found where it can coexist with things like unique ideas, fresh concepts and plain old fun. If we are just going through the motions like robots, then there is no hope for evolving the way we handle or information, which in the end translates to the way we handle our lives. Is that really a world you want to live in?

Monday, November 13, 2006

Open mind, open heart... open Java?

Yep, they went on and did it. Java will be opened under GPLv2. You notice how every time someone wants to do something good, righteous or productive for the community as a whole, someone else will negatively criticize this till no end. Or as a good friend of mine frequently says, "There is always someone who wants to throw a bar of soap into the sancocho". Sadly today, that person will be yours truly. The good news is that I don't have enough readers to get hate mail, and I've already had very heated face to face discussions with some of my most loyal readers in advance.

Sun will undoubtedly benefit from this move. First of all, the catalyst that spawned the drop that tipped the glass was the Microsoft and Novell deal (I swear I'm not a narcissistic blogger). They need this in order to compete with Novell. This shouts out loud and clear to the community: "we are not siding with the evil bad guys", "we support you and your applications". Not to mention giving them a lot of good press. It seems that all the tech news lately was revolving exclusively Microsoft and Novell. People loved it or hated it, but they were talking about it!

Once and for all the problems with the distribution of Java will end. Since it is now GPL, any commercial or non-commercial operating system can freely distribute it to their hearts content. Ubuntu will be the first Linux distro to offer the open version of Java as well as the Glassfish application server next year. This also means that a lot of programmers that would/could not access the technology because of license/political issues can now give Java another chance. There are alternative implementations of the Java compiler and runtime. The language specification has always been freely available. Implementations like GCJ and Jikes offer these tools with the GPL license, but are lacking a robust JVM, have a lot of bugs and issues, partially implement the standard API and tend to not include the more advanced network oriented features. Previously restricted programmers now can use the Sun JDK which will give them the full potential the language has to offer.

Sun is the sole keeper of the trademark of Java and has the heaviest of influences in the Java Community Process. Ironically in comparison with competitors like IBM and BEA, they are getting very little money out of Java. Primarily because the competitors products have more market penetration in the enterprise and their respective implementations are arguably superior. Making Java open source will encourage the collaboration of hundreds it not thousands of programmers around the world (taking in consideration that around 5 million people use Java around the world, these numbers aren't so difficult to swallow). With this massive contribution, in due time they will mold a product which may be able to compete at the same level as the previously mentioned competitors, costing them much less money to write, test and promote, and be distributed at a very low price or free.

The community benefits; Sun benefits. It's a win-win situation... right? You will find countless IT celebrities praising Sun for it's latest move. In the end this can only mean more developers and end users utilizing the technology in their respective ways. While I understand the need for Sun to push the technology further, I have my reservations in this recent turn of events.

Making the compilers, run times and standard base API's for both the standard and micro editions respectively GPL has some other consequences that have not shared equal time in the lime light. GPL gives users the liberty to take the available code, and make any modifications to it, as long as the product of these modifications is also made freely available. This is the essence of the famous copyleft. Although the code is GPL, Sun remains the sole owner of the Java trademark. It's willing to let other implementors call their product Java as long as they pass a certification exam where the new compiler and runtime are tested to prove that they are compliant with all regulatory standards. This will help ensure that all available implementations are equal, and Java's platform independence is conserved.

Imagine the following scenario: We have a guy who loves to hack (in the original sense of the word), and takes on making his custom virtual machine. For the sake of simplicity I'll use a fictional character... Ricardo. So Ricardo fixes a couple of bugs here and there, adds a couple of classes to the library and changes networking algorithms in order to make more efficient. Ricardo's fixes are entirely on the up and up, and make specific calls to the API return unexpected results. Ricardo never opts for the certification and releases his code to the world, as is expected of him due to the GPL license. His JVM is widely distributed and utilized by a lot of people.

Then some application programmers start building on top of this shady JVM. More sooner than later, an application will break under this JVM simply because it did not act as expected. Users will not blame the specific implementation of the JVM, they will not blame Ricardo (in all probability they never bothered to find out who Ricardo was in the first place), they will not blame the operating system. It will come down to one of to things, blame the application itself, or blame Java. Whichever is the result it's bad for the community. If the application is blamed, and the application programmer receives a lot of heat for it, and may in turn dump Java in favor of a "new and exciting weak type language". If Java is blamed directly... well no explanation necessary.

Eventually, flame wars will break out, the community will fragment leaded by the die hard haters and followers of the technology. Competitors will use the opportunity to offer a more stable environment on the technical as well as social aspects of the spectrum. Sun will do their due diligence to prevent and mitigate the problem, but they will not be able to eradicate it.

Don't believe me? Fine, go to DistroWatch and count the different Linux/Unix distributions they keep track of. And that's not all of them. Count the different ways of installing packages and maintaining applications there are. Yes diversity is good, but excessive fragmentation can be harmful as well. One of the main benefits that Windows has over Linux is simplicity. That simplicity is accentuated by the fact that no matter who sold you your copy of windows, an application is always installed and removed they same way. This is not true for different Linux distros. Keep in mind that users could really care less about maintenance. They are dumb and lazy, and want to be done with it. The quicker and painless the better.

A couple of friends say I'm over reacting. Things will never get as bad as they are in my imagination. For once I really hope that I'm wrong. I have personally vested money, and what's more important, countless hours of my time and effort into learning the Java technology and building applications utilizing it. I have been certified by Sun. I spend my Saturdays teaching Java to others. It would be a shame that all of this would go to waste.

Sunday, November 12, 2006

Microsoft + Novell = Very Bad News

Yes it happened. After years of Microsoft disrespecting Linux in front of the press and general media, they made a deal with Novell. By now, you must of all heard what the deal is, and it consists of. If not, follow the previous link and get it straight from the source.

I love how the short attention span well all have. It seems like only yesterday when Microsoft accused Linux of not being serious competitor. Saying that open source software is analogous to communism or utopianism. Then Linux's numbers started climbing. Then they started saying they had a superior product line, and how Linux did not offer the same service in the enterprise or desktop (notice the change in philosophy?). Linux's numbers kept growing, and look what happens now.

Some guy in a suit while at a board meeting decided that enough was enough. They had to act eventually, or else, the day would come when they would regret it. I don't think that Linux, or any other operating system, application or thingie for that matter, has the power to bring down Microsoft in the foreseeable future. Calm down, I'm not one of those crazies. Yet it does hold the potential to grab an considerable chunk of market share. And Microsoft loves the idea of having most if not all of the market to itself (why wouldn't they?). So they decided to swallow their pride... better yet, act like it never happened, and "collaborate for the benefit of the consumer". After all, isn't that the goal after all?

For Novell this can only mean good news. They will not be sued by Microsoft for patent infringement (more on that in a moment). They will be the first to implement this joint venture in virtualization solutions. They will be Microsoft Certified (I am still awed that the day has come where Linux distributions need to have this). This will give them the competitive edge over other commercial Linux distributions. Especially for serving mixed Windows - Linux environments.

For Microsoft, this just means they are smart. They are covering their collecting @$$es before it's too late. I've always been clear on this matter, Microsoft's products for the most part suck. The people that work there, are another matter all together. Alternative solutions, in this case commercial Linux distributions, have always offered ways to work with Microsoft environments, while the other way around has never existed. Meaning that if I have a Windows only environment, I can slowly ease into a a mixture or migration of a Linux oriented one with relative ease. From network protocols, to document file formats, there is an alternative solution for all your company's needs.

Now, what happens when Bob (running windows), sees that Juan's (running Linux) desktop doesn't crash, works faster, is able to multi task better, and has a better utilization of system resources. Oh, and by the way, can be made to look just like your existing desktop for the ones that are scared to switch. If Bob has a bit of courage, and is tired of his current situation, he'll opt for the switch, while conserving all his data and functionality. Let's scale that up to the system administrator, to the service providers, to the contractors or to the executives. Are you seeing the pattern? In my crazy little hallucination, Linux slowly, but surely takes over the market. Sadly there is very little chance that this will ever happen. Main reason: people are dumb and lazy. That's it. No further profound analysis necessary. Everything comes back to this.

For us, this is only bad news. Why? Because the very proliferation that I described before is precisely what Microsoft wants to stop, and what little proliferation can't be avoided at least needs to be taxed. Microsoft is going to get a slice of SUSE Linux sales, and what ever joint virtualization products emerge. If there is money in the mix that means that the words "Intellectual" and "Property" are going to come up more sooner than later very close to one another. And this is where the poop hits the fan. All of a sudden, all of those alternative solutions that offer mechanisms that work with existing Microsoft environments are infringing upon their intellectual property. This has been going on for a while, but now that there is a Microsoft endorsed, allegedly alternative, solution it's a different ball game.

They are already making efforts to obscure their protocols and formats in all ways possible, in order to keep the alternatives out of business. I hate to be one of those narcissist bloggers how quotes himself, but wrote about this in a past post. "But they will support PDF and ODF in office 2007!", you say? Yes they will. But they have to. Many governmental organizations around the world are switching to Linux, and one of the motives is ODF. If they do not support ODF, they will force government collaborators to use an alternative to office as well. Again, this is the catalyst that can spark a similar chain reaction, but oriented to office applications. If they don't do something about it, then that means more Office licenses down the drain.

This is not only bad news for Linux on the desktop/server. This is especially horrible news for all the appliances that are Linux based as well. A market, to my surprise, which is very big indeed. Have no doubt, the future only holds growth for the Linux based embedded/appliance marketplace. It feeds the need of the dumb and lazy users, because if offers a centric, simple and easy to use interface. Since specific hardware is used for specific needs, the same experience can be brought to the user at a much lower hardware cost, and little or zero base software cost. Not to mention the fact that the manufacturer can extend the current functionalities the Linux platform offers to suit their particular needs. This is the free as in speech part that we always forget about. Now your TiVO, NAS, SAN, DVD Player or video game console can't interact with your Windows PC. Oh well, it was fun while it lasted.

In the interim, everyone will applaud Microsoft for helping the little guy and thinking about the clients needs first. We will welcome the new products/services, and rejoice at the new abilities that... we've already had for all these years. In the end, when there is no turning back, we will be paying Microsoft for the right to use anything and everything. Even if they authored the software behind it or not.

Tuesday, November 07, 2006

Zombies and robots running the world.

Nope, it's not something out of a cheap and old horror flick. It's not the Matrix 4 (god knows we wouldn't be able to stand something like that!). It's yours truly once again failing miserably at attempting to make a catchy but totally overblown analogy of a title.

Kathy Sierra is one of my personal heroes, for two reasons. The first being she proved me wrong when I said women just couldn't code. I'm sorry girls, not a sexist, just haven't met a kick ass chick coder yet. Second, she's funny, but eloquent; informative, but intuitive. I can't really explain it in detail. She just makes learning easy. And while we're on the subject, she recently had a post that has a lot with what i want to talk about today.

Enough with the long introduction and the mystery. It's simple, education. We are being taught geometry, calculus, literature, history, biology, ... The list goes on and on, but we are not taught the basic thing that we actually need. No one ever cared to teach us how to think.

We have techniques on how to take notes and exams. We are experts in the utilization new technologies applied to cheating on tests. We skim through text looking for the next answer in our questionnaire, but we aren't actually absorbing any knowledge. We jump to the next number in a word problem to fill in the blanks in the expected formula, calculate the answer and close our books in a hurry. We memorize formulas, theorems and rules, but we never bother to try to have a basic understanding of why the particular phenomenon happens.

The biggest problem of all is that no one is interested in taking it to the next step. Everyone is in a hurry to finish studying/working, so they can... sit down and do nothing. Every time some one asks for my help on some academic or technical issue, I try (if it's within my grasp) to explain the why's and the how's. Most of the time, they aren't interested, they just want the shortest path to the answer which will complete the homework, pass the test, or make their application run. Why is it so hard to spark interest or curiosity in a young mind these days? It gets to a point where it's depressing. More so when people who have become accustomed to "the system" and this becomes their way of life.

In my humble and unexperienced opinion, the people that exceed in life are the ones that did not grow up on the system, or found a way to work around it. You need spark, innovation, curiosity, insight. You just will not get that by being systematic. Yes, Matrix 2 and 3 sucked, but the first one is an absolute classic. Sadly most of the guys hooked on the system haven't yet realized that it's just a big analogy of life, from different religious, philosophical and technical stand points. In the movie, Laurence Fishburn, in his role of Morpheus, says:

I've seen an agent punch through a concrete wall. Men have emptied entire clips at them and hit nothing but air, yet their strength and their speed are still based in a world that is built on rules. Because of that, they will never be as strong or as fast as you can be.

How does this analogy translate to real life? Even I may not know, but I choose to interpret it in the following way: When you have the ability to adjust to your circumstances, to improvise, to go with you insight, when your gut does more than rumbling you have "it". And "it" is what separates you from the rest of the pack. "it" is not visible on a resume, you can't get a diploma or certification, can't be passed down. "it" can only be awakened in you. When you have it, you surpass the agents, in the sense that you are no longer bound by the rules the matrix imposes on you.

Have you ever seen something good, and then something great? Something that satisfied your needs, and then something else you just had to have? Something you would say "hey that's cool", and then something else would make you say "oh my f***ing god!". Ummm.... yeaaaah. What ever it is in your life that fills in those blanks, the difference between the first and second element is probably "it".

We need a generation of creative and insightful people if we are to make a difference. We have all this information, technology and resources at our hands. More than ever before in the history of man kind. If you look at it from this perspective, we are the luckiest dudes in all of existence! Yet we go through the same motions every day. Anybody else notice something slightly wrong with this picture? And not "find the 5 differences in the two pictures" wrong. I'm talking Picasso painting wrong! (I'm sorry, I have no appreciation for art, please shoot me).

I'll end this post with another quote from The Matrix. This is the last lines Keanu Reeves says on the phone before he soars into the air at the end of the movie. No analysis, no interpretation of it's literal meaning. Think about it, and throw it into the one sided discussion where ever you'd like.
I know you're out there. I can feel you now. I know that you're afraid... you're afraid of us. You're afraid of change. I don't know the future. I didn't come here to tell you how this is going to end. I came here to tell you how it's going to begin. I'm going to hang up this phone, and then I'm going to show these people what you don't want them to see. I'm going to show them a world without you. A world without rules and controls, without borders or boundaries. A world where anything is possible. Where we go from there is a choice I leave to you.