Saturday, October 22, 2005
Monday, October 03, 2005
The MIT Media Lab has launched a new research initiative to develop a $100 laptop—a technology that could revolutionize how we educate the world's children. To achieve this goal, a new, non-profit association, One Laptop per Child (OLPC), has been created. The initiative was first announced by Nicholas Negroponte, Lab chairman and co-founder, at the World Economic Forum at Davos, Switzerland in January 2005.
I have been a fan of the Media Lab since I was 12 years old, and I am happy they are coming with such an ambitious project. I see this is the realization of a dream for Nicholas Negroponte, Seymour Papert and for Alan Kay. I hope they will have a great success.
What Negroponte says about taking the fat out of the system is right: "Two-thirds of their software is used to manage the other third, which mostly does the same functions nine different ways." I hope the project will get massive support and will trigger a race for sleekness across the software industry.
Probably because of the lack of deep technical detail in the announcements I have read so far, there a few concerns in my mind:
- Hardware expandability: They say the laptop is not going to have much storage space. I hope it will be easy to expand storage with off-the-shelf hardware. The USB ports are a good start.
- Software extensibility: They speak about a P2P mesh developed by the Media Lab. They also say the computer is not going to be available to individuals. They will run Linux, and while Linux is widely available, there is a binary compatibility problem among different versions of Linux. I wonder how easy it will be to target the computer for software writers.
- Software platform lock-in: You can easily see what the commercial companies sponsoring the initiative, including Red Hat and Google, are looking for with this project: A big PR campaign, and a huge captive user base. I wish the software story were more open. Don’t take me wrong. I want this project to be feasible. I just don’t like the idea of any government paying hundreds of million of dollars to force those brands through children throats all around the world. It smells as something either fascist or corrupt or both things at the same time. It would be the same if Bill Gates funded the program. This concern gets addressed if there is choice.
- One-way globalization: I happen not to fully understand the globalization phenomena, although I have heard assertions from many people that think they do. The fact is globalization sometimes seems to be a one-way path. In poor countries, it usually takes more from people than what it gives to them, most likely because they are less prepared for the exposition. A computer, even if it is the most powerful thinking tool of all times, can also be used as a broadcast, one-way device. What originated as one of the most massive empowerment initiatives of all times could end up being the final stab for local cultures and become a powerful tool of oppression. Anyway, I know the minds behind the project would rather cut their hands than do that damage.
In my history of Sparkle I mentioned I had worked on ToolBook. That solicited this comment:Asymetrix's ToolBook? Wow, that was so ahead of its time! Just make sure Sparkle runs faster! :P Sorry, could not resist. I am sure Sparkle will rock.
We are currently in a performance milestone on Sparkle, dealing with our obvious perf problems and reporting real and potential Avalon perf problems to that team. The good news is overall perf is good. Startup is fine, working set is fine, but as these things go we have individual areas that don't scale well or just are awful. In Avalon you build your UI compositionally by creating Templates that generate elements for the structure. For example, rather than a Button having a Render() method that draws a bunch of rounded rectangles and text, you create a Template of primitive Shape and Text Elements, include a layout container like a Grid or Canvas and every time the system sees a Button it stamps out a copy of all those elements. Elements are not free however, and if you aren't careful with your Templates they can explode into huge structures without you noticing. This is a working set hit and layout and render takes longer. We added commands to our diagnostic menu that let us count the number of elements in different parts of the tree and dump them for further study. When we started perf work before the PDC Sparkle would startup with over 8000 elements in its UI. Today that is down to 3000 with no difference in the look and feel. I expect this number to improve considerably this week and more next as more changes come in. We virtualized some things and just got more careful in a bunch of places.
Now, let me tell you, I am trully ashamed. Did you see Sparkle running? If not, go to see the Channel9 video? It is one of those things that make me drool.
This is my answer to John, I wrote originally in his blog comments:
John, all this made me blush a great deal, however I am happy my comment led you to speak about Sparkle’s performance characteristics. I am also glad you are making so much progress. I saw in the videos on Channel9, and I think Sparkle already looked VERY impressive before the PDC.
Now, I have one concern: Not that we are all going to write such a complex UIs, but it appears that making a sophisticated Avalon application reach good performance takes much tuning.
Now, I am a newbie, but I assume that by virtualization you mean that you create and dispose (perhaps reuse?) UI elements whenever they become visible or hidden. Wouldn’t it be nice that this kind of optimization were performed by Avalon itself? This could be especially useful, since I think there is a balance to be kept among working set (number of elements) and creation-destruction rate.
And thanks for the inside story of ToolBook. I didn't use the product a lot, but I have a friend that did, and I always had a great respect for the technology.