October 29th, 2004 § Comments Off § permalink
The rate of technological change now is such that modernization proceeds more chaotically than ever, and with every flip of the clock cycle, the whole world’s reality looks more and more like Brazil’s: a high-contrast, high-contact confusion of microcultures and inequalities. What Gil has learned from that reality is the same thing any country looking for an edge in the coming century might do well to learn: You do yourself no good by trying to control the confusion. You grow, instead, by letting it in. You open the cultural conversation to all comers. You loosen the reins on technical and scientific knowledge and let it wander, from the university to the slum and back. You build your songs out of whatever washes up on shore and then you throw them out to sea again to see what somebody else makes of them. You tropicalize.
Wired 12.11 is featuring an article by Julian Dibell about the raise of the open source movement in Brazil, my own country. The article, We Pledge Allegiance to the Penguin, is a thoughtful look at the motives that are moving Brazil to take a strong position in the open source community.
I can say, without reservations, that this article is one of the best looks I’ve seen on the problems and promises of open source for Brazil, and what it means economically, politically, and socially for the country both on its internal and external landscapes. In fact, the article is talking about much more than open souce in software alone. It’s about intellectual property, cultural changes, and mobilization. For example, Dibell analyses an interesting connection between one of the strongest cultural movements in the country, tropicalismo, and the roots of the open source movement here, tracing the mindset that has been leading the country down the open source path. He also talks about the problems facing the moviment, like Microsoft’s lobbying against it, and the resistance of traditional media to the changes in the views on intellectual property.
All in all, it’s required reading for anyone trying to understand what’s happening here on that arena, and what is looming in the future.
October 29th, 2004 § Comments Off § permalink
Apologies for the spotty service of the past day.
My hosting provider renumbered the IP addresses of a bunch of machines hosted by them, including mine. They provided simple instructions to help admins effect the change, but I managed to follow them incorrectly, resulting in DNS problems.
I also have an unidentified problem in my Apache installation that it’s causing it to die abruptly. I have not found the cause of the problem yet so if the site is down, you know who to blame.
October 26th, 2004 § Comments Off § permalink
Thinking Machine is an artificial intelligence program that plays chess, and creates a visual map of the moves it’s considering while choosing the next one. The thousands of calculated moves become “lines of force” on the chessboard, generating interesting graphics. The program also shows “waves of force” radiating from the pieces, representing their influence. The result is a complex mosaic of the calculated positions. Very cool stuff.
(via Nemo Nox)
October 20th, 2004 § Comments Off § permalink
Regular readers of this blog know that I’m a huge fan of Stephen R. Donaldson‘s writings. His Covenant Chronicles are one of the finest pieces of fantastical literature in my opinion, with a depth that rivals works like the Dune novels and exceeds even cherished books like The Lord of the Rings.
Since I read the Chronicles for the first time, I had hoped that Donaldson would write a conclusion to the saga. That wish became reality this week with the release of The Runes of the Earth, the first book of four in his The Last Chronicles of Thomas Covenant, the Unbeliever. I’ve read the first chapter (PDF) of the Prologue in his official site, and it blew me away. Few writers can capture such range of emotions and attain such a balance in their writings. If the first chapter is a guide, the book will be more than wonderful, delivering more than any fan could have dreamed of. I’m ordering it as soon as it becomes available in the bookstore I use to buy imported books here in Brazil.
The most interesting thing about Donaldson’s books is that they rarely fit any conventional genre description. Whether they are science fiction books, fantasy books, or mystery books, he always manages to break away from the mold, both in his choice of themes and in his mastery in exploring the intriguing — and often disturbing — issues that arise from those themes. It’s impossible not to react to what he writes. A passage in one of his books made me so angry that I wanted to throw the book away and stop reading. Needless to say, I finished the book and I still consider it one of his best works.
Donaldson’s official site is also a treat, featuring now a gradual interview with him that has been running for almost a year where he talks candidly about his books, his life, and his opinions about the issues he holds dear. The site also features some of his poetry and articles, interviews with him, literary analysis by him and others, and other appealing items. It’s really worth a visit — daily, of course.
Anyway, if you have not read any of his books, I highly recommend that you pick any of his series, although, in my opinion, the Chronicles are still the most interesting of them. You will not be disappointed.
October 15th, 2004 § § permalink
So Google launched its desktop search engine. I, for one, won’t be installing it. The reason, plain and simple, is that I don’t trust Google anymore. Not because of the IPO, but because Google keeps saying they still follow their “Don’t be evil” policy, but their deeds don’t show that. (Not that they need to be accountable to me, by the way.)
The Google Desktop EULA states that the program will collect non-personal information if you use it. You can opt out of this at install time or using the preferences panel later, but there’s a catch: Google desktop will install a unique identifier in your computer and will send that back to Google whether you like it or not. That unique identifier is not used if you don’t send data, but it’s there, and if the EULA changes suddenly, it’s ready to be utilized. And, even if you opt out of sending non-personal specific data, Google Desktop will still use the same cookie the other services like Google Search and Google Mail use, allowing them to correlate data on you as you use those services. It’s supposedly non-personal data, but Google Mail seems a bit too personal too me.
You may call me a paranoid, but I don’t like the way Google is using all this information. I use Google Mail sporadically, but not for important e-mail, be it work-related or personal. Although the Google Mail EULA changed after some complaints, it was too strange at the beginning to make me comfortable with trusting Google with my e-mail.
And there’s also Orkut, which has its own strange EULA too.
I probably can block Google Desktop from sending messages back to the mother ship at the firewall level, but I’m not installing it on principle. The recent problem with the Chinese version of Google News clearly illustrates the problems I see with the company, and that’s why I don’t trust them anymore.
Anyway, Google doesn’t own me anything. More than that, they’re a public company now, with shareholders that will demand profits (whatever their claims), and they may do whatever they want. But that doesn’t mean I will blindly use any kind of product they have, even if they give it away for free, just because they used to not be evil.
But, I will have to confess: I never trusted Google. Its cookies have been blocked on my browser for an long as I can remember. It’s just that my Google trustiness level hit another low.
October 11th, 2004 § § permalink
So far, there seems to be no easy solution to the problem, although, in an update to his first post, Kaminski describes some possibilities of improvement suggested by the blog readers.
Another interesting possibility I came across in an unrelated page is adapting HTML Tidy to work with ASP.NET pages. In a blog entry on the Borland’s blogs, Steve Trefethen, a Delphi and C# Builder engineer, describes how Borland worked to integrate HTML Tidy in the Borland C# Builder IDE, and the problems they are still facing in this integration with regards to ASP.NET. Trefethen is calling people to help making HTML Tidy work with ASP.NET, something that would potentially benefit a lot of developers.
It’s a good idea, in my opinion, and it would be nice to see the community work on it. Since, as Trefethen points, HTML Tidy already supports languages like PHP and old-school ASP, supporting ASP.NET may be feasible.
There’s still another technique that can be applied to ASP.NET: run HTML as an output filter for ASP.NET pages. I didn’t try it, but since ASP.NET allows the page result to be captured, it would trivial to call HTML Tidy to clean the resulting HTML. However, considering ASP.NET’s dependency on special attributes, that would likely still require that some changes be made to HTML Tidy. But it would be potentially a better alternative to the problem since it would clean the final HTML generated by all page tags, instead of working only on the eventual HTML that may exist among ASP.NET tags.
Anyway, as long as ASP.NET generates bad markup, it will prevent the resulting page from achieving true acessibility and portability so any solution is welcome. Of course, Microsoft is also welcome to fix ASP.NET by making it generate standards-compatible markup. Somehow, I don’t see that happening soon, which makes a community-based solution even more attractive.
October 11th, 2004 § § permalink
While I was playing with Ruby, reading its documentation and the free excerpts of Programming Ruby, I came across a really interesting example of the language’s power:
@calculatedValue = self.runLongCalculation
This technique, very useful in a many contexts, allows a method to redefine itself. In the example above, when the method is called for the first time, it changes its own definition to return the value of a instance variable and assigns a value to that variable. The next invocations of the method will, of course, use its redefined version.
The book shows a more interesting and sophisticated example, but even the example above can show how Ruby allows a programmer to express exactly what he wants in a clear way.
October 7th, 2004 § § permalink
Almost a year ago, an employee of a university contacted me with a proposal. He had found me by way of a discussion group I had created on Yahoo! Groups about SCORM, and wanted me to help them to sort some problems in a SCORM-compliant course they were developing for a client of theirs.
At first, I was not willing to do the job. I was quite busy at the time, and I didn’t like the way I had been approached about the project. After long discussions via instant messaging (the university was located in another state, Rio), I accepted the job. The person contacting me had offered better conditions to convince me, but I was still unsure. But, against my best judgment, I did indeed accept the job.
After two months of sporadic work (communication problems on their part) the job was done. I delivered the code, as we had agreed, and they tested it. We solved a few issues that arose from incorrect specifications, despite the continuing communication problems, and they finally accepted the job as done too.
That’s when my troubles began. A couple weeks passed, and I couldn’t get any information about payment. After some prodding on my part, they said they would only pay if I sent them an invoice from an established company, something I had no access to at the time.
After attempting to convince them to accept any other legal form of invoice, without success, I capitulated and started to look at the task of finding what they wanted. I spent one month consulting my friends, until one them offered to send the invoice to me as he had his own company. I went to Rio in the following week, for another project, and left the invoice with a friend of mine, who went to university and delivered it into competent hands. Two additional months had gone by.
I waited a couple days after I returned from Rio and called the university. They didn’t acknowledge its receipt — even though my friend had delivered it directly to the guy I was talking to. To make things worse, the person who had contacted my with the proposal in first place had left the university, and I had no one else who could say I had delivered the code.
After another month-long wait, calling them on the cell phone almost every day — and spending 5% of the invoice value in the calls — they finally said they had the invoice, and that it was on its way to the accounting department, where I thought it already was. Hearing those news, I though I would finally see the money. I was badly mistaken.
Another month passed and nothing else happened. I tried to call them again, but the person I was supposed to talk too was never available, and none of the other persons I managed to talk to seemed to know what I was talking about. It was as if the invoice had disappeared again.
I was almost giving up when my friend, who had sent the invoice in first place, offered to help me. I accepted his offer, and he started to call them. At first, he was no more successful than I was. They kept avoiding him, and a couple weeks more went by. When my friend realized they were avoiding him, he started to pressure them. It took him a couple more calls, but they finally decided to pay the bill. But they would wire the money. Instead they would send a cheque, payable only to my friend’s company. The new problem: my friend’s company had no checking account.
I was beginning to believe I had built something upon an Indian cemetery, and had been cursed as a result. But my friend said he would solve the problem. The cheque was sent from Rio, and arrived a couple days later. My friend managed to convince the bank manager to cash the cheque upon its endorsement by him. My friend proceeded to print a common template he used for endorsement on the back of the cheque. When he was doing it, the printer jammed and ripped the cheque in two.
The invoice really didn’t want itself paid. But my friend talked again to the bank manager, and the manager said he would try to cash the cheque anyway. The cheque was sent to the bank, and the cashiers went on a strike that day. That, ironically, was the very thing that enabled the cheque to be cashed, since they didn’t verify the cheque condition as thoroughly as they would have done otherwise.
A week ago, almost a year after I was first contacted, the money appeared on my account. Since then, I’m convinced that invoice was surely from hell. It’s the only explanation for so much trouble.
October 3rd, 2004 § Comments Off § permalink
Vivisimo has launched a new search engine called Clusty.
Clusty’s differential is that it allows users to “cluster” search results by topic, source or URL. In the few tests I did, grouping by topic seems to be the most useful method. I don’t know if the results returned are really relevant (they seem to be), and I guess that will require some use to assess. Anyway, it looks really promising.
October 1st, 2004 § § permalink
A reader proposed me the following question:
You are a newbie Windows programmer, although you have a lot of a general programming experience. You want to develop simple Windows GUI applications that will run on Windows 2000 or XP. What would you do? It seems to me that there is no really simple answer.
That’s a really hard question. GUI development is fundamentally different from server development, and there are a lot of things to consider when you decide to go down this path. As he himself pointed out, there seems to be no easy answer.
As I thought about the issue, it occurred to me that all desktop environments on all operating systems I’ve used share those problems. In fact, development for some environments like Linux is even harder than developing for Windows because those environments have more complex GUI architectures, which are flexible and powerful but also lack standardization.
I believe there are two aspects in this issue: first, the development environment itself, that is, the IDE and/or the language and supporting tools in which the program will be written; and second, the toolkit that will be used to interface with the platform’s native GUI or that will emulate it.
Most of the times, those two aspects need to be considered simultaneously because what you choose to solve one of them will limit the choices you have for solving the other. For example, if you decide to develop for Win32 with Borland’s Delphi, you are limited to Borland’s VCL toolkit. (There’s also CLX but it’s not half as useful and mature as the VCL.) On the other hand, if you choose to develop using Python, will are free to pick among a dozen of competing toolkits, each with their relative merits and drawbacks.
Regardless of languages and environments, however, there are some core criteria that must be considered when choosing a new toolkit for GUI development. Some of them are:
- Speed of development
- Run-time performance
- Visual identity
- Easy of deployment
» Read the rest of this entry «