Beijing, August 2008

Security at this year’s Olympic Games in Beijing was impressive, at least to my five-year old son, _L_: one of the first things he built with his limited supply of Lego was a security checkpoint. I am less impressed.

It started in the airport. They wanted to scan all carry-on luggage upon arrival. I have no idea what they were looking for, but the scanning took place after people collected their checked luggage and had had a long time to move things back and forth thus making the scan effectively optional and thus pointless.

All subway entrances and all sporting venues had checks too, so authorities must have hired and trained thousands of new security people. All these people have no real experience and are constrained by having to maintain the flow of people uninterrupted. Just like when TSA was created, that makes for lousy security.

For example, when entering the venue for the US-China basketball game — where the US President was expected to attend — I arrive with my bag and camera. The bag goes into a scanner and gets hand-checked afterwards. Apart from a lot of fuss over an epipen, nothing happens. My camera comes with me through the metal detector which, of course, beeps. I get hand scanned. In other words, I just walked through with three pounds of unscanned equipment that looks like a camera! (It happens to be a camera, but how could they know?) That same equipment I later pointed at George and got a few pictures of him looking rather silly. Using the same tickets I could have walked through several times, so the size of a camera is not a limitation.

At another venue I accidentally brought a bottle of water with me. As you may know, water is a substance that is dangerous at sporting events, but not in subways. When found at a security checkpoint for a sporting venue it will be confiscated, but as a side effect, the security officer who found it will be so happy with himself that nothing else you carry will be checked. That is humanly understandable and shows that checking for liquids in the first place probably lowers the level of security. There are simply too many false positives, i.e., cases where harmless liquids are detected. Think of that the next time you wait in line at the airport.

Also, I have noticed — both in Beijing and in airports around the world — that when I put my camera equipment into my backpack, the backpack gets hand searched. I am fairly certain that it is because the operator of the scanner just sees a pile of stuff that he cannot identify, so a hand check is in order. The backpack I use is nothing special, but happens to have a lot of compartments. Generally, when the backpack is searched they miss half the compartments unless I feel like telling them.

This is all from passive observation while minding my own business. I am not trying to probe, let alone evade, security anywhere.

Conclusion: since stuff is not blowing up left and right, either the bad guys (a) are not trying; (b) are not thinking like I do; or (c) get caught or scared off by less visible parts of the security apparatus.

Economics, Part II

I like to turn Robert’s economics articles up-side-down. They make so much more sense when you do that.

So, out there we have a set of holders of mortgage backed instruments that they got through various middle men from borrowers of poor financial strength. The current holders ought to have done their due diligence before they bought in — if they did not, we have no sympathy over their fates. So let us assume that they did.

Clearly they saw the risk of a market wide event affecting a very large number of people, lots of those being voters. Clearly they researched the history of political response to such situations. Clearly they saw the serious risk of the rules being changed underneath them. They saw that, they understood that, and surely they priced that into their bids. Thus, if the rules are changed underneath them, they are not suffering any consequence the risk of which they were not paid to take. One could go as far as saying that a lack of political intervention would be an unforeseen windfall for them. That would be a subsidy they do not deserve.

Actually, the investors likely did not have full information available, but had to rely on the representations of the financially engineering banks and the ratings institutes. Investors should have priced such a lack of knowledge in too, but might have a case against the middle men if they were defrauded.

That being said, I have not read and I do not intend to read the specifics of the proposed plans. In fact, paying attention to the promises of political candidates in right races is a waste of time — they will promise you anything. It is in their blood.


It seems like Robert has been reading too many books on economy again. Or rather, has failed to apply the necessary simple sanity checks to what he has been reading.

Authors on books on economy like simplifications and words like “equilibrium”. For example, they might discuss an equilibrium governing the hourly wages and claim that absent any floor on wages, they will find a level where everyone who wants to work is employed. The sanity check for the is the great depression period: no floor, but widespread unemployment. Conclusion: something is seriously wrong with the model or the assumptions.

Robert this time brings us this gem: “The tax on capital gains is a burden on investing. The tax lowers the returns on investment, thus discouraging investment below where it would be in equilibrium […]”.

First simplification: “equilibrium”. We do not live in a static world so assuming an equilibrium is not reasonable. Why should there be one?

Second simplification: assuming the potential investor has a choice between investing or not investing, presumably in some stock. In reality, someone with spare (or borrowed) cash has multiple choices: investing [high return; high risk], stuff the mattress [no return; sore back], put in bank [low return; high tax], etc. Notice the total lack of “not investing” as a choice. The general assumption is that the would-be investor does what is optimal (whatever that means). I don’t buy the argument that a capital gains tax makes people put more money in the mattresses.

Third simplification: the government is also not faced with a choice of imposing the tax or not imposing it. Really. Those two choices do not come with the same revenue, obviously, and the real choice is thus more between imposing the tax and not imposing combined with not building this or that highway. Or taxing elsewhere. Or borrow the balance. Or whatever. The historically aware reader will recall that lowering taxes while hand-waving and saying that revenue would go up as a consequence was proven wrong last time.

Fourth simplification: “The tax lowers the returns on investment.” That is true, but incomplete. The tax works on the loss side too and thus also lowers the risk of an investment which, presumably, encourages investment.

The conclusion of that is that we have a partial proposal whose effects have been judged by a hopelessly oversimplified model. Hence predictions on the effects are meaningless.

For the record, my income is primarily classified as capital gains. I would actually stand to make a killing if the capital gains tax went away. I am just the mouse who wants to know the price of that yummy cheese before I eat it.


_C_ managed to find a Wii at msrp locally and turned it into a Christmas gift, allegedly for the kids. We have all been playing all evening and I am all sore.

I feel a little bit sorry for all you guys who have to wait until Christmas morning to open the gifts, :-)

OpenSUSE 10.3 — First Impressions

I installed OpenSUSE 10.3 the other day and these are my first impressions.

Installation went smoothly — a few packages had to be manually added as usual. Emacs, for example, was not part of the default install whereas Freeciv was. I would like someone to explain that some day.

I am pretty happy with it so far, but of course I have notice something that could deserve improvements.

Package manager
I find the new gui with installed and available in different columns quite unintuitive. The old layout with one list and a install/uninstall/etc marker used much less screen real estate and left meaningful space for package description. Unrelatedly, it starts with gtk assertions:

(y2controlcenter-gnome:4204): libgnomevfs-CRITICAL **: gnome_vfs_get_uri_from_local_path: assertion `g_path_is_absolute (local_full_path)' failed
(y2controlcenter-gnome:4204): libgnomevfs-CRITICAL **: gnome_vfs_monitor_add: assertion `text_uri != NULL' failed

which probably is not a good idea.

The new version is nice, but when I first installed it, it would not start. Investigation showed that its dependency, sqlite2, was not installed, whereas sqlite3 was. I suspect a packaging problem.
Network manager
Where to start? Hmm… It still crashes left and right. I hope I don’t have to see anything about connection to network “(null)” anymore. Why does it have to wake up every second and do nothing?
Login screen
The tab key used to work to switch from login to password. Now it just selects the login name. I am not sure what that change was meant to improve.
Utterly unsuited for a machine like this. Why does Novell push this cpu/battery vacuum cleaner so hard?

Part-Time Vegetarian?

I am struggling with the concept of being a part-time vegetarian. What exactly does that mean? Perhaps even I can be considered a part-time vegetarian when I eat my corn-on-the-cob between my lobster and my steak. Trust me, I am not easily mistaken for a vegetarian!

Dependency and Rotation Redux

It does not look like I can push the dependency life cycle as far as
I had hoped. Specifically I do not think it can remain alive for a
sheet that has been deleted but still lives on in the undo queue.
Bummer. I will probably have to recreate it on undo.

On the bright side, I managed to clean up the dependency shutdown process a bit and speed up exit for large sheets.

Rotation went well, except that Excel’s semantics is even worse than I described. It turns out that the placement of text in a cell depends on whether a border — even a top or bottom border — is present.
Sick, right?

I think we do everything right for the text except for the fact that rotated text
in Excel is not clipped, but extends into neighboring cells even if
those cells have contents by themselves. I fake it by just not
clipping, but we need a new span type to get it right. (We also need to shear borders and background; given that we can point at OO-calc
and say “only partially supports rotated text”, ;-)


One of the most advanced and delicate piece of Gnumeric is the system
that tracks dependencies, i.e., keeps track of what cells depend on
what other cells. The data structure has to be able to quickly answer
questions like “what cells depend directly and indirectly on
cell A1?”. Building the structure also needs to be fast so large sheets load reasonably fast.

The most obvious choice — a simple per-cell list of
direct dependents — simply does not work well, for example when
someone enters
a formula like =MAX(A1:T50000); you probably do not want to create a
million little lists for that.

Add in dynamic dependencies — A1=”B42″ and A2=INDIRECT(A1) — and
already complicated code gets worse. (Lots of people like to
use INDIRECT even though in my experience it is always the wrong
function to use. Some of the table lookup functions are generally
conceptionally much better suited and avoid that computed-goto
style code.)

A tiny mistake and while
our test sheets may work perfectly fine, someone else’s do not.
Oh, yeah, I have been mucking with that code this weekend.

Comparing Spreadsheets

Bruce Byfield posted a comparison of three spreadsheets, namely OO-calc, Gnumeric, and KSpread.

Unfortunately he does not seem to be a spreadsheet user and the tests
he puts the programs through — while all relevant — are very basic.
It is a bit like comparing word processors only on how well they write
one-page letters. Here are some things that an in-depth review really ought to have included:

  1. Excel compatibility. He wants to compare spreadsheets for office use and he says nothing about Excel compatibility? That’s a gaping hole, in my humble opinion. In the office world you just have to be able to take an Excel file and import it and have it work by and large the same. I think Gnumeric does quite well here, particularly in the function and evaluation semantics department.
  2. Big spreadsheets. What would he have seen if he had taken one of the corporate or scientific monster spreadsheets and used them for a test? Generally, OO-calc would load the sheets albeit slowly; Gnumeric would load them faster, but not as fast as Excel; KSpread would roll over and die. The speed tests he performs is
    like testing C compilers on “Hello World”.
  3. Accuracy. If he had looked at other comparisons
    on spreadsheets
    he might have noticed that conventional wisdom is that Gnumeric’s functions compute things accurately while Excel does not. OO-calc and KSpread are still at the Excel level. And for the record, Gnumeric computes accurately not simply because we took R’s functions, but because we also heavily improved them and actively seek to return those improvements.
  4. Cross platform. OO-calc would win here because its Win32 support is still better than Gnumeric’s. But Gnumeric is getting there and unlike OO-calc (as I understand it) runs fine on 64-bit machines.
  5. Scripting. Gnumeric is lacking here. One can write new functins in Python and Perl, but that is about it. We haven’t gotten to programmatic control of the sheets yet.