Older blog entries for cinamod (starting at number 149)

Media Wars

This week, a federal appeals panel struck a blow against the FCC's ability to censor "obscene" content on television and radio. The FCC (though they may be exaggerating their case) fears that the opinion "could gut the ability of the commission to regulate any speech on television or radio".

I've never understood the FCC's prerogative when it came to regulating content for moral reasons. Nor have I understood (or agreed with) the Court's first-amendment jurisprudence when it comes to "obscenity" and "community standards".

The airwaves belong to the public. The first amendment grants us freedom of speech and freedom of expression. Case closed, as far as I'm concerned. Community standards and obscenity are noticeably absent from the Constitution - probably invented from the ether by some of those "activist judges" that today's Republicans get so up-in-arms about.

The government has already mandated that all televisions contain a V-Chip and that broadcasters rate their content according to the amount of "language", violence, sexuality, and etc. that it contains.

I am in favor of warning labels. For example, I'm quite happy that products list their ingredients and nutritional value. Whether these labels are government-mandated or come about via the "invisible hand of the market", they help make me a more informed consumer.

I am generally in favor of personal choice. True choice can only come about when you have informed choosers.

So, with these ratings (assuming that they are roughly accurate) and V-Chip-like technology, we have the ability to self-censor anything that we wouldn't want to watch (or more often, wouldn't want our progeny to watch).

So fsck community standards, and fsck the FCC. Get out of the business of fining Howard Stern and Opie and Anothony for the garbage they say on the airwaves. If FOX wants to become a hardcore pr0n channel, fine. Let them. So long as these broadcasters are required to accurately rate their content and we, their potential audience, have the ability to filter out undesirable content, I don't see the harm. (Though I also don't see the harm of a kid accidentally seeing a breast on TV our hearing a "naughty" word. But that's just me.)

The FCC should have never been permitted to police "community standards" in the first place. Maybe it was "necessary" for a while before we had V-Chip technology. But the technology has been mandated for 7 years now, and in light of this, the FCC's policing is wholly unwarranted.

The agency still does some useful things, like certifying that electronic devices don't interfere with one another. Let them do that, and get out of our radios and television sets. The government and my community have no right to legislate what I choose to see and hear, nor do they have the right to legislate what these broadcasters might wish to say (absent, perhaps, making knowingly factually inaccurate claims in order to deceive the public).

I'm headed back to the Tel Aviv area again this weekend. If any of my Israeli friends would like to meet up sometime between June 2 and June 7, email domlachowicz AT gmail DOT com.

This comes on the heels of a thoroughly enjoyable trip to Montreal this past weekend. I spent most of last Saturday lying on sunny, green Mont Royal with Ruth. On Sunday, we went to a chocolate festival in nearby Bromont. I'll have to post pictures when I get a few spare moments to myself :)

29 May 2007 (updated 29 May 2007 at 16:03 UTC) »

Late last year, my favorite restaurant in Boston was forced to close when its liquor license wasn't renewed. At the time, I was furious. What had happened is that "neighbors" of the restaurant (read: white yuppies that live 7+ blocks away) objected to the "undesirable element and noise" that the restaurant attracted in their "up-and-coming" Jamaica Plain neighborhood. Since this was an inexpensive Ethiopian restaurant, I'm going to assume that "undesirable element" was code for "relatively poor black clientèle." I petitioned the Boston City Council, pointing out all sorts of interesting data like the fact that no one lived near the restaurant (using photos of the parks that surround it...), that the clientèle was largely blue-collar blokes trying to make ends meet (usually as taxi drivers) and weren't causing anyone any trouble. But to no avail. The burgeoning property owners had won. Fasika closed, neighborhood property values rose slightly, and I begrudgingly moved on with life. I bought a house, moved further away from JP, and assumed that was that.

Until today, that is. Pat Lam just told me the greatest news ever. Fasika has reopened. In Somerville. Five blocks from where I now live. I'm so happy that I could cry! This white yuppie property owner proudly welcomes Fasika to his up-and-coming Somerville neighborhood. And I'll happily watch my property value (and most likely, weight) go up because of it.

SoC status

Google's SoC program hasn't officially started yet, and already my two students are busy hacking.

Rob Staudinger has been busy refactoring AbiWord's build system so that parts of AbiWord might be turned into a proper library. In the process, he's managed to get AbiWord to cross-compile to Win32.

Due to its relatively light footprint, AbiWord has seen an upwelling of adoption on "embedded" platforms, like the Nokia Maemo or OLPC runtimes. These devices have wildly differing constraints, but at the core, all see a need for a rich-text widget. Rob's work is critical for us to fully exploit these emerging markets.

Meanwhile, Gabriel Bakiewicz has been hacking away at improving AbiWord's grammar checking. He's managed to hook up AbiWord to CoGroo. Initial screenshot here. Gabriel's plans for the summer are pretty ambitious. In the end, we may have an Enchant-like interface for grammar checking. I'm lucky to have help mentoring this project from one of Gabriel's professors, Carlos Menezes.

This is impressive, considering that SoC hasn't officially started yet. Great job, guys! Keep up the good work.

21 May 2007 (updated 21 May 2007 at 16:55 UTC) »

I watched the OLPC segment on CBS' 60 Minutes program yesterday. In my mind, Intel are clearly engaging in predatory practices under the guise of benefiting underprivileged children. The net result is that this will harm not only the OLPC project, but the children in the longer-term (unless you expect Intel to perpetually sell these laptops at a significant loss). Here are some comments by EntropyMan @ Digg that highlight the the underlying issues that 60 Minutes (at best) glossed over.

