Solipsism Gradient

Rainer Brockerhoff’s blog

Browsing Posts tagged Brasil

Comecei a repostar em tópico separado as aventuras de Zé Megabyte, uma história em quadrinhos que publiquei na década de 80.

This may come as a surprise to US-based readers, but Mac OS X daylight saving time (DST) algorithms are broken. (Yes, I’ll be filing a bug as soon as I have all the information together.)

Basically, the BSD underpinnings of Mac OS X use the standard timezone files in /usr/share/zoneinfo. There’s a symbolic link at /etc/localtime which points to the correct TZ file; in my case, /usr/share/zoneinfo/Brazil/East. So far so good…

Last weekend all Macs in Brazil running Mac OS X suddenly shifted one hour ahead. Apparently no one had thought of telling Apple icon_wink.gif that the official start of DST in Brazil had been postponed from Oct. 13 to Nov. 3. No one’s sure exactly why; it probably had to do with the presidential elections, or the unseasonably hot weather, or the dropping exchange rate, or all of those…

Naturally, I thought this would be simple to fix; just fix the TZ source file, recompile it with zic, distribute a patch, and presto. Little did I know. First of all, getting hold of the original TZ source file wasn’t easy. The updated files are supposed to be available at ftp://elsie.nci.nih.gov/pub/, which seems to be permanently down. Googling for the files yielded only a few hits, most of which hadn’t been updated since 1999 or 2000.

The obvious place to find them should have been Apple’s Darwin site. However, there’s no easy index to find which files are in which source module, and I had neither time nor bandwidth to download the whole 600+MB thing. Looking in Libc and a dozen other likely places yielded nothing.

I finally chose one of the latest files I could find and updated it according to the government’s official site. There were many small errors, but finally it seemed to be working and I published a patch.

A few days later some readers sent me mail, complaining that the Finder’s timestamps were being set one hour ahead. Entourage was also setting appointments one hour ahead, and similar reports came in for some other Carbon applications.

I’m still investigating this, but apparently the Finder (and some other Carbon apps) still use the old-style APIs to convert UTC to local time. These APIs, instead of using the BSD tables, apparently still use some classic database. Needless to say, there seems to be no easy method for synching this database with the BSD information…

One further problem is that the classic database is using an outdated rule of thumb for Brazil: DST is supposed to start on the first Sunday in October. That has indeed been the case for a couple of years, but not lately… anyway, Brazil is one of those countries where the actual DST dates are set anew every year by government decree. So any such rule of thumb will be more times wrong than right.

Unfortunately, the standard BSD TZ files are in a binary format. This is clearly one place where Apple should break with the standard and go to XML files. Standard Unix tools shouldn’t read those files directly anyway, as there’s an API to get specific information from them.

Last night I did a check on many well-known timezone sites. Most of them still have the old, incorrect, Oct. 13 date stored and therefore incorrectly tell users that DST is active in Brazil. A few still use the “first Sunday in October” rule and therefore have been wrong since Oct. 6! Only one lone site had correct information. All sites, without fail, are applying DST to all 4 of Brazil’s timezones, which is also wrong; only the Brazil/East zone applies DST (some states are exceptions – rarely the same ones).

The same problem, of course, hit many Internet provider’s servers, as they mostly use Linux. The standard fix has usually been to manually set the server’s clock, instead of fixing the TZ data. Those few servers that synch to time servers have to switch timezones instead. These quick-and-dirty fixes further confuses matters, as some software which explicitly checks for DST will continue to show the wrong time.

Finally, there seems to be a large-scale misconception that there are no TZ tables inside each computer, and that DST changes are broadcast by time servers; some people wrote me complaining that they had checked out several time servers, and that even the Brazilian servers were wrong! Of course, that’s not the case; time servers broadcast UTC time and this is converted to local time inside each computer.

Update: It seems that two routines in the Date&Time utilities, which convert between Local time and UTC, use fixed tables built into the CarbonCore framework executable, instead of the TZ tables. icon_twisted.gif

I’ll be updating this post as I find out more clues… stay tuned!

O horário de verão no Brasil foi alterado na última hora, como sempre acontece. Pegue o pacote de atualização aqui! Se você prefere fazer pelo Terminal, use esse arquivo fonte (instruções inclusas).

Confira com o site do Governo, por via das dúvidas…

I’m at the Macmania office in São Paulo, here for a 3-day visit. The #100 issue of the magazine is just coming out, and they’re throwing a party next Thursday. Even though it supposedly will be one of those badly-lit-with-loud-music affairs, it’ll be a chance to meet most of the gang in the flesh – and, of course, some of the cover models will be there… :P

Speaking of covers, #100 has two covers for the price of one! See them here and here.

I’m also here to finish my chapters of a book about Mac OS X. I wrote most of those months ago, but now, with Jaguar out, everything must be revised.

However, before diving into that I found a must-read link to Richard Thieme’s article Real Hacking Rules!. Simply marvelous. Here are some quotes:

…hacking [is] practice for transplanetary life in the 21st century.

In essence, hacking is a way of thinking about complex systems.

Hacking is knowing how to discern or retrieve information beyond that which is designed for official consumption.

Glenn Fleishman’s 802.11b/Wi-Fi News pointed me at an interesting item about Wi-Fi in Brazil:

Alan Reiter tells how he spent a couple of weeks in Brazil talking about wireless at “Mobile Corporate” conferences. Be sure to read his later entries too.

One of his articles links to Eduardo Prado’s Smart Convergence blog, which I’ll read in more detail later. It seems there are good business opportunities for wireless in Brazil, but with the recent devaluations of the Real, investing in imported technology is tough.

Here in Belo Horizonte, a 2.5 megapeople city, Wi-Fi seems virtually unknown. My favorite networking shop, Deltatronic, has just an access point and a couple of wireless PCMCIA cards from H-Net, and the salesman didn’t know how many they had sold (if any).

I did some wardriving last weekend, using MacStumbler, and couldn’t find a single network. Of course, buildings here are concrete and brick, so there is less chance of leakage… I couldn’t see my own network from the street, even though my access point is mounted on an outside wall.

A company called Pointer (couldn’t find the URL) makes wireless connections available in several Brazilian airports. I tried it out in June at the São Paulo/Guarulhos international airport. Any access is first diverted to a log-in page where you have to give a credit card number. I can’t recall if they mentioned a price, but I didn’t go further icon_wink.gif

Photos licensed by Creative Commons license. Unless otherwise noted, content © 2002-2012 by Rainer Brockerhoff. Iravan child theme by Rainer Brockerhoff, based on Arjuna-X, a WordPress Theme by SRS Solutions. jQuery UI based on Aristo.