Sean’s Obsessions

Sean Walberg’s blog

It’s a Plumbing Problem, and We’re a Bunch of Carpenters

I was reading through some of the notes from the talks at NANOG, the North America Network Operators Group. In particular, notes about the transition to IPv6 caught my eye.

I’ll be the first to admit I don’t know enough about the protocol, but what always struck me as odd was that there’s no multihoming for enterprise customers. Only carriers get to multihome (advertise their prefixes out multiple providers), and by strict interpretation anything longer than a /46 is to be dropped (the default allocation for companies is /64).

The talk went over some of the barriers to IPv6 adoption, and one of the reoccuring themes was lack of multihoming. For some companies, this is essential since the Internet is their only revenue stream. So maybe it’s not that multihoming isn’t available, it’s just that there is no good high availability solution for enterprises, and in our IPv4 mindset we think of multihoming.

The argument against this is that it goes against aggreagation. If a network is to be multihomed, it can’t be aggregated, and there’s one more prefix out on the Internet. Already on the Internet we have almost 180,000 prefixes on the Internet. Increase the address space by a factor of 2^96 and routers will be overwhelmed.

The counter argument to that is largely that it’s possible to build routers that can outpace the growth of the Internet routing tables.

Regardless of the arguments, I’m happy to see that groups are taking a pragmatic view of IPv6 adoption, and looking to overcome the hurdles.

Telephony Terms and Concepts Article

I wrote an article for O’Reilly’s Emerging Telephony site called Telecom Terms and Concepts. It’s all about how the existing phone system and VoIP works, how they’re the same, and how they’re different.

On another voice related note, John Lange has started up the Canadian Association of Voice over IP Providers, a sort of lobby/working group for Canadian ITSPs. The goal is to present an independent perspective on VoIP regulatory issues to the Canadian Radio and Telecommunications Committee (CRTC) and to work in cooperation with Local Exchange Carriers (LECs) to ensure interoperability between VoIP networks and the Public Switched Telephone Network (PSTN).

Is This Thing On?

People who have been here before might recognize a change – I’ve moved to WordPress 2.0 as I threatened to do earlier.

The change wasn’t that bad, but it wasn’t without its fun.

I installed Word Press into DocumentRoot/blog2, and imported my old Movable Type data.

While testing this, I noticed that comments weren’t coming over. After further investigation, I found that they were in the database, but the wp_posts table keeps track of the number of comments and it wasn’t being updated. Before writing my own script to fix it, I found that someone had already beat me to it, so I used that one.

The theme itself is something I’ve been playing with over at CCSA Certification. I initially started off rolling my own, but it’s a lot of work! While the template system in Word Press is quite easy to understand, there’s a lot to do in order to make a complete template system. So I found one on the ‘net, and modified it to do what I needed.

A lot of my traffic is from search engines, so I wanted to redirect traffic to the new page. the MT Redirect page on the Word Press Wiki gave me a good start, but it didn’t use the same page naming I did, nor did it do category or date archives, nor feeds. The final template I used was:


header('Content-type: text/plain');

$base = "http://ertw.com/blog";

function sanitize_title($title) {
$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = preg_replace('/[^a-z0-9 -]/', '', $title);
$title = preg_replace('/\s+/', ' ', $title);
$title = trim($title);
$title = str_replace(' ', '-', $title);
$title = preg_replace('|-+|', '-', $title);
return $title;
}

?>

Redirect Permanent /blog/archives/-.html /<$MTArchiveDate format="%Y/%m/%d"$>/"); ?>/

Redirect Permanent /blog/index.xml /feed/
Redirect Permanent /blog/index.rdf /feed/


$cat = preg_replace("/.*cat_(.*).html/", '$1', "");
$link = preg_replace("/^http:\/\/.*?\//", '/', "");
?>
Redirect Permanent /category//


$link = preg_replace("/^http:\/\/.*?\//", '/', "");
?>
Redirect Permanent /<$MTArchiveDate format="%Y/%m"$>/

I tossed this in the .htaccess file that Word Press generated and tested a few links. (It’s pretty easy to search and replace the output of this when it’s in the staging area, in my case, blog2)

I haven’t done much for plugins, other than using Hash Cash. Incidentally, the main driver for me to move to Word Press was that there were a few Captcha plugins out there to reduce spam, but as it turns out, Hash Cash is supposed to be better.

Bell South, and Charging for Premium Service

Many sites are reporting that Bell South wants to charge content providers to “to reliably and speedily deliver their content and services.”

It’s an interesting thought, with many good arguments for and against.

On the surface, it may appear that BS is trying to have their cake and eat it too. People using their network pay for the access already, either by cash or reciprocal traffic arrangements. So, company X may connect to provider Y who in turn connects to BS. Y pays BS for the traffic it uses and X pays Y. BS may connect to another ISP who agrees to a reciprocal arrangement whereby each carrier will carry the other’s traffic free of charge.

In this scenario, the network is paid for, and any argument about “the Internet is getting faster and we can’t keep up” should be able to be taken care of by BS charging more to Y who passes it on to X should X be the person using the traffic.

On the other hand, one could look upon this as a value-add. “Yahoo!, pay me, and I’ll make sure your traffic has priority on my network”. (As an aside, giving traffic priority doesn’t always refer to a strict priority queue where Yahoo! always beats out Google and other traffic. It could be a guaranteed portion of the pipe) From this perspective, it seems reasonable to auction off different priorities within the BS network, assuming there is a market.

Of course, the “value” part of “value-add” is dubious. BS isn’t the whole Internet, and the hop-by-hop nature of the Internet means that your traffic will only experience the increased performance over the BS network. If your cable modem network is pinned, this won’t help you.

Now that I write it out, I’m starting to think the free market approach is better. One of several things will happen:

- People will pay. By this, I mean the ultimate end product is priced such that people buy it, and the content provider maintains a satisfactory profit
- People won’t pay. If I’m only willing to spend $1 on a music download, and I won’t spend $1.05 to have it download 10 seconds faster, then no one will choose the high quality option, and we’re back to the Internet we have today where all traffic is equal
- It won’t work for the reasons cited before. Other carriers could choose to alter their peering to avoid the BS network, or the benefit of the service could be so small that people won’t pay.

Either way, I don’t see a long term problem. The market should take care of it, whether or not it’s good for BS is the question.

All that said, the old adage often accredited to John Gilmore applies: “The Internet treats censorship as damage, and routes around it”. In this case, if BS tries to push it too far, or misuses the idea, the Internet will take care of itself.

(Also have a look over at the VoIP blog for another take)

Primus TalkBroadband Sucks

Wanting to get away from high telephone bills, I made the jump to Primus TalkBroadband a few months ago, and what a mistake that was.

I must say it was easy to get signed up. I filled out a web page, and a little while later, I was sent a package containing my VoIP box (ATA) and instructions. I soon got an email with the day my number would be ported, and it was transferred when they said it would be.

However, quality problems made the service unusable. I played with QoS, called Tech support, tweaked this, tweaked that, and eventually gave up. This, I don’t fault them for. I have a few friends who are happy with the service, it just didn’t work for me.

So, I called up Shaw for their Digital Voice package. They gave me a temporary number to use, I set up my TalkBroadband line to forward all calls to that number, and disconnected the ATA.

I then called Primus customer service to switch to the lowest plan possible, $15/month (if I’m not using the service, why pay $30?). Surprisingly, I wasn’t asked why I was leaving. Even after working in “I’m just not happy with the service”, I didn’t get “sorry to hear that”.

An unfortunate mixup with Shaw caused the number porting to take much longer than it should have. (Other than that, I’m very impressed with Shaw’s service. The guys that came to wire my house did an outstanding job) Any calls to my Primus number which were call forwarded to Shaw (never touching VoIP) had awful quality, such that we usually ended up calling people back whenever they called us.

So, I called Primus support. The first guy I talked to seemed rather angry at me and very argumentative. I called back through customer support to complain, who had no record of the previous call. So, I got someone else in tech support, who blamed the problem on Shaw.

Around the same time, when people called us in the evenings, they’d sometimes get an “out of trunks” message. I called Primus about that, too, and the support guy told me that he could only help me if I was getting the message now, and to call back when I was having the problem.

Finally, on Dec 21, my number ported over to Shaw. I was told my account would be cancelled. Late last week, a friend on TalkBroadband tried to call me and got a “not available message”.

So, I called Primus this morning. The lady told me my account hadn’t been cancelled, and since I have to give 30 days notice, they were billing me until Feb 9. Fine. I then asked her what to do about the problem where Primus customers couldn’t call me and she told me that I couldn’t possibly be having this problem, and that the person calling me should call in. After trying to explain my situation to her, I asked to be transferred to tech support.

The guy on the tech side was nice enough, and seemed to have an idea of what might be wrong. Since my account wasn’t cancelled, Primus customers were still going the old way. He called some people internally and told me I should wait a few hours for the account to be cancelled inside their system first.

All told, I’ve spent around $50 on a service I didn’t use (that’s not including the $30 on the month of service that I did use), and have had many problems dealing with Primus’ so called “customer service”. I have never dealt with so many rude people as a customer of a company or felt less valued as a customer.

I have friends who are happy on Primus, though they have never had to call for help. (That said, one of them did have a billing problem, and it took a very long time to resolve because of the pathetic customer service).

On the flip side, Shaw has been nothing but helpful. I pay more for the Shaw service, but it is excellent, and I feel taken care of.

MUUG Presentation on Tuesday

I’ll be presenting at the local Unix user’s group on the topic of RSS, Greasemonkey, and some other tools I’ve found that make web and email more efficient (in terms of information per unit time). The announcement is below…

The Manitoba UNIX User Group (MUUG) will be holding its next monthly
meeting on Tuesday, January 10. The meeting topic for this month is
as follows:

Efficient Web Browsing

In this presentation, Sean Walberg will demonstrate several tools that
are used to make better use of your time on the Internet. These tools
include an RSS aggregator, mailing list archiver, del.icio.us, and
Greasemonkey.

The group holds its general meetings at 7:30pm on the second Tuesday of
every month from September to June. (There are no meetings in July and
August.) Meetings are open to the general public; you don’t have to be a
MUUG member to attend.

**********************************************************************
Please note our meeting location: The IBM offices, at 400 Ellice Ave.
(between Edmonton and Kennedy). When you arrive, you will have to
sign in at the reception desk, and then wait for someone to take you
(in groups) to the meeting room. Please try to arrive by about 7:15pm,
so the meeting can start promptly at 7:30pm. Don’t be late, or you may
not get in. (But don’t come too early either, since security may not
be there to let you in before 7:15 or so.)

Limited parking is available for free on the street, or in a lot
across Ellice from IBM, for $1.00 for the evening. Indoor parking is
also available nearby, at Portage Place, for $3.00 for the evening.
**********************************************************************

For more information about MUUG, and its monthly meetings, check out their
Web server:

http://www.muug.mb.ca/

Also note that MUUG maintains two mailing lists, called “muug-announce”
and “roundtable”. If you’re not already on these lists, we encourage you
to subscribe now:

http://www.muug.mb.ca/mailman/listinfo/

The “muug-announce” list is used for monthly meeting announcements (such
as this one) as well as other important announcements of interest to MUUG
members.

The “rountable” list is meant to be a forum for follow-ups to topics
discussed at the meetings, or for round-table-style discussion on other
topics that come up between meetings. Of course, for this to be effective,
we need to reach a certain critical mass. So, please subscribe, and stay
involved!


Gilbert E. Detillieux E-mail:
Manitoba UNIX User Group Web: http://www.muug.mb.ca/
P.O. Box 130, St-Boniface Phone: (204)474-8161
Winnipeg, MB, CANADA R2H 3B4 Fax: (204)474-7609

—— End of Forwarded Article

Hey WordPress Gurus, I Need a Plugin

I’m looking at making the move to Wordpress. So far I’ve got no problems with the import and the url redirection, but I make use of a plugin called “MTCollect” that lets me scour the post for urls and post them. I described it here

I’ve looked around and can’t seem to find the same thing for WP… any ideas?

Thanks.

update: OK, so Wordpress is nothing like Movable type, and it would appear that I might be able to do this without a plugin, just a mod to my template.

Greasemonkey Hacks

Greasemonkey is probably the coolest Firefox extension I’ve found. It lets you write Javascript code that can modify the page being displayed, either to add functionality, change the appearance, or even fetch data from other pages and merge it into the current page.

So, trying to learn this new extension led me to Dive Into Greasemonkey, a superb online book explaining the use of this extension. A few weeks later, I received Greasemonkey Hacks by the same author and was estatic! Dive Into Greasemonkey was a great start to learning GM, it already had the feeling of the O’Reilly Hacks series, and here is a whole book by the very same author.

Maybe the tutorial-like nature of Dive Into Greasemonkey had me looking for something else in GM Hacks, but for some reason I’m having trouble “getting it”. The book starts off with some very good introductory material on GM itself, including a good tutorial on XPath usage, but GM Hacks assumes you know Javascript and the objects that Firefox uses. Having gone through Dive Into Greasemonkey I knew enough of this to get by, but I still find myself looking up reference information on websites rather than finding an explanation in the book.

The Hacks books are often a collection of many people’s scripts and it shows. There are several ways to do some things (such as iterate through all the links on a page), and the scripts in the book switch between them at will. I found one case where the choice was actually explained, but for the others I have to assume that the methods are the same and the choice is a personal preference.

Maybe I had some bad luck, but I found the index to be useless for the things I was looking for when I was developing my own scripts.

My final gripe goes back to the need for more tutorial material in the book. One of the best features of GM is the GM_xmlhttpRequest function, which lets you pull in arbitrary web pages through your script. Nowhere in the book is a description on how to use the function, just POOF, it’s there.

With the complaints above you might think I didn’t like the book. As a tutorial I think you can do better, but I look at it as 100 odd scripts to give me ideas on how I can use GM. And, as I learn more Javascript and get more experienced with GM, I’m able to pull out more and more from the sample scripts to use on my own.

The list of scripts in this book is here, and as you can see, there’s a lot of different things you can do with GM. The URL for the script is usually given so you don’t have to type it in (some are several pages long), though I noticed one that I tried to use had completely changed since the book was published.

This is a good book for someone looking to get ideas for using Greasemonkey and to pull out patterns. Those just getting into it are best to read Dive Into Greasemonkey first and maybe a good Javascript book before tackling this one, though.

(Edit Dec 25, was missing half a sentence from paragraph 5)

Adwords Phrase Generator

Every so often I like to play with Google AdWords to see if I can make a couple of bucks (usually when I find a free coupon, that is). One thing that’s a pain is generating keyword lists from smaller lists.

I wrote a small CGI program, available at http://ertw.com/cgi-bin/kw.cgi , that takes lists of keywords and does a multiplication on them. ie, if you have two lists “a,b” and “c,d”, you’ll end up with “a c” “a d” “b c” and “b d”.

There are already a bunch out there that do this, but mine has the following features that I haven’t seen:

- Unlimited number of columns (well, I’ve limited it to 10), where most only offer 2
- Integration with AdWords power editing - if one of your keywords has the ** bid ** url tags in it (ie from the google interface which lets you assign bids/landing pages to a particular keyword combo), the tag will end up in the final keyword. ie, if you have

key1**http://example.com/key1

and

key2

for your columns, you’ll end up with

key1 key2**http://example.com/key1

- I don’t log the keywords you enter

FC4, Udev, and Tape Permissions!

I upgraded my workstation from FC1 to FC4 a couple of weeks ago. While moving stuff around, I bumped my external tape drive and it fell about a foot. Thinking nothing of it, I continued working.

I started to notice that my backups weren’t working. Thinking I might have a bad tape, I labeled a new tape, but got “this tape is write-protected”.

Odd.

After working on it, and even taking apart the tape drive to see if I dislodged a connection, I was about to give up.

Then I Googled for the error message I got, and someone mentioned it might have to do with file permissions on /dev/nst0.

Argh. /dev/nst0 was set for 640 by way of udevd. Editing the st and nst lines in /etc/udev.d/rules.d/50-udev.rules fixed it. I had forgotten that FC4 uses dynamic device entries.