jlm-blog
~jlm

7-Mar-2010

Prisoners’ dilemma and web advertising

Filed under: web — jlm @ 19:20

I use AdBlock Plus; I installed it after certain weight loss ads featuring ugly caricatured jiggling fat bellies started appearing all over the web, making browsing disgusting. Many people find that web ads make their browsing experience unpleasant in various ways, so adoption of AdBlock Plus and other blockers have been increasing significantly recently. This in turn has web publishers worried, because they see all these visitors showing up on their sites with the ad blockers, so they’re not getting the ad revenue they planned on, and that means more red ink on their balance sheets. (See this current Ars Technia article.) But when I turn ABP off, the web becomes intolerably hostile: Sites are slower, and when they do load they’re full of flashing ads and I get ad copy playing over my speakers and popping up over the text I came to the page to read. So now visitors are fed up, they block all that crap, and publishers can’t make their ad money, they shut down, visitors have no where to go, and everybody loses.

What happened? It was supposed to be visitors get “free” content because the publishers are ad supported, and this worked for a while. But this relies on the implicit social compact that visitors don’t block ads, which has as its unstated counterpart that publishers don’t make their ads so intrusive that visitors get annoyed by them. So I think we have a situation similar to a prisoners’ dilemma: visitors can defect by blocking ads, improving their own browsing experience but denying publishers their ad revenue; publishers can defect by showing intrusive ads, bringing in more revenue but destroying the visitors’ browsing experience. (It’s not quite a PD, because the payoffs are the same when the visitors defect regardless of whether the publishers do.) It seems to me that the publishers defected first, coveting the additional money from the worse ads, and we’re now seeing a tit-for-tat from the visitors, fueled by annoyance at the publishers’ defection.

And my experiment of turning ABP off shows that the publishers are still defecting, and defecting “harder” than before. Whatever your position on the morality of browsing with ads blocked, I think we’re going to see more visitors turning to blocking as long as intrusive ads are ubiquitous in web publishing. If the publishers go back to simple ads, which don’t move and flash and pop-over and piss users off, then publishers won’t see new internet users installing ad blockers, and us existing ad block users will be more inclined to turn our blockers off. But we’re going to continue defecting as long as the publishers are.

The Ars Technia article is titled “Why Ad Blocking is devastating to the sites you love”, but from the other side it could be called “Why intrusive advertising is destroying your users’ tolerance for your business model”. The publishers defected long before the visitors did, and turned a deaf ear to user complaints, and so I’m unsympathetic to cries from them that we’re now defecting too. Publishers have been pissing in the pool for years, and now they’re surprised users are putting on full-body wet-suits? Blame us ad-blockers all you like, but until you look in the mirror and make the web tolerable to surf without an ad blocker, the situation won’t get better for either of us.

4-Mar-2010

twitcode: automatic AFS Kerberos ticket renewals

Filed under: programming — jlm @ 17:29

If you’re a user of AFS with Kerberos, you’ve no doubt been annoyed at your ticket expiring and having to run aklog to get a new one. You may have tried to script running aklog automatically periodically, but been stymied that aklog won’t refresh an about-to-expire ticket. So, you have to scrape the output of klist for the expiration time and wait until then — easy enough. So simple that my script to do so, nicely indented and with declared integer variables for now and then weighed in at a paltry 353 bytes.

So, I figured if I inlined everything, I could fit it in a twitter post. And lo, it does:

while sleep $((`date -d "$(klist -5 | tail -1 | awk '{ print $3 " " $4 }')" +%s` - `date +%s`)); do aklog; done

That’s 112 characters, including unnecessary spaces for readability and the trailing newline, leaving plenty of room for extras you might think up.

Now, if only I could fit all this commentary in a twitter post…

16-Feb-2010

Dire time for webcomics?

Filed under: web — jlm @ 13:06

