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.

Monday, October 30, 2006

Children making your life altering decisions

Would you let a five year old decide what medicine you should take? How about, what work needs to be done on your car's transmission? Would you pay him for your house insurance? Or trust your life savings to him? It sounds ridiculous doesn't it? A child doesn't have the necessary virtues to handle any of these tasks. He can't handle any important aspects of his own life, let alone entrusting another's.

What separates a child from a man? If there are any doctors in psychology or sociology reading this, sorry for invading on your turf. If I'm wrong for what I'm about to say, please be so kind to leave a comment. In my humble, unexperienced, unworthy, and almost illiterate opinion there is one specific difference: Knowledge. As a boy grows up he makes mistakes, observes events, witnesses joys and tragedies... This all adds up to one central repository. It better prepares him for the next day ahead. This accompanied by some reading and schooling will turn him into a collaborative entity in society. Now, a man, and one preferably with a skill set specific to the area in question, is an excellent candidate to ensure my health, my car, or my money to.

Ummm.... yeah... we knew that. Where is the big discovery? As with many of modern day issues society is facing, the problem lies in it's politicians (don't get me started on Bush's recent rampage). Politicians are making every day decisions about the way you and I will use information technology in our every day lives. The only problem is that the average politician knows as much about technology as a average five year old know about nuclear science. In essence it's just like handing over the steering wheels to children of an area in society that is ever increasing in importance and popularity.

Information technology every day becomes a more integral part of our every day lives. The mere fact that you are reading this text on a blog site or through an RSS feed is the very proof of my statement. It can be as simple as your phone or as complex as the world wide network that keeps track of all your traveling, economic transactions and judicial records. You'll find much better sources then myself which confirm all of this.

But then you'll find stumble upon former politicians admitting they had no idea what they were doing, CEOs of giant companies complaining that the public officials don't even have a fundamental scope of where information technology is today, police raiding an innocent person's home, based on very unreliable information, and my personal favorite a senator with absolutely no idea what he's talking about trying to convince his peers that a tiered Internet is necessary to preserve all of our interests. And this is just the stuff that finds me on a day to day basis. I will admit I don't have a strong interest in political news, even though it affects me directly. What could/would I find if I actually dug deeper? Just the thought is chilling.

I can give you lectures about how we should be choosing our representatives a bit more carefully, or how we should attempt to educate the people we currently have in office. Unlikely to happen. Almost all of them have a severe case of god complex. This phenomenon will continue until one of three things happen:
  • The current generation of politicians dies out, and get replaced by information technology aware counterparts. Not because we spontaneously agree on electing computer scientists as mayors, but because the this generation is growing up with information technology as an integral part of their every day lives.
  • They find leadership in one regional or global technology savvy leader who by some incredible and impossible means achieves an centric political and pubic role. If this happens, the catalyzer that will convince local officials to follow as always will have to be self gain, making the feat even trickier.
  • The MAFIAA and other giant corporations and organizations finally learn (the hard way) that it's not by attacking, but aiding your consumer base that you will find prosperity. On that enlightening day, their lobby will work for their benefit as usual. The only difference is that lobby will be pushing for ideals that masses, the corporations, and politicians can all gain positively from... nah! It sounds to good to be true.
Just try to remain in sync with the times, and try to steer your kids away from ignorance. Sadly it seems that everything else is out of our control.

Thursday, October 26, 2006

New blog:

I'll keep this one short. ;)

I have started a new blog: Basically the concept is to have a photo diary of the amazing things that are taken for granted on a day to day basis on the 2 square miles where I spend most of my time.

Foreigners will especially be awed by some of the things that happen here on a day to day basis.

There is a better description at the initial post at the blog itself. If any of my 3 readers have any cool photos that fit the criteria, send them to me and I'll be more than happy to post them.

Let me know what you think.

Monday, October 23, 2006

Windows Vista: Crappier than expected

We've already heard the stories about Vista and how it will be released lacking many promised features. Also how it will be released more than two years after the expected date. It gets better. Trust me.

I am a fan of podcasts. In particular, I listen to some of the podcasts from Leo Laport's network. FLOSS Weekly is one of these podcasts. With Chris DiBona at his side, Leo interviews people who have had a significant impact on the open source community in one form or another. Last week they had a very good episode. It can be found here. In this podcasts, a couple of the people who work on SAMBA were interviewed. At about 40 minutes into the episode, they started talking about SMB2 in Vista.

Let's side step this subject for just a couple of paragraphs. Not to assume that you are tech illiterate, but just in case: SMB is the protocol used in windows for sharing files, folders, printers and other related tasks. SAMBA is an open source implementation which allows a non windows machines to talk to windows networks. Windows Vista sports a fresh implementation of their protocol with a very innovative name: SMB2. This is hyped to be one of the big innovations for Vista within the networking context Here is a quick quote which should serve as a reference (you can find the whole entry here):

We have listened to our customers on the limitations that were present with the original SMB protocol and have removed the restrictive constants in the protocol so we never need to worry about the protocol itself being the limiting factor for scalability. This includes increasing the number of concurrent open file handles on the server, the number of shares that a server can share out amongst other key enhancements which include:

  • SMB2 will have transaction support, i.e. full two-phase commit transactional semantics are available over the new SMB protocol. This takes advantage of the new Transactional File System (TxF) feature in NTFS in Longhorn Server
  • Client Side Encryption. This allows over the wire encryption of data, i.e. a file is encrypted on the client and sent out to the server where previously the file would have been sent in the clear over the wire and encrypted on the server
  • Support for symbolic links over the new protocol
  • Supports an arbitrary extensible way of compounding operations to reduce round trips. This is what will primarily enable less chattiness which has often been a major pain point
  • The new protocol supports larger buffer sizes than previously allowed

Cool, huh?

Back to the podcast. So they are geeking out, talking about all they have done in SAMBA, all the people they have reached, and how important their work is for the industry. SBM2 comes to the discussion. They start talking the techniques they use in order to implement the server/client that talks to Windows. I have to admit, that to this mere mortal, it sounds a lot like reverse engineering, but they insist it's not. In any case, part of the process is doing something on a windows machines, and analyzing the network to see what data is transmitted as a result. One of the machines shares some resource, while another does some operation to the resource shared.

In Windows XP (and previous) when attempting to delete a file, one packet is sent while another is sent back as confirmation. Till now everything sounds cool. Now let's try to do the same with our magical Vista beta. When attempting to delete a file through the console, 6 - 8 packets are sent. Right of the bat this sounded bad. Simply because it's a 600 - 800% increase in traffic. Having said that, 8 packets isn't a big deal for a local network. Depending on the size of a particular operation, it's possible to take that hit. Then they tried to do the same thing, but instead of using the console, they delete the file through a graphical window. After all this is the preferred interface of the average Windows user.

How many packets where sent in order to complete the operation? 20? 30? Come on, take a guess! [Insert drum roll, or other suspenseful effect here]... 1500 packets. Yes, 1500 packets. I'm not joking, and neither were they.

I will one more time reference my awesome (sarcasm) job. We have about hundreds of people on a windows network. As part of day to day work, we need to move files around the network. You don't need a CCNP certification to imagine what will happen to the bandwidth of our lovely network (sarcasm again) if something that takes 1 packet suddenly needs 1500 packets to complete an equivalent task. There goes my already limited bandwidth. Better yet, this could be a denial of service attack, sponsored by the operating system we already paid a lot of money for. What really cracks me up is that Microsoft is using the idea of "scalability" as one of it's main points for hyping the new protocol.

Why do they need to transmit all that data just to simply delete a file? According to one of the people being interviewed, the good ol' folks at Microsoft felt a need to f**k with SAMBA. It's very possible. SAMBA is a very popular alternative, and it could argued that it was hurting their market share. On the other hand I try ('try' being the keyword) to be fair. Consider the source. The SAMBA guys are not going to publicize anything having to do with Microsoft loving them.

What's really depressing is that I'm not the first, nor the last person to say this. There is a list of complaints of why Vista sucks longer than they orthodox church's complaints on modern day life. In the end, we will buy it, install it, scream at out innocent monitors in frustration, reboot, rinse and repeat.

I for one have decided no more. XP is officially the last time I will ever use Windows. I have been using Linux for a while now. I still keep XP my PC on dual boot for the sake of other people in my household who cannot survive without a square button on the bottom left hand side of their monitor which reads "Start". I know what some of you are thinking. There are tons of alternative operating systems, window managers and transformation packs which offer you something that looks and works enough like windows so you can emulate the environment, but different enough to keep the makers from getting sued. It simply doesn't work. Users feel comfort when they know exactly what to expect. Even if you promise them it looks and feels the same, they will fear change.

I've sat through all the motivational speeches about how one person can make a difference. I'll insist on it anyway: I'm just one dude. There are other people who share my opinion, and maybe even a few who will take similar action. In any case, the collective will continue to support Microsoft and their crappy products.

Don't get me wrong, I don't hate the people at Microsoft. If they can make money and support their operation, great! More power to them. I just feel sorry of all the screaming at the innocent monitors who are not at fault. The banging at the poor keyboards and mice. It brings a tear to my eye every time I think about it.

Wednesday, October 18, 2006

Piracy as a business model

What?! What was the title? Is this a typo? Is this guy saying that we should advocate stealing of the hard work writers and producers? Calm down, it's not what you think.

I share a ritual with a close friend of mine. Every once in a while one of us takes his laptop to the other one's house. We copy all the interesting "crap" we can stumble upon the net. On the last iteration I gota video which had a very interesting title: "The future of bit torrent". I sat down, watched it, and was absolutely stunned by what I saw.

It's a video of an exposition at a film school in australia. You'll find a transcript and a link to download the video here. I recently discovered this is actually from last year, but I recently discovered it. Besides, the internet is a big enough place, so it may be news to you as well. While I did not find what I expected, I did find it a very interesting subject.

The speaker was describing what initiated the success of Battlestar Galactica, and other shows which have had a similar phenomenon. This show was leaked on bittorrent previous to it's release on TV. Instead of this causing a slump in the show's ratings, it did quite the opposite. The show is one of the biggest successes of the Sci-Fi channel. The explanation is simple. The social networks (be it on myspace or just dudes that hang out) spread the word, and everyone seemed to like it. This was pivotal to constructing the large fan base the show enjoys today.

This is all great, but if the show is distributed off bittorrent, how get any earnings? This is something else he mentioned. There is a long chain from the people that produce the content, to the people that actually consume it. With this medium of distribution you can cut the middle men, which, in turn will cut distrubition costs. Aside from this, we all know that bittorrent as a technology and distribution medium is marvelous at helping us reduce costs. Since I don't want anyone to be left out, wikipedia has an excelent description of the technology, if reference is necesary. You'll find it here.

Fine, the distribution problem is solved, that will save me money, but where will the money come in from? Bugs. No not, insects. No, not the software issues that haunt us. Have you ever watched a sporting event and have had a semi transparent logo of a commercial product or service stare at you for part or all the event? That's it. It's a way to brand the content with an advertiser, in a way that will help gain a direct relationship between producer and advertiser (keeping the producer happy), and will force consumers to actually watch the ad instead of flipping the channel or cutting then out, (making the advertiser happy). It can be customized be region or demgraphic. One thing I totally agree with the speaker on: The 15/30 second TV ad is dead. It just doesn't know it yet.

I don't think this is a solution for everyone. There is a lot of content that will benefit from keeping it's rightful place in television. None the less, this opens the playing field for a whole new world of content. No longer do you need to compete for time slots, no longer only highest bidder gets a chance to show what they are made of. This is a medium where QUALITY determines who will be consumed. The community decides what's best, not an executive at a network television company.

In the end, all bittorrent is doing is fulfulling the consumers needs. We want the full triangle: good, cheap AND fast. We don't want to watch things monday night at 8:00 pm. We don't want to necessarily sit in front of a TV. It's a diverse world, with diverse people, who have diverse styles, activities and interests. You cannot paint them all with the same brush! This adoption is only natural.

Don't believe me? Fine. Believe Anne Sweeny, one of the top execs of Disney, stating that piracy is a business model they need to compete with. Or check out the deal that the bittorrent guys made with major studios to legally distribute content.

Bittorrent is here to stay. It doesn't matter what the MAFIIA says. It doesn't matter if the lobby convince Ted Stevens and his buddies that this is the product of conmunism and devil worship, all while clogging our precious tubes. It will stay because it is the will of the collective. Despite the great mass of power of a few, it will never match the power of the many.

Sunday, October 15, 2006

Software Factories

In my very humble, unfounded, inexperienced and immature opinion the creation of software as a discipline can be better described by being divided in the following manner: 25% science, 25% engineering and 50% art. Why this division? Well think about it...

The science of it all exists because of all the theory associated. I always hated most of it in college, so I will not be able to extensively describe it. Theoretical counterparts you will find associated with the practice: algorithms, language theory, state machines, and their buddies. It's part engineering because with any theoretical science that deserves any attention, an application of that science will be found not too far off. This is no exception. Quick examples: design patterns, predefined API's, standard procedures and practices commonly used.

Now comes the interesting part, which every half decent programmer will probably concur with, and what will take too much effort to convince users and/or managers. Despite that, this is actually a fundamental truth. Software is 50% art. The distribution may be further inclined in art's favor in some instances. Yes, we have the theory which has already been handed out to us. Yes, we have available many widely used implementations and reusable components which makes our jobs easier, prevents us from reinventing the triangle.... again, and gives us broad shoulders to stand on weather we feel like admitint it or not. What happens after this foundation has been laid out? If these were the only necessary components, software creation would have been totally automated by now (we will get there eventually, and yes it will suck, but that's another blog entry ;) ). You need a spark. You need light bulb going off on a dude's head. You need creativity in order to make this foundation work for the particular solution which is being implemented at the moment. I repeat this indefinitely but very few people pay attention to me (no one pays attention to the green theory). Creativity cannot be taught. We can help mature it, we can guide you in the right directions, we can give you enough tools that solutions to most problems will emerge easily. But teaching you to make the bulb turn on? That's like what Laurence Fishburn told Keanu Reeves in the first Matrix movie, “I can only show you the door, you have to walk through it". Let's leave this subject on the back burner for a second and jump to another topic.

As we all now, you are reading a blog after all, software use has been exploding in the recent years. Some pieces of software are even considered to be house hold appliances and/or brands. Yes, microsoft's products suck, but even my mom has heard the word Windows being said in the context of a computer. In order to achieve this widespread use, it has to have become a finely tuned, well oiled machine, that can keep up with the ever demanding consuming market that it holds a death lock on today. Here we find the best and worst thing that has happened to software in it's history. Because of this explosion software is now found everywhere. In many instances, casual users have no idea it's even there, but it's making there lives more convenient one bit at a time. Where does it go wrong?

Enter the software manufacturing corporation. As I mentioned in a previous post, I work for a big company. This company depends on software for most, if not all, of it's sources of income. In a corporate environment this process, just like any other, needs to be efficient as possible in order to get maximum output with minimum input. I have nothing against that, it's stupid to consider they will waste more resources than necessary in order to do business.

The problem arrives at the moment you start treating software as any other manufacturing line. I have no experience as an industrial engineer, so when I start BS'ing, someone, please let me know. Imagine if you will, we have a jeans production line. Person A stamps, person B folds, person C puts the pants in a box. You have every person doing one particular job, and doing it well, which is much better than having three people doing three things. Where's the problem? A, B and C are doing the same thing all day every day! You have no room to grow, you have no room to experiment or to shake things up a bit. If you try, it will probably lead to trouble.

Now, let's translate this analogy to software manufacturing. You have one guy adding new features and doing maintenance (most companies are scared out of their minds to try on new applications and only do so when absolutely necessary), one guy doing manual testing, one guy doing load/performance testing, and another doing deployment and support. Again, it's much more efficient then having four guys doing the four activities independently. The problem is that each one is in a loop where the repeat the same process over and over again. This is especially true for the guys working on manual testing and the steps which follow. Having people do the same process over and over again, while making them skilled also have a very negative effect. It makes their brains dull. There is no need for creativity, there is no need for out of the box thinking. Just follow the outlined steps (in some cases, this is literal), and report when you are done. Rinse and repeat. While the corporation is thrilled about this, the people actually doing the job in the long run is just becoming zombies. The products which they are working will reflect this state of mind.

Am I aiming to change the world? Oh, no. Do I wish I could work in an environment where everyone could they as they pleased when they pleased? Oh heavens, no! Just keep this in mind, in the middle way you will find the truth. A guy, much more wise than I can ever hope to be once said:

“The loose string, which is like a life of indulgence, produces a poor sound when struck. The overly tight string, which is like a life of extreme asceticism, similarly produces a poor sound when struck and is moreover, likely to break at any moment. Only the middle string which is neither too loose nor too tight, and is like the Middle Path, produces a pleasant and harmonious sound when stuck.”

You simply cannot expect exceptional work from people that are groomed to work like robots. I got my money on the odds that you will probably wont get it. Ever wonder why all of the Web 2.0 innovative ideas that lead to popular applilcations are coming from startups with few people and even less money? Aaaaahhh... unagi! What do they all have in common? they are small groups, without a predefined production ine of software manufacturing. They just had a good idea and went with it, on their own terms.

Software is a creative process. It has to be applied, measured and reported upon in order to be considered efficient and practical. None the less, this does NOT justify it not being considered something other than a creative process. How many painters, writers or composers do you know of that work a strict nine to five shift?

Tuesday, October 10, 2006

Burocracy over productivity?

I know this has probably been discussed over 100 million times, especially in blogs, but i just have to get it out there before i die.

When will companies, especially big coorporations stop giving top priority to burocracy and start crediting a little, tiny, winny insy bit more importance to productivity?

I work for a contracting company that lends services to a fortune [insert small number here] company. At first I accepted the whole system, because i realized it is a huge operation and it needs to be organized in order to maintain a certain level of sanity.

My perspective on this has changed over time, and this has been especially accentuated over the last couple of months with events like the following:
  • I walk up to tech support, give him a good description of the problem and point to the computer with the issue. He instructs me to go back to my desk, write him an email with what i just said, go back to where I'm standing at the moment, and escort him to the computer with the issue. And whats most depressing about the problem is I could fix it in 10 minutes if I was allowed to. The problem hasn't been fixed yet, if you are curious.
  • Mountains upon mountains of required spreadsheets, documents, and presentations, which no one reads but any one of the manager on the CC line will bite you head off if he notices that you have not sent the appropriate reports.
  • People more worried about how a certain issue is going to affect 1) his personal image, 2) his team's image, 3) what his superiors will think of the incident, 4) his organizaitons image,.... 26) what was the problem again?
  • Spending hours (yes, hours) in a meeting discussing cosmetic details about reports.
  • Receving a phone call from someone, requesting I explain to them the status on a project. Only problem is that I send that status EVERY SINGLE DAY; it's required by the guy on the other side of the conversation. He just didn't bother to read the damn thing.
  • Being sent from person, to person, from team to team, around in circles because no one is responsible for whatever it is i'm working on.
  • Superiors handing me assignments where the effort taken in assigning the item to me is equal or higher than doing it themselves. Examples: Calling me to tell me to call someone. Sending me an email to asking me to send an email to someone else.
Again, I understand the need of big companies to stay organized. It would be chaotic if everyone just did as they pleased. I understand how maintaining a documented history of events is useful. I personally agree that many activities need to be documented.

Having said this things, it amazes me how burocracy outweighs goal of our company. Our purpose is to directly or indirectly is to offer a service or product to a client. We do this, because it makes his or her life better in some way or another. If it wouldn't he or she wouldn't bother to consume the product/service in the first place. It doesn't matter if you are the mail boy, you're role is important in the overall objective.

Is this going to change anything? Probably not. If a manager from one of those big companies reads this, will he change the way he controls his particular sub organization? I highly doubt it. In any case, now that I have your attention, just let me tell you, this is not the way. In my personal case (which may, or may not be the case of my coworkers, or any of the millions of people who have to spend 10 hours a day in a cube), what drives me, what motivates me is that idea that I am adding to the objective. I am making a difference. My work, as miniscule as can be is going to make somebody's day better, even if it's only for 5 minutes. That brings a smile to my face, and satisfaction to my craft, not pretty numbers on a spread sheet, a detailed document or a fancy presentation.

In the words of one of may favorite comedians, dennis miller: "That's just my opinion, I could be wrong".

Saturday, October 07, 2006

Theo is holding the line of defense

I have to admit I've always had mixed feeling about Theo. I compared him to Stallman in the sense that there was no way to convince to bend his philosphy, or look at things in another light. Maybe convince him that their might be a slight possibility that he does not hold the absolute truth about life, the universe and everything. After reviewing this last email, I have to say that he is actually standing up for all of the open source community.

On one side we have the big companies pushing their propietary products on us. Every day they include more back doors, more phoning home mechanisims, more data mining techniques, more ways to deprive us of our freedom. The irony of it all is that we are paying them. We as consumers want to have everything, bright and shiny, right now, and at the lowest price possible (or free if that's an options). Obviously these two frames of mind cannot coexist in the same world.

Because of this yuxtaposition of ideals, the line had to be drawn somewhere. Think of it as a tug of war. Every time the big companies inch towards their objective they will just push harder. If as consumers we loosen up, they will not take a break, they'll just keep pulling and pulling, until they've achived the other end of the rope (they will get there eventually, I just hope I'm not alive to see that).

In this particular scenario, big companies don't want to open their specifications. If they do, an NDA is a non-negociable prerrequisite to receiving them. This leads into two groups. The ones that are lucky and willing to sign the NDA, and those who will hack away and try to have "compatible" (generally considered infierior) drivers. What makes matters worse is that the group behind the this particular scenario are the One Laptop Per Child group, which all other things aside, will promote open source software as part of the objectives of the project. Not planning on taking about the sociological, economical and/or political implications of the project (or at least not now ;) ).

I know it's not everyone's favorite subject, but le'ts make a breif analogy with the current situation with the MAFIIA. They want to get to a point were we declare that bit torrent (and every other file sharing technology they can't have total control over) is illegal. Yes that's right, not that the media that is being shared "illegaly" is the problem, the technology is the problem. This is more absurd than the whole "the internet is a series of tubes" thing. And if we let it happen, do you think it will stop there? Do you know they are currently lobbying to make it impossible for anyone to own any media? They want it to make it so, that EVERY TIME you listen to a song or watch a movie, they will be entitled to collect. And if they do achieve that, I don't want to imagine what they will go after next.

Theo may be hard to deal with, and may have some ideals that from time are difficult to absorb. Having said that, he is making sure we have choice, and that my friends, is what freedom is all about.