martes, 18 de septiembre de 2007

Sun always makes the wrong moves

It seems that Sun makes always the wrong moves.

In 1996 I used Sun OS, and Sun workstations had 4 CPUs per machine, consirably faster than Intel CPUs of the time. The OS run on one of the chips and the other 3 chips were used for the user space.

It was really smooth. But Sun had a different idea named Solaris (which must be Sunny in Latin I guess): The operating system was going to be distributed and therefore it would be faster.

That goes against my intuition and against the separation of concerns, against the division of labor, etc. Solaris was a very bad idea from the beginning.

Fast forward to 2007

Now Sun delivers an 8 core CPU with embeded ethernet... An 8 core is something amazing, if it weren't for Azul 768 cores in one machine.

But having ethernet embedded on the CPU? Maybe I'm missing something. Is the CPU going to communicate with main memory using ethernet. Maybe it is, since disks are supposed to get faster by using iSCSI (SCSI over IP), so getting an ethernet inside the CPU is not crazy after all.

I thought the primary drive for iSCSI was to have disks outside any computer and therefore reduce costs. Of course you could also use iSCSI internally, but I always thought the CPU would never speak IP. If it now speaks ethernet by hardware, IP is just a thin layer over ethernet, so 90% of the job is done, the other 10% can trivually be done by software.

But I think this tendency to convert software into hardware will only accelerate. I don't know if people realize how fast new protocols are invented and are crammed into chips. Today you can run an emulator in an applet, so a full computer can run in your browser.

If IP can be crammed in a chip, Java can be crammed in a chip, and therefore computers with 1024 CPUs (or cores) are just arounf the corner. If each of those cores can run Java, there will be a lot of unused computing power.

I know the companies are underserviced, most of them spend as much as half million dollars per month just ro run their datacenters. And that's cheap compared with the amount of money that would be spent if run manually (not considering all the data loss, that also has a price).

So companies are paying really very little for running this datacenters, but in 10 years they will be able to run their whole data center in an applet, if things continue this way. And I know they will.

4K must be enough for everyone

When I was 14 or so I knew a guy who was the CIO of a bank in Equador. He would tell me that when he started working a computer with 4KB of RAM was enough to perform everything at the bank. He didn't tell the processes run all night, but of course it couldn't be any different.

Now things have changed. Computers are commodities and developers are expensive, so people are not expected to work at night. And yet you can run processes at night, like performance testing and see the next day what happened. But even doing that is a waste, because if something doesn't work, you need to retest, and if you wait for the process to run at night again, you lost a full day.

It is much better to buy a machine for running the tests, since if you use Java, a normal PC can do, and they cost less than a $1,000. This is important because developers typically cost between $2,000 to $6,000 per month depending on their experience. If they can perform faster (by having computing resources available), you are saving the big bucks. Saving on computer hardware is rarely a saving.

So maybe Sun is on the right track this time, making it easier for hardware manufacturers to use iSCSI inside computers. But IMHO moving everything from software to hardware doesn't make 20x faster, only 10% faster, and a lot more hard to change.

As I already said, good optimizations are the ones that perform at least 5x faster, even 10x faster. Any optimization that is not at least 2x faster should be disregarded and eliminated. I think we are seeing that kind of optimizations now.

The best ideas always win in the long run

One nice thing about not understanding is that it really doesn't matter. If you don't understand, the market will take care of it. The market always takes the best technologies and makes them blossom, while leaving the bad technologies behind.

Now you think I'm wrong because you know these examples, for example I know of Smalltalk, which was clearly superior to C++ and Java, but the main problem it had was its price. It was too expensive at the time, so Java occupied its place. Smalltalk good ideas were copied one by one until C++ and Java leveraged its potential. First C++, now Java, which is mostly free.

So in the end it is the right technology mix that wins. Even if Smalltalk did not win, its technology its all over the place in Java, so in a sense Smalltalk won, through Java. For all those Smalltalk lovers and Java haters, I know Smalltalk is still better, I know there are many things in Smalltalk that have not been copied (yet), but it is just a matter of time and a new language that leverages the Smalltalk potential that is already left.

Why not Smalltalk directly? I now think Smalltalk has trust issues. I mean, the more I work in collaborative environments (development projects) the more I see people can't be trusted. they perform rather ok at the beggining, but eventually they do tricks and they try to benefit themselves in the sort run (while damaging themselves in the long run, and at the same time damaging the projects). I have no recipe for solving this issue, but certainly using a language that is less restrictive (Smalltalk) doesn't seem like a solution.

Trust issues

Maybe it is. I mean, maybe being in an environment where you are trusted from day one makes you be worth the trust, while being in an environment where you are not trusted makes you rebel and be less trustable. At least that certainly true for children, you need to trust on them for them to act maturely (according to their age of course).

In the case of programmers, I've read it is the same, but I feel tempted to do the opposite, since I have read their code and I know they did tricks, so a natural solution would be to build an even more restricting cage. Psycologically, I suppose the only reason they did tricks was that they needed to solve the problem and they thought the controls were unnecessary obstacles and even offensive. "If you hire professionals, why would you not trust them?"

On the other hand if they didn't have anything to hide, why did they do these dirty tricks? You can imagine that they thought they were trying to say "I'm smarter than you, because I did this and you didn't notice". Or they simply needed those tricks in order to perform appropiately, or so they thought at the time.

I'm sorry but I have to let them know that that is not the purpose of control. The purpose is to find out who is doing tricks, apply some current (only psychologically, just in case you wonder) and then go back to normal. The idea is not to have a cage on the mind of each developer, but to unlock their potential without making them step on each other's toes.

What do I mean by that?

All developers do not think the same, and you need to build a collective mind. This means that each individual has his own ideas, but the ideas of one developer can be understood by the rest, leveraging the potential of other to improve their own potential. This means you can start with a very lousy team, but you improve each of its members until they understand each other. This means they need to communicate, to pair program, or if they lack the basic instinct of cooperation, to do the poor man's pair program which is to code review before a check-in.

Governance is a very interesting topic, because you can govern like the Stasi or the Nazi regime, or you can govern like if you were in Switzerland or Sweden. The people act better when the government is light and is actively encouraging people to help the government with ideas and independent action. People feel as part of a community and they have a possitive view of the goverment, because they think "we are the goverment, because we do as we feel like it". The goverment just forbids the more aberrant behavior, but people feel everything is permitted and the sky is the limit. You can certainly feel that way in the US where children are encouraged to do as they wish and to not limit themselves.

In Chile, our education was radically different. You had to ask for permission and nothing was allowed. Even if you tried to motivate people, people would look suspiciously because who would allow that? Yes, it sounds silly and funny, but it is not so funny when all days were like that. I mean, if you are not trusted, it means you are a bad person, then it is ok to do bad things as long as nobody sees, because otherwise you would be gounded. See? The logic is perfect, and all that started it was that you were not trusted in the first place.

Is this still true for grown ups? Yep!

Chile has a very special way of treating companies like robbers. For example if you start company, you are allowed to stamp only 3 billing notes. Unstamped billing notes are not valid and you can stamp new billing notes when the other billing notes have been returned to the chilean IRS equivalent (already paid). So nothing really works, because no company could survive that long, and people have to do things under the table in order to operate.

See: you are not trusted, therefore you need to subvert the system, so if you look closely into what companies do, you realize they can't be trusted really, and all is just pose and looks. Welcome to latin america, where nothing works as it is supposed to.

No hay comentarios: