Lonely Cactus

A life of punk, code and apathy

Wednesday, January 09, 2008

All Politics is Local

The candidates are still campaigning, but, as usual, none are addressing what I feel are important issues.

Issue: with the subprime mortgage meltdown, the huge federal deficits, and the stockpile of dollars in the developing world, our government and our banks have gone, hat in hand, to China and others to beg them for bailout cash. As China owns more and more of America, it has the right to demand a greater voice in our economic policy. Fine. So be it. China is smart enough to know how to steer this into something approximately mutually beneficial.

What concerns me, though, is that China has a poor record in freedom of the press, of speech, and of religion. If we were something other than a decadent debtor nation, we might be able to use our influence to suggest that China might open up a bit more on those issues. But now, we Americans have little influence in that sphere because their influence on our economic policy is more important to the average American than our influence in China's governmental policy is to the average Chinese.

Issue: black kids killing black kids.

Issue: paving over farmland to make low density housing.

Issue: population control. Zero-population growth. If our economy is entirely dependent on a growth model, where there will always be a need for new immigrant pseudo-slaves, then we will expect that population must increase without limit. That one fact makes any discussion of greenhouse gases, global warming, or pollution control moot. It darkens any possibility for increases in organic farming, for increases in non-polluting electricity generation. Traffic will continue to worsen. Quality of life will continue to degrade. Further pressures on limited water in the South-West.

Thus, if we do believe in globalization, we should be concentrating on what we can do well with the mere 300 million people that we have, and should let die those industries that require the immigrant pseudo-slaves.

It is a labor issue, I guess. Business has already offshored most jobs that can be done cheaper and better by other nations. Fine. So be it. But now business continues to demand that those remaining jobs that can't be offshored need to be "domestically offshored" by using cheap foreign labor to do work here. Wages for the working class never increase because the supply of working class labor is essentially infinite.

Issue: we need to start building new nuclear plants now. (This is the main reason I can't support Edwards.)

I could go on, but, it is all too depressing.

Friday, January 04, 2008

Cygwin NCurses Quirks

Whilst trying to push GuCu, my Guile/NCurses library, into something more like a first beta, I tried getting it to run on both my boxen: one Slackware, one Windows with Cygwin. It has been a challenge.

First, NCurses 5.6 won't build as a DLL on Cygwin out of the box. The proscriptive first step, upgrading the automake/autoconf toolchain is a no-go, since NCurses uses a private fork of autoconf and neglects automake altogether. I thought for a second to figure it out myself, but, it looked difficult to debug.

So, retreating to the distributed Cygwin/NCurses 5.5, I find that it doesn't have the wide curses functions installed, so I commence the annoying job of separating GuCu into a wide and narrow version, which begins the automake/autoconf difficulty.

Then, I find that, on Cygwin, the wide character C types, wchar_t and wint_t, are not identical, but, actually are 16 bit and 32 bit respectively. I know that the standard says that they can differ, but, I never though someone would actually do that. Some of the NCurses functions are wchar_t and others are wint_t, so I had to go back to my hacked FFI, which treated them as identical.

On top of that, the distributed Ncurses 5.5 has a bug w.r.t to the handling of the acs_map array. (I'd noticed the bug before, when trying to build libRUIN, but, I mistakenly thought that it was RUIN's fault.) The work-around is pretty simple. Just throw this into any file using the ACS_ constants.


#ifdef CYGWIN_CURSES_BUG_FIX
/* work around bug in Cygwin's ancient NCurses */
extern NCURSES_EXPORT_VAR(chtype*) _nc_acs_map(void);
#define acs_map (_nc_acs_map())
#endif


And with that, make check is good to go. Distcheck fails hard, though, because of some mysterious texinfo.tex parsing problem that doesn't occur on GNU/Linux.

And here I thought I was just going to copy it over and "./configure && make".

Sigh.