I watched Being There again with my sister a while ago. I can't help noticing how faint is our relationship with reality and with what we consider to be true. Ah, the endless times it becomes evident every day.
The way in which we react automatically to certain words. The default way of interpreting things. The same gestures, the same ideas, the same thoughts, the same manner of speech.
And then you see it in older people whom you knew when younger. I cannot escape the feeling that when we get older and our behavior becomes a bit strange, it's not really weird or foreign. The behavior patterns were always there, only now they are not modulated as well as before. Thus, they do not resonate as well with the environment... a bit as if more debuggers came up, but more and more with a default handler that just proceeds.
Some experiments I've done this year seem to confirm this line of thought. The contest was about creating a program that followed extremely simplistic rules. Other simulations I wrote in the same framework confirm the power of proper modulation of even naive behavior tendencies.
Life... what a strange phenomenon.
Friday, December 29, 2006
I watched Being There again with my sister a while ago. I can't help noticing how faint is our relationship with reality and with what we consider to be true. Ah, the endless times it becomes evident every day.
Wednesday, December 27, 2006
Still with barotrauma, I gave two presentations last week. Last Thursday, I presented Writing Truly Efficient Smalltalk to an audience of 10-15 people. You can see some pictures here (thanks go to Esteban Maringolo for making them available). There is Spanish speaking footage recorded in a MiniDV tape, but I have not had a chance to make a proper video out of it yet.
On Friday I presented a beta of a new presentation which I hope I will have a chance to share soon. Alas, I cannot talk much about it yet --- so, for now, let's say it's very attractive :).
Posted by Andrés at 13:37
Monday, December 25, 2006
Of course, we live in a society that rewards making money through innovation. But what happens when, in the case of Microsoft, you are unable to produce true innovation?
Without going through the technical reasons, such as "Vista builds in 24 hours" and "the tests run in 3 months", the issue here is that when you cannot come up with a new idea, then sometimes you end up doing things that in the long run just damage you.
For instance, this lovely description of the content protection mechanisms in Vista. You should read it thoroughly, paying close attention to details. To summarize,
- All PC hardware will be more expensive, and their drivers more bug prone, due to Vista. In particular, if a flaw is found in a hardware design that could allow you to access premium content when you shouldn't, then Microsoft can revoke your rights to use such hardware remotely. This means that if you make a big investment in, say, a video card, it can become worthless overnight due to a glitch. And OBTW, do you remember those disclaimers now? The price hike has been estimated at about 20% --- and this will apply to you whether you use Vista or not. Mac user using standard PC hardware? I am sorry for you too!
- Part of the price hike you will pay in hardware is to support end to end encryption of premium content. This means your motherboard, your video card, your audio card... pretty much everything, will have to support AES. This means increased power consumption and decreased hardware functionality (as you pay more to get the same, plus AES capable hardware). In some cases, this means increased CPU usage due to e.g. playing a CD in the background. When the CPU can't cope with video decoding plus encryption, then encryption will have to be handed off to the video card --- which means further obfuscation of the bus channel between the CPU and the video card. The list of places where your dollars will have to do extra work goes on and on. And mind you, some hardware devices have been made incompatible with each other to support this.
- This offers a perfect opportunity to make a mess of Windows based servers. A worm just needs to make sure the copy protection is tripped, and then performance goes down the drain. The secrecy that blocks details about how the copy protection is enabled prevents you from figuring out what the heck is wrong with the box. I am sorry for you, but Vista always knows better.
- In addition, hardware must support tilt bits (just like in pinball machines, which detect excessive rocking). Drivers will have to wake up 30 times per second to confirm everything is fine --- that's more useless CPU usage for your high performance box to take care of. And what if there's a hardware glitch that trips a tilt bit every so often, such as "voltage such and such is off by more than the threshold"? Then your box will perform horribly and Vista will get angry with you.
- There is much more in there, to the point that content providers are dictating the layout of motherboards.
- Also, I am sure businesses will like a 20% productivity tax on new hardware which will underperform and thus be a bad investment, when employees aren't supposed to be watching movies at work anyway.
Thus, the responsibility comes to us. Because it will be our fault, and our fault alone, if we let this approach succeed by spending even $1 on those abominable shiny new products full of glass beads. So which one will it be? Are we too addicted to the latest stuff that we can't stop shooting ourselves in the foot?
We shall see, my friend.
Posted by Andrés at 18:46
Thursday, December 21, 2006
So what happens if you take a plane trip when you're congested? Well, of course, your eustachian tubes may get clogged. That means that your ears will not be able to regulate their internal pressure to match that of the environment.
Thus, the plane goes up and the pressure goes down. The internal pressure in the ears is higher than that of the environment, thus the excess comes out through the tubes into the cloggedness. So far so good.
Then the plane goes down and the pressure goes up. The internal pressure in the ears is lower than that of the environment, thus the deficiency should be replenished via the tubes. But since they are clogged because you're congested, you are out of luck. As pressure mounts, it becomes uncomfortable. Then you stop being able to hear properly because your ears feel plugged. Nothing fixes it. Then, as air still cannot fill in the relative void in your ears, it starts pushing more and more against anything that stands in the way --- such as your eardrums. Thus, now you are in pain.
Once on the ground, your ears are still clogged. But not so fast my friend, you still have a 10 hour plane ride to go. So once more, up there you feel great, and when you come down this time is extra painful because the pilot goes down much quicker. Lovely.
The doctor advised me that this abuse could have easily resulted in busted ear drums (hence your ear bones and other parts are exposed to air, but more importantly to bacteria, thus the continuous infection etc --- time to heal 2 months, and perhaps you can still hear after that), or busted circular membrane (my ignorance prevents me from elaborating further on this one)...
... but that in my case, it simply meant that assorted liquids had flooded the inside of my ears. This happened between Sunday and Monday. Only today, Thursday, I can hear more or less properly. Fortunately, there is no permanent damage.
So my friend --- do not fly when congested!!!
Posted by Andrés at 10:59
Tuesday, December 19, 2006
Sunday, December 10, 2006
I will be gone for three weeks starting next Sunday. During this period, and until January 6th, the main FTP server will be shut down. However, Anthony Lander is generously providing a mirror site at this address:
The files will soon be available for download over there as well. Thank you Anthony!
Posted by Andrés at 20:17
By popular demand, I am preparing lower resolution versions of the videos so they are more hardware friendly. These new files will have their resolution cut by 4, so instead of being 960x480, they will be 480x240.
Although the resolution is lower, DivX is doing a great job of keeping the file size down while still maintaining relatively high quality. The consequence of lower resolution, however, is that the projected slide/code will become more unreadable. I am happy I read it aloud while pointing at it!
These new files, along with a .gif set of slides for the presentation Writing Truly Efficient Smalltalk (so you don't need powerpoint), will be available for download within a couple hours or so.
Posted by Andrés at 20:05
I have come to think that the 20-80 rule does not help us get in a mood in which we can do our jobs most effectively. Only when 100% of the features are implemented, we can call ourselves successful. But obviously, implementing 100% of the features is going to take 100% of the time. Who cares which features take more or less time, or which ones are fun or boring to implement?
Therefore: whining forbidden --- go back to work!
Posted by Andrés at 15:57
My mom is a professional pianist, and she insists that for her music does not translate into words. However, when I listen to things she suggests, I find no problem in coming up with some lyrics or explanations for what I am listening to.
For example, I described the Spanish Dance no. 5 by Granados in terms of "people carrying out their duties, feeling honored in their obligation to do so, and yet... longing for the times of fun they desire, even though they know such entertainment is to be unavailable to them".
I commented this to Blaine a long time ago, and he urged me to blog about the explanation I came up with. I do not think it's perfect... it might be horribly wrong... but hopefully it is of use, and if it turns out to be defective hopefully a helpful reader will gracefully provide a proper correction.
So what is this ability, how does it work, and why could it matter? Well since structured language is left brain work, and emotions are right brain work, it seems to me that to put music into words or viceversa, one has to have good bandwidth between the two hemispheres. In other words, it appears to works best when there is a detailed map between certain areas of the left hemisphere the activation patterns of which result in certain words, and certain areas of the right hemisphere the activation patterns of which are caused by the music being listened to.
That leaves the matter of why does this matter at all. Well how am I supposed to feel that a program that I write is beatiful if I do not have a map between the part of the right hemisphere that evaluates beauty and the part of the left hemisphere that produces Smalltalk code? How could I tell, before writing it, that a certain approach is attractive or repulsive? How could I use this subjective sense of art to guide the rational process of writing programs, so that the proper decisions can be made when there are many choices available? Even more profoundly: how would I know if the options I have are enough, or acceptable at all as a whole?
I went to a concert a couple nights ago, and well... some of the compositions made me remember chimpanzees: when they talk with sign language, their sentences are very short and only use a few words. The longest sentence on record, spoken by a chimpanzee, has 14 words and it goes more or less like this: "orange orange give me orange give me orange give give me orange orange give me!". And in the same way that some of the compositions did not have elaborate musical phrases, each of the bars in the music sheet felt like a sentence consisting of a single word. Sad? Set of minor key chords. And what do the lyrics say? This: "... sadness this that...". Well, of course!
But the fact that the music is being literal towards the text is not what I found deficient. After all, great composers such as Ravel have produced very literal music such as the first piece of Sheherazade, called Asia. But what sets Ravel apart is that his musical phrases last for several seconds. His musical sentences have many words, and they are connected to each other artfully. If you have not listened Sheherazade, I'd suggest that you get a recording sung by Jessee Norman... most enjoyable.
And then, how does that relate to code, what I think is one of my arts? Indeed: I write code using a thesaurus. I look for the right words when I do not know them. I do not use selectors that denote meaning vaguely. I only write methods and classes after long consideration. I try to do most of the work, the design of the pieces so that the system has interesting emerging properties, in my mind --- before I press any key on the keyboard.
This, finally, brings me to the conclusion. If, in order to be artful, one has to use thinking bandwidth properly and efficiently, then how should we work to begin with? Let's play the renaming game once more. Think about how modern computers work, and what affects their performance. In short, the following bullets summarize most of the patterns we observe. The closer the information needed to carry out an operation is to the place where the operation is performed, then:
- the less room there is to store such information, and
- the faster the execution of the operations will become.
Then, let's rename things and see what happens. First, CPU becomes brain. Registers become the 7 plus minus 2 slots of scratch ram. Caches become our short term memory. Ram becomes our mid term memory. Hard drives etc become our long term memory. And, critically, we do not even have ethernet. We have these serial ports to communicate with our environment. Thus, if we are to be productive, we need to be truly efficient when communicating with our surroundings!
That immediately leads to concluding that most of the work should be done in our minds. When you first think of a problem, the worst thing you can do is to immediately write code. Because guess what: it will force you to think through your serial ports. Hacking things together, a calculated tradeoff between quality and speed, is caused by our first action: to write code we know to be deficient.
No, my friend. Think it all up in your mind, and when you have stable parts that tend to stay fixed as you design more and more of the solution, then write those parts only. Things that change should stay as close as possible to your cpu, in the 7 plus minus 2 scratch ram slots. It is almost obvious to state, but aren't computers inefficient when they thrash the paging file? Imagine now thrashing the paging file via a serial port. No way!
Finally, which language are you going to use through your serial ports? Something that makes you write tons and tons of syntax sugar? Of course not, because that will make you pervasively inefficient! It is bad enough that we have to communicate over a serial port. Why do we need to saturate the serial port and fool ourselves into thinking 100% average utilization is progress?
Excuse me, but have you seen the latest incarnations of generics? No, no, and one thousand times no. Why do I need to replicate everything I am thinking about over the serial port? That will also make me inefficient! Sorry man, I do not want a journaling thought system running on a serial port. Not only it is slow --- then it also has to have error correction. And when that is not enough, then I will also need version control of the external journaling thought system. All this overhead over an extremely low bandwidth connection causes me to waste time into things that have nothing to do with thinking about my problem!
So, my friend. Give me something like Smalltalk, where if I want generics I just implement a message and let the generic function be defined implicitly by means of polymorphism. That is so much cheaper and less costly! And yet, the access to the whole generic function can be accessed on demand via a menu item called implementors. That is it, no extra costs, and no overloading of my serial ports.
Then, with all the free time I will have when I do not have to stare at the serial port traffic completion dialog crawling from 0% to 100%, I will have the time and energy to do something much more valuable: make sure that the stable code that coalesces from the fog in my mind is both beautiful in terms of aesthetics, and beautiful in terms of its ability to withstand change. Only in my mind, with all the important things sitting in scratch ram slots and memory caches, I will be able to do that efficiently.
If code can resist change, then it is less likely that I will have to rewrite later on. And if I can find tiny code that is beautiful, artfully written in all the ways I described, then you can see what is going to be the development efficiency of version 5.0.
As the title of this post suggests, addressing these issues properly is a matter of bandwidth.
Posted by Andrés at 14:55
Monday, December 04, 2006
I just read* about a judge that, in a case of manslaughter due to negligence while driving a vehicle, reduced the amount of damages to be awarded to the family of the 19 year old deceased by a factor of 7.5 --- exclusively because the dead teenager was born poor, and "obviously" he was not worth as much as someone else born to a richer family.
But it gets better. What were some of the reasons given by the plaintiffs as to why damages similar to those of other equivalent cases should have been awarded? Not because of the loss of life, nono. Because now, after adopting the kid and bringing him up, the investment of the parents would not be rewarded with their son's potential help after they retire and stop working.
Gross, man... absolutely gross.
And where did this happen, you ask? In the lovely country where I was born, Argentina. There is talk already about sanctions to be applied to the judges on the grounds of discrimination. But as much as I want proper punishment to become true and proper damages to be awarded in a non discriminatory manner, I also wish loss of life was considered to be more important than getting money from your sons when you're old. Is cash what matters the most, even when it comes to your kids being dead or alive?
Alas, this kind of thinking is so pervasively common these days. Have no decent job? Then you don't have health insurance either. Can't pay under minimum wage? Move the jobs to a more poor country (and still do not provide decent benefits to your slaves I mean staff). Poor country with a lot of oil**? Hmmm...
No, my friend. We are not any better.
* Know Spanish? Here is the link.
** Name at least three.
Posted by Andrés at 00:17
Sunday, December 03, 2006
The 17.3gb file is now sitting on my main computer hard drive. From there, it needs to go to the much faster laptop for editing and compression. Thus, the footage from NYC's Smalltalk User Group meeting this last Wednesday should be available in the FTP within about 4 to 5 hours. Stay tuned!
Update: it is taking longer than expected, but it will be worth it. Tomorrow is the day.
Posted by Andrés at 16:58
Saturday, December 02, 2006
So here I am, and about a year ago I received this silly PSE&G piece of paper with my bill. It has a beautiful bird picture on the green background front. On the back, there are some numbers and things I'd like to share with you today.
First comes the energy source, from where one finds that 3.54% of the energy produced came from renewable sources. The big contributors are nuclear at 45.17%, and coal at 38.42%.
Then comes another tab called Air Emissions. It shows that PSE&G is at 96% of COx emissions, 100% of NOx emissions, and 281% of SOx emissions --- where 100% is this "NJ benchmark". These figures are shown in a bar graph, which has two horizontal lines. One is marked 0%, the other one is marked 100%. None of the bars match the 100% line, which is strange because NOx is labeled as 100%.
In fact, if the figures were normalized against the graph in which they are shown, none of them would remain the same. 96% would become something like 80%, the bar labeled 100% should have to be labeled 85% or so, and the 281% bar would be about 125%. Lies, lies, and more lies. Right in our face. This so called graph should get an F in K-12 school.
Finally, comes the tab called Energy Conservation. It reads "Electricity generation and associated air emissions avoided through PSE&G's investments in conservation measures". On the right, we can read:
- Avoided generation: 0 KWh.
- Avoided emissions: 0 COx, NOx and SOx tons.
The graph, in particular, is not a bug. This is not the first time it happens. In fact, a previous post of mine shows the graph in full detail. It has not changed one bit, except for the figures.
I am reminded of all the people who dream of running an empire through their work, of having all this importance in the speck of dust we call Earth, of somehow having the right to assume this is a distinguished place in all of creation or whatever else.
I have news for you: this is no way to run an empire, and we will bankrupt very soon because of things like this graph. Because when the same kind of thinking is applied to slides at NASA, we get the Columbia disaster. When the same kind of hubris is employed at nuclear plants, we get Chernobyl and Three Mile Island. When the same kind of irrationality is used to run the world, we get mass murder.
And we are all accomplices, because we know these things happen but decide to look away. We just find emotional excuses as to why this is fine or sometimes just acceptable, and move on. Hopefully, our negligence-induced death will be quick and painless. It doesn't look like we will get even that.
Regardless of how miserable the situation looks like, however, the truth remains: that this universe is capable of self observation. If by our actions we prove that we do not deserve that ability, because given the choice we decide to look more towards our belly button, towards our ego, and towards all the fantasies about ourselves which we will defend with religious faith and if necessary to countless meaningless deaths of others, then hey... the reality in which we live is even better. Our own defects, those things we know very well despite our best efforts to deny their existence, will interact with the environment in which we live and lead us astray into mass suicide.
The universe, like the monolith beings of 2001, could not care less. So cruel, so merciless, so inappropriate for us spoiled children to tinker with... and yet, so extraordinarily beautiful because of exactly the same reasons...
Posted by Andrés at 13:22