If Intel -- which is not in the business of selling laptops, and is in fact losing money on every laptop sold -- wants to get its processors -- its actual business -- into the hands of the world's kids, all it had to do was offer its CPUs to OLPC at a lower volume price than AMD. It would be in the market with first mover advantage, AMD would be out, and Intel would win this round without breaking any laws.

Instead, it builds a whole new laptop and dumps it at a massive discount below cost wherever OLPC tries to sell theirs. OLPC can't use the heavily discounted Intel CPUs in those, because Intel effectively won't let them.

If I were Intel, I'd be peeved that the (potentially) largest laptop roll-out ever won't be using my chips. But the free-market solution to that is "simple": make better performing, lower wattage chips at a lower price than AMD's Geodes, and make them in bulk. You've shown that you can do that with your high-end chips. You can do it for the low-end market too. Let your products compete on their own merits.

Dear lazyweb,

I own a Cowon iAudio X5 portable music player. I've had it for a little longer than a year. In that year, its battery life has gone from a reasonable 8-10 hours to about 2.5 (if I'm lucky). I've also had some problems with its proprietary "adapter".

Fortunately, I people sell the adapter for a reasonable price online. But I've had a tougher time finding information about a replacement battery or anything I might do to increase the existing battery's running time. The best I've seen is "buy a XXX brand mobile phone battery and a soldering gun."

Would switching to Rockbox make a difference. Any ideas? Thanks in advance.

domlachowicz AT gmail DOT com

I know that I and my projects haven't been the most responsive when addressing bugs. And for that I must apologize. Truth be told, there are always a lot more reporters than there are developer hours.

As a free software user, I understand closing a bug due to lack of feedback or insufficient information. As a free software user, I understand closing a bug because it can't be reproduced by the development team. As a free software user, I understand closing a bug because it's been filed against the wrong project and there's no good way to migrate the bug between the two projects. I may sound a little like JWZ here, but I don't understand a project closing all of its bugs because it changed its name and moved its bug tracker to another server.

I got this gem in my inbox yesterday from Gaim's SourceForge.net bug tracker:

As we have now renamed the project, and are migrating to developer.pidgin.im, I am closing this ticket. Please create a new ticket at http://developer.pidgin.im if this issue persists with 2.0.0

At least in JWZ's "Cascade of Attention-Deficit Teenagers" post, all of GNOME and its supporting libraries were basically rewritten from scratch when the bugs got closed. It's like saying "we changed and accomplished so much that we're hopeful that these bugs are gone. Please try again, because there's some non-zero chance that your bug got fixed."

Here, the project in question ran `sed 's/gaim/pidgin/g'`, moved their bugzilla to another machine and thought that those actions justified closing all the bugs rather than migrating them. This is hardly a spongeworthy accomplishment.

I really do appreciate all the hard work that the Gaim/Pidgin crew has done. I use it daily, largely without issue. I advocate it to my friends and co-workers. It's a good piece of software. Unfortunately, I haven't personally helped them out in any way beyond filing a few bugs. And I understand that migrating bugs from SF.net's tracker to your own might not be the world's easiest task. But those bugs are nonetheless a contribution to the project, and I'd like to think that those contributions wouldn't be thrown away with such reckless abandon.

Oh my word. This is just awful. My condolences to the friends and family of all VA Tech Hokies out there. The killer got off too easy...

RIP Kurt Vonnegut

From "Back to School":

[after Diane gives Thornton an 'F' for his report, which was actually written by Kurt Vonnegut]
Diane: Whoever *did* write this doesn't know the first thing about Kurt Vonnegut!

[cut to Thornton's dorm suite]
Thornton Melon: [on the phone] ... and *another* thing, Vonnegut! I'm gonna stop payment on the cheque!

[Kurt tells him off]
Thornton Melon: F*ck me? Hey, Kurt, can you read lips, *f*ck you*! Next time I'll call Robert Ludlum!

Microsoft Woes...

I'm doing some work that peripherally needs to talk with a database. The queries are simple enough, but it happened that all of my long-lived processes crashed over the weekend at the same time, seemingly in that benign database-related area. So I'm thinking that maybe I've just encountered a network failure, and I set off to bullet-proof my code against them.

I fire up the debugger, unplug the network cable, and give it a whirl.

MSFT's ODBC layer sets a member variable, "m_nResultCols", to -1 to mark an error or uninitialized condition, which seems reasonable. However, the code checks for errors using the following snippet (dbcore.cpp):


	// If there are no fields quit now
	if (m_nResultCols == 0)
		return;

This fails, so it executes the next line:


	// Allocate buffer and get the ODBC meta data
	m_rgODBCFieldInfos = new CODBCFieldInfo[m_nResultCols];

Or, it tries to, anyway. That'll malloc (MAX_UINT * sizeof(CODBCFieldInfo)). And needless to say, that won't work. So fine, I can live with that, so long as the "array new" operator throws some sort of std::exception or CMemoryException like it's supposed to when it can't alloc that much memory. But instead, it insists on looping while it can't malloc any memory (afxmem.cpp):


void* __cdecl operator new(size_t nSize, int nType, LPCSTR
lpszFileName, int nLine)
{
	for (;;)
	{
		pResult = _malloc_dbg(nSize, nType, lpszFileName, nLine);
		if (pResult != NULL)
			return pResult;
	... // try in vain to free some resources
	}
}

If the first bit of code checked for an error condition properly and returned an error condition (as documented), my code would handle that condition properly. Or, if that didn't get fixed and the new() operator threw an exception (as spec'ed), my code would handle the exception properly. But instead, the combination of the two errors leaves me with _malloc_dbg() popping up an error dialog saying "I can't allocate MAX_UINT bytes of memory. Press OK." from here until kingdom come. *Sigh*

140 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!