This recession has been bad news all around, with many businesses shuddering their stores and swathes of jobs lost. I’ve noticed several webcomics I’ve been following for a long time have recently shut down too. Bruno the Bandit announced its effective cessation mid-story. Angband: Tales from the Pit had an ending storyline for its wrap up. User Friendly has gone into repeats. Homestar Runner has quietly stopped updating. There’s a constant rise and fall in this “industry”, low entrance costs means competition is heavy, but I’m sad to see long-time players bow out in succession.

11-Nov-2009

AT&T, no phone to home

Filed under: networking — jlm @ 14:36

So, a little before 8:50 this morning, all my connections hung. Fire up mtr, and it doesn’t reach the first hop. I pick up the phone, and there’s no dial tone! I futz around for a while, but by 9:00 there’s still no phone service. I go outside and down the ¼ block to the AT&T switchbox, and there’s an AT&T truck there and a tech messing around with it. I ask him if he’s fixing the outage, and he says no, he’s measuring the noise on the wires. I say I lost my service 10 min. ago, and after getting my phone number he confirms that he pulled my wires along with a bunch of others then. With me standing around, he measures my line next and reconnects it.

WTF? How is it that this is a company which is synonymous with reliability in its reputation? A deliberate, unannounced outage, not during off-peak, and for much longer than need be just because it’s easier to pull all the wires, measure, then reattach than to do them one by one? And I was very lucky this time — last time I lost my phone it took them two days to send a tech out to confirm that the last tech to mess with the switchbox had screwed up my wiring and fix it.

4-Oct-2009

Floating point exception after upgrading libgcc1 (PCLinuxOS) (fix)

Filed under: linux — jlm @ 22:34

I was just upgrading my packages, like I do every so often. This time ’round the package update list was:
bash bluez-utils dkms-ndiswrapper e2fsprogs grub grub-doc libgcc1 losetup
ndiswrapper pclinuxos-release update-notifier

Went ahead, it installed cleanly, but afterwards I was getting floating point exceptions from some programs. ldd shows libgcc_s as a likely culprit, what with the just-done upgrade including
libgcc1-4.4.1-1pclos2010.i586 ############################## [100%]

Play around with apt-get, to see if I can get an older version from apt — uh oh, apt-get says floating point exception when invoked. Grab a Mandriva RPM from the net, give it to rpm — rpm dies with floating point exception. No problem, I’ll install the files by hand, just extract them with rpm2cpio — which hits a floating point exception.

Finally, I wise up, scp libgcc1_s.so.1 from a Debian system.
cd /lib
sudo mkdir brokengcc1
sudo mv libgcc_s* brokengcc1
sudo cp /tmp/libgcc_s.so.1 .
sudo chmod 0755 libgcc_s.so.1

And everything is working again, at least enough to tide me over until PCLinuxOS fixes the libgcc1 package. If anyone else is stuck by this, the libgcc I used is here.

That’s one way to ensure a language never goes mainstream

Filed under: programming — jlm @ 09:09

Quick quiz: How do you find the arguments to your Scheme program?
  a) argv
  b) *argv*
  c) command-line
  d) program-arguments

Answer? It depends on whether you’re using Guile, SCM, umb-scheme, or mzscheme! That’s right, it’s impossible to write a Scheme program that takes arguments and is portable across implementations. Winnar.


Update: In 2013, option (c) was standardized.

30-Aug-2009

Upgrade season

Filed under: linux — jlm @ 12:44

So, I’ve done a bunch of upgrades to my systems lately. After Ubuntu broke my X again somehow going from Intrepid to Jaunty (this time not recognizing my input devices), I switched over to PCLinuxOS (2009.2). I’m still getting used to it. The apt-rpm stuff seems to work well, and stuff I had to fight to get going in Ubuntu, like flashplayer and xmms, just work. Java actually runs, and there’s a desktop link to the magic for getting OpenOffice working. On the other hand, the package repository feels a lot smaller, not having programs I’ve long used like calc, ccrypt, dict, and procmeter.

WordPress had a series of security vulnerabilities, so I’ve updated to the latest version. As a plus, it finally knows about the system’s timezone database, so is no longer the only program you have to adjust an hour whenever daylight savings starts or stops. The WordPress upgrade process is getting easier, manual editing of the mysql db no longer needed. Hopefully one of these days they’ll simplify it down to “apt-get upgrade”-level, and it can keep itself up to date the same way everything else does.

I also upgraded the Easy Peasy (formerly known as Ubuntu Eee) install on my EeePC. I can’t speak about the install problems I noted in my last post on Easy Peasy, but most of the runtime problems seem to have been fixed — except the inability to turn the WiFi on! Another user put together a fix in February, but unincorporated by the maintainers. I find this bug just as staggering to find today as I did last December. How can this still not work out of the box after all this time?

27-Jun-2009

Intrepid Ibex woes

Filed under: linux — jlm @ 15:38

I just upgraded my Ubuntu install from Hardy to Intrepid. (Jaunty was recently released, so I expected Intrepid to be very smooth by now.) Instead, I got the worst upgrade experience I’ve ever had with Ubuntu, by far.

First, X didn’t come up, leaving me staring at the console login after reboot. Checking Xorg.0.log, it said something about RgbPath being an illegal directive. Looking at the changes the updater had made to the xorg.conf file, it hadn’t done anything about that line. I tried replacing the updater-edited version with the one from Hardy, still choked on RgbPath. I removed the RgbPath directive, and now it aborted on ‘Module "type1"’. At this point I remember an LWN article about how recent X servers tried to autodetect everything and do the right thing if there were no xorg.conf file, so I moved it out of the way, started X, and huzzah, it worked.

Next, trying to do anything with the package manager errored out and I had a bunch of unconfigured packages. This turned out to be due to the preinstall script for openjdk-6-jre-headless consistently crashing (incidentally producing a multi-page error message containing an unsymbolized stack trace and a memory mapping dump, guaranteed to scare away non-developers), and a bunch of packages depending on openjdk-6-jre-headless, particularly OpenOffice. Uninstalling openjdk-6-jre-headless (and scrapping OpenOffice in the process) got my system back to a state where the package manager was happy.

I consider these two problems each a major lose. Intrepid’s Xorg doesn’t work with Hardy’s xorg.conf, and the update manager doesn’t fix it up. To fix it you have to either edit xorg.conf or know a not-well-publicized feature of Xorg. To even start diagnosing you have to know about Xorg.0.log and how to start the X server. Ubuntu is supposed to be targeting people who aren’t comfortable with a command line, and here it is dumping them at one after the upgrade without a map! And due to the second problem, I now don’t have OpenOffice on my system (though I do prefer AbiWord and Gnumeric, so that’s not as great a loss for me as for some).

26-May-2009

Command-line wifi without nm-applet

Filed under: linux — jlm @ 13:43

If you use a Linux laptop, you probably have an ambivalent relationship with nm-applet, “Network Manager”, that thing which connects to your access points. Or often doesn’t, because — well, no one knows why, because nm-applet is fussy and tight-lipped.
Fortunately, you can do everything it does in the shell, if you know how. Here’s how:

  1. iwlist scan to scan the environment for WAPs
  2. iwconfig ath0 essid XYZ where XYZ is the ESSID from the scan that you want to connect to
  3. ifconfig ath0 up (turns the interface on)
  4. dhclient (registers with the WAP and gets an address)

Voilà, you’re connected (or at least have a meaningful error message), while nm-applet is still running around flailing its arms.
(I used ath0 as the interface in my example, but your interface might have a different name, like wifi0 or wlan0. Check by running ifconfig. Interface-affecting commands require root.)

14-Mar-2009

e-Government fail

Filed under: politics, web — jlm @ 23:26

[XML parsing error from www.whitehouse.gov]

There’s some small growing pains on the welcome road to a more online government.
It’s not quite as amusing as when I get this kind of thing from Failblog, though.

Powered by WordPress