Won’t Somebody Think of the Terrorists?

Another quote of the day… a follow-up to my previous post about the ridiculous security theater presented by the TSA.

“But governments need to overreact! If you don’t think of the children, the terrorists have won!”

“Ah but if you don’t think of the terrorists, the children have won!”

New TSA Screening Requirements Violate their Own Requirements

TSA logo

There seems to be a lot of “confusion” lately about what exactly the proper screening requirements are of TSA employees and the new regulations governing domestic flight and travel.

The TSA has announced new requirements that claim to be for “increased security”. The requirement goes on to say:

Beginning Saturday, June 21, 2008 passengers that willfully refuse to provide identification at security checkpoint will be denied access to the secure area of airports. This change will apply exclusively to individuals that simply refuse to provide any identification or assist transportation security officers in ascertaining their identity.

This new procedure will not affect passengers that may have misplaced, lost or otherwise do not have ID but are cooperative with officers. Cooperative passengers without ID may be subjected to additional screening protocols, including enhanced physical screening, enhanced carry-on and/or checked baggage screening, interviews with behavior detection or law enforcement officers and other measures.

Note my emphasis in the above quote. This reads that you are required to show identification when requested, but not if you have lost your ID and cooperate with officers.

So basically this has nothing at all to do with security. Let’s also not forget that the alleged 9/11 hijackers had valid, legally-issued credentials when they boarded those planes. They did so within perfectly legal guidelines, without violating any laws or regulations.

What would stop someone else from doing the same? Answer: NOTHING!

Incidentally, you can’t “show identification”, because “identification” is an act or process. Showing “credentials” would have been a proper way to express that… but perhaps these are more examples of “Doublespeak” from US.gov.

In his bestselling book Doublespeak, William Lutz notes that doublespeak is not an accident or a “slip of the tongue.” Instead, it is a deliberate, calculated misuse of language.

Lutz provides several defining attributes of doublespeak:

  • misleads
  • distorts reality
  • pretends to communicate
  • makes the bad seem good
  • avoids or shifts responsibility
  • makes the negative appear positive
  • creates a false verbal map of the world
  • limits, conceals, corrupts, and prevents thought
  • makes the unpleasant appear attractive or tolerable
  • creates incongruity between reality and what is said or not said

Sound familiar?

This is yet another example of “Security Theater” from a corrupt government that continues to propagate lies to uphold their agenda.

There is even one detailed account from travel author Edward Hasbrouck that explains how he was asked to present his ID from neither an airline representative or a member of the TSA, and nearly arrested for simply asking the question “Who are you?” to the person demanding he present his credentials.

In fact, the 9th Circuit Court of Appeals ruled that you don’t have to present ID if you are willing to subject yourself to a more-thorough search at the security checkpoint. This was part of the Gilmore v. Gonzales ruling.

But it seems that the TSA is going back on their own documented regulations, by making it a requirement to present photo ID when asked, even though you are legally not required to do so.

And lastly, does this banner, emblazened on many TSA webpages seem a bit ominous?

“Behavior Detection Officers are Looking Out for You”:

Behavior Detection Officers

It seems almost… familiar.

Big Brother is Watching You

Don’t they realize that the book 1984 by George Orwell almost 60 years ago was meant to be a warning, not a guidebook on how to run this country?

The TSA shouldn’t be allowed to use the eagle (representing freedom) and the stars and stripes (representing the sacrifice to achieve that freedom) in their logo.

Are we ready for 60 years of war with Iraq and Iran?

We must seriously weigh the issues and choose our next round of leaders very carefully in the upcoming presidential election, lest we dive this country deeper and deeper into debt, into a recession, into poverty, and ultimately destroy the very foundations upon which it was built.

The price of oil is now no longer about the cost of extracting it from the ground and shipping it, it is about pricing the energy industry’s commodities at such a high level that they displace the value of the US dollar.

One US dollar will currently net you $0.63EUR or $0.50GBP (Source: XE).

Right now as I type this, the cost of oil is $139.00/barrel, up from $87.00 barrel not less than 6 months ago. That’s a 38% increase in less than a year. The cost of gas alone has shot up from $3.45 to $4.40 for 87 octane in under 5 weeks. That’s a 21.6% increase.

This country can’t continue to sustain those numbers.

The cost of food has skyrocketed as well. The price of rice, corn and wheat has gone up over 300% in the last 2 years. The cost of shipping these items has also gone up significantly.

Airlines are starting to crumble and crush. United Airlines is slashing 18% of its workforce and grounding 100 of its 460 planes. Continental Airlines is slashing 3,000 jobs and grounding 65 of its 368 available planes. Spirit Airlines is cutting 60% of its flight staff and 45% of its pilots. The cost of flights in the last 1-2 months has DOUBLED!

Record numbers of people are now becoming homeless, because they can no longer afford to keep their homes. They have to spend the money on gas, which leaves less money for necessities (like bills!), and then they lose their jobs, because companies can no longer afford to employ as many people.

Then what?

One of the candidates for the next presidential seat has openly stated that he supports having a war last for 60+ years, with perpetual military bases in these countries.

Going against the (much better) wisdom of experts who know the political landscape better than anyone, the mere hint of using nuclear weapons in Iran and North Korea is outrageous. We can’t afford to stay at war in ANY country for decades. We’re hemorrhaging money and debt through every pore in our country’s flesh and it needs to stop.

Rarely do I try to impart my own political viewpoints on anyone but this election is crucial to the very survival of this country. Not only in our own context, but in the lens through which other countries are viewing us.

I still strongly support Ron Paul and the moral issues which he stands for, however with the recent change in the candidate pool, Ron Paul is not a choice for the candidate seating in either party. Now with Hillary bowing gently out, it is back to a 2-horse race between Senator John McCain and Senator Barack Obama.

If you care about your own future, the future you’re providing for your children and the future of this country long after you and your children and their children have passed on, watch this short video and choose your candidate wisely before you vote. There is one out there who should not be given the reigns to guide this country further into the ground.

Funny Ubuntu Error Message of the Day

Tags: , ,
Sorry, command-not-found has crashed! Please file a bug report at:
https://bugs.launchpad.net/ubuntu/+source/command-not-found
Please include the following information with the report:
No module named CommandNotFound
Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 10, in 
    from CommandNotFound import CommandNotFound
ImportError: No module named CommandNotFound
Python version: 2.5.2 final 0

So the command /usr/lib/command-not-found could not find a required Python module called CommandNotFound, and instead crashed. Well that’s a well-thought out tool.

Play full out and let the numbers speak for themselves

Play full out and beat your own bestDo you sometimes feel like you’re achieving more, doing more than your colleagues at work? In life? You’re pulling your own weight and some of the weight of others you work with, and you all get to share the credit.

Is it fair when someone else falls behind and isn’t pulling their own weight, but your successes cover their mistakes and unproductive tendencies?

What do you do about it?

Grumble and keep it to yourself? Yell at random cars in traffic to vent on the way home? Do nothing and let it build up inside?

As Phil Gerbyshak puts it in his article “You are Your Only Competition“:

“Often, as soon as they see they seem to be producing more than another person, they slow down and let everyone catch them.”

So what do you do? You DO SOMETHING about it! Play full out!

I’ve been doing this for years and someone else finally gets it and captured it almost perfectly in Phil’s article. This isn’t a new phenomenon, this happens quite a bit in many circles.

Phil goes on to say:

“You are your only competition. If you’re worried about how much Sally is doing every day, how much Fred is doing every day, why Tina gets to do x and Jimmy gets to do y, STOP RIGHT NOW.

Start by thinking about doing YOUR personal best, every single day. Play full out for a month. If you really are head and shoulders better than your competition (if you’re reading this newsletter, you’ve already shown you’re smarter than the rest of your team), play full out for a month and really set yourself apart from your peers. See what your personal best can be. Ultimately that’s what you’re getting paid to do, is to improve YOUR best numbers, every year, every month, every week, every day.”

Anyone who has worked near me, alongside me or with me knows how I work. I’ve always played full out. I go 300 miles-per-hour on everything I do. I learn fast and move faster. I’ve been told I do the job of 2-3 or more people when I’m in the zone.

That’s a compliment and a detriment because once I fall back to doing the job of 1 person… me… I’m seen as being slow or unproductive. So I just reset myself and look at it in the context of competing to beat my own personal best.

When you’re out there running on the weekend, running alone… just you, your stamina, your endurance and your heart rate monitor. What else do you have to compete with?

You want to finish your run 1 minute earlier than yesterday, and then beat it again tomorrow. You’re not fighting all of the imaginary runners alongside you, you’re fighting yourself. The same applies to most sports, business activities, social activities and so on.

Phil closes with a similar last note in his article “You are Your Only Competition

“You are your only competition, so start acting like it. Make today a better day, a greater day, by competing with you, and only you.”

Look at your life every day. Are you doing better than you did yesterday? If not, why not?

Start each new day with that in mind, and you’ll see everything begin changing for the better in dramatic new ways.

Fix for incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.so error message

Tags: ,

I was recently building a copy of Ice 3.0.1 from ZeroC on x86_64 and ran into the following error message fairly early on:

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: Error: ld returned 1 exit status
make[2]: *** [../../lib/libIceUtil.so.3.0.1] Error 1

But I clearly had libstdc++ version 5 and 6 installed:

# COLUMNS=50 dpkg -l | grep libstdc
ii  libstdc++5     1:3.3.6-15ubun The GNU Standard C++ Library v3
ii  libstdc++6     4.2.3-2ubuntu7 The GNU Standard C++ Library v3
ii  libstdc++6-4.2 4.2.3-2ubuntu7 The GNU Standard C++ Library v3 (development

This works on i386 and 32-bit Linux, so I sought out a fix, and the fix was simple; install g++-multilib:

$ sudo apt-get install g++-multilib
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  g++-4.2-multilib gcc-4.2-multilib lib32gomp1
Suggested packages:
  lib32stdc++6-4.2-dbg lib32mudflap0
The following NEW packages will be installed:
  g++-4.2-multilib g++-multilib gcc-4.2-multilib lib32gomp1
0 upgraded, 4 newly installed, 0 to remove and 70 not upgraded.
Need to get 1017kB of archives.
After this operation, 4854kB of additional disk space will be used.
Do you want to continue [Y/n]? y

After doing this, you may receive the following error:

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../libbz2.so when searching for -lbz2
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../libbz2.a when searching for -lbz2
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libbz2.so when searching for -lbz2
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libbz2.a when searching for -lbz2
/usr/bin/ld: skipping incompatible /usr/lib/libbz2.so when searching for -lbz2
/usr/bin/ld: skipping incompatible /usr/lib/libbz2.a when searching for -lbz2
/usr/bin/ld: cannot find -lbz2
collect2: Error: ld returned 1 exit status
make[2]: *** [../../lib/libIce.so.3.0.1] Error 1

This is due to a similar issue, and the libraries you want are in /usr/lib64/, not /usr/lib.

The fix for this is seems to be buried in Cyrillic on this thread. The fixes proposed there did not work for me, so I had to hack and slash the Make.rules.Linux file and the various Makefile targets below to get that working.

The Nightly Charging Routine

360-degree power outletsEverything is about systems. Everything.

Packing your bag for work. Making a lunch on the weekend. Filling the dishwasher. Shopping at the grocery store. They all involve organized, structured, repetitive systems.

My daily commute to and from work has me applying quite a few of these systems on a regular basis.

Lather. Rinse. Repeat.

One of the systems I have integrated into my regular schedule is my nightly charging routine, to make sure all of my equipment is charged, topped off and ready for the next day’s plunge into questionable power availability.

Here’s the short list of things I have to make sure are fully charged and packed every day before I leave for the office.

All of these get packed every night in my NorthFace Surge pack. Kudos to Steve “Fish” Frishling for making that recommendation on a brief jaunt to NYC we shared on Amtrak (see his full review of this pack on his blog “Flying With Fish” for more detail).

Steve’s blog has lots of useful information for travelers, photographers and many other things. I highly recommend you pop over there and read a few posts to see what he’s been up to. I finally talked to someone who puts on more airline miles than Rasmus :)

Steve is several orders of magnitude ahead of me in travel miles, but we have very similar mileage for our efficiency with travel and packing.

  1. A Palm Treo 680 with the stock 1200mAh battery
  2. A 2400mAh extended battery for Treo 680 (bought from Seidio Online). I blogged about this previously. Seidio makes a 1600mAh battery that fits under the stock battery cover and provides 25% more power too, if you don’t want to replace the battery cover or have a PDA case that can’t accept the larger “bump-out” battery.
  3. My shiny new Jawbone II noise-canceling Bluetooth headset (see my first impressions).
  4. A Samsung WEP410 Bluetooth headset. This is a backup headset in case the Jawbone runs out of juice on a call or trip away from my charger.
  5. An APC UPB70 Universal Notebook Battery to extend the life of my laptops on the road (also charges a USB device like the Treo or headset above).
  6. My Canon SD750 Digital Elph portable camera for anything and everything that I might need a quick camera for while away from my “bigger rig”.
  7. My 80gig 5th Generation iPod
  8. My T61p 15.4″ “widescreen” Thinkpad
  9. My X61s 12″ “ultraportable” Thinkpad
  10. My Playstation Portable, for entertainment and diversion when I’m stuck somewhere or need to get my mind off of a problem for the moment. I mostly use it for movies and games, but it can also do music, Skype and a slew of other things.

Whew!

Without structure and a system in place, I’d forget one of the above steps and put myself in a pinch when I’d need to make use of one of those items.

It’s all about systems.

First impressions with the Aliph Jawbone II Bluetooth Headset

I’ve had a lot of bluetooth headsets in the last 8 or so years, ranging from Jabra to Motorola to Samsung, BlueAnt and others. There are always positives and negatives about each and every headset I’ve owned; more than enough to rant about here.

Now that I’m taking and making meetings while on a very busy and noisy train every day, being on mute most of the call just isn’t feasible. I needed to step up the noise cancellation to make myself more useful and more productive on these calls. I also spend a lot of time on the phone on the subway, walking in the busy streets of New York and lots of other noisy places.

I prefer having a very low-profile, small and powerful headset at my disposal, and until this Tuesday the Samsung WEP410 WAS that headset.

The Samsung WEP 410 headset looks like this:

Samsung WEP410 bluetooth headset

The WEP410 is small, light and lasts forever. It also recharges in an amazingly-short amount of time. I highly recommend it for anyone who wants a powerful bluetooth headset.

I upgraded to the WEP410 headset from the much smaller (but not nearly as long-lasting), Samsung WEP200 headset.

Samsung WEP 200 Bluetooth Headset

But my headset requirements grew over time and I now need more features and function out of them, given my new environment and surroundings.

The Aliph Jawbone (version 1) was the closest contender in this space and the demos and technology itself looked very impressive. The main problem was that the “Jawbone I” headset was H-U-G-E. I can understand that it needed that space to hold the filtering electronics, but… HUGE. And heavy.

The original Jawbone headset looks like this:

Jawbone Version 1 Bluetooth Headset

I prefer not to use ear loops to hold the headset over the top of my ear, so overall weight is a factor. I’m also pretty photo-sensitive (I have 20/10 or 20/5 vision, and I don’t like a lot of light in my eyes) and wear my Oakley X-Metal Frames a good portion of the day.

Most headsets that have ear loops (Jabra, Jawbone are you listening?) don’t work at all when you wear eyeglasses or sunglasses, so I have to use a “bud” style headset, or modify an existing headset’s ear piece to accept a bud. I’ve had to do this with the last 5 headsets I’ve owned, because the supplied “bud” is nothing at all like what a human ear can accept. I don’t know what they’re molding these headset buds to fit but it most-certainly is not a human ear.

Ironically, I’m still using the 6+ year old Jabra “EarGels” that I kept from that period, to keep my new bluetooth headsets secured firmly in my ear. They look like this:

Jabra EarGels on an iPhone Bluetooth Headset

You can buy these now in packs of 6, in either clear or multicolor.

I did some searching and noticed that there was a new Jawbone version out, the Jawbone II (or Jawbone 2 as it is sometimes referred to). It promised better filtering, smaller/lighter fuselage and cost the same as the original. I decided to take the plunge and pick up one for myself.

The first thing you notice is that the packaging is absolutely stellar. It really was designed to showcase this product in every way. It is akin to a brand new concept car on a showroom floor. The plastic box, the matte-black cardboard containers inside, the directions… all of it.

The second thing you notice is that the outer surface is dimpled with a pattern that at first seems useless. It is similar to that “faux” carbon fiber look everyone is after these days. I KNOW carbon fiber. I’ve been riding a CF bike for over 8 years (complete with CF dérailleurs, handlebar, etc.), and CF has function. Fake carbon fiber does nothing but add fake aesthetics.

Jawbone II exterior of Bluetooth Headset

But the surface is more than just visual, it serves a purpose. When sound hits a flat surface, it tends to bounce back at an even rate. Because it’s hitting you at a level plane, you take the full audible hit. The surface of the Jawbone II (Jawbone 2) is dimpled in a way that breaks up the incoming (external) sounds and scatters them away from the headset, not directly off of it like a sounding board. Nice touch.

I tested a few calls with my head in the airflow of a very large air filter set to “High” as well as talking with my head within inches of my kitchen faucet with the water running full-blast. My unknowing “test subjects” barely realized that I could hardly hear them due to all the noise on my end, but they reported that MY side of the conversation was clear, crisp and without any significant background noise to distract or interrupt them… AT ALL!

There’s a few other really nice touches:

  1. The charger has a very slim wall-wart which accepts a USB male and the other end has a magnetic catch to hold the headset while charging. The wall adapter is ever so slightly larger than a box of wooden matches. No more bulky docking cradle, clip or proprietary cable required. They ship the wall wart and USB cable with the magnetic charging end. Well-done, Aliph.
  2. No more annoying blinking blue LED. Not only is the LED on the Jawbone II as thin as a cat’s whisker, but when you’re ON a call, it stops blinking, as it should. The LED on the Jawbone II is a simple white LED “sliver” when it is working, and a red LED when it needs to be charged (or is in pairing mode).
  3. Multiple choices of ear loops and sizes for the ear bud. Some headsets don’t give you a choice at all. Aliph included leather-covered ear loops as well as the simple plastic-coated wire version, in 3 different sizes for each. Again, a nice touch.

That’s good enough for me! I’ll put it to the test later this morning on the train ride into New York and see how it fares.

Now the downsides:

  1. There are no external buttons at all. I can understand the need to make an uncluttered interface, but you can hide the buttons so they’re not visible, without making the headset “fragile” while on a call. I was on a call tonight with the headset and was trying to reposition it in my ear (by shoving it back into my ear to hold it in place, because their ear buds were obviously molded for cow or pig ears). Pushing against the outside of the headset to put it back in my ear hung up on my call… because the ENTIRE HEADSET is a button. The whole outer skin of the headset is the hangup button. Ugh.
  2. No way to “bend” those ear loops without breaking them. They should be somewhat malleable so you can reposition them. In my case, I yanked them out and replaced it with a Jabra EarGels instead.
  3. No audible indicator when you’re “in” or “out of” filtering mode on the headset (the VSA or “Noise Assassin” mode). If you push on the headset (again, to stop it from falling off of your ear), you can inadvertently disable the filtering while you’re waiting for your next call. There’s no blink pattern or audible notification that lets me know I just disabled filtering. There’s also no way to verify that the filtering is either on or off by looking at the headset. Oops!

So far, I’m impressed… and so are my callers. They immediately noticed that my call was “crisp” and they could hear a lot more “detail” in my voice, which was a bit “muffled” and “muddy” with the last headsets I was using.

I’m going to really run this through its paces later this morning on the train into NYC, then on the subway and while standing in busy New York City traffic and sidewalk noise.

We’ll see how it fares. So far, I’m very VERY impressed.

Graphing an active SPAM attack in progress

Tags: , , , , ,

I woke up this morning to very slow response time on my server, and decided to check the statistics. I graph these things with a great deal of detail so I can see precisely when it happened and begin narrowing down where I need to go to fix it or report it upstream.

In this case, my incoming connections went from under 500/second to well over 3,000/second. Owch!

You can see the “wall” of traffic growing from our normal traffic rate to this enormously-increased rate:

Before the attack was stopped

Layered statistics before the attack

I checked all of the services, logs and protocols and didn’t see anything out of the ordinary. I started shutting down services one at a time and regenerated the graphs, to see if I could see any change.

One thing I noticed was that I had poppassd open on the public port. Not a huge problem, but it was something that was unnecessary on the public interface. I locked that down with iptables:

$IPT -A INPUT -s ! 127.0.0.1 -d ! 127.0.0.1 -p tcp -m tcp --dport 106 -j DROP

But as I looked further, I noticed even more:

netstat -tulpn | grep LISTEN

This showed that I had Squid listening on the public interface as well (0.0.0.0:3128). I jumped to the squid logs and was shocked to see that they were scrolling so fast that I couldn’t even read them. Ut oh!

Apparently some enterprising young spammer found my squid instance and decided to try to hijack it for his own needs. It was already locked down internally in my squid.conf to restrict use from only my block of IPs, but he was hammering it with 8,466 separate IPs trying to use it to send spam on port 25.

# cat access.log* | cut -b20-300 | grep ':25' | perl -lne 'print /((?:\d+\.){3}\d+)/' | sort | uniq  | wc -l
8464

Damn! There goes a few gigabytes of bandwidth that were eaten in the last 11 hours while I was sleeping.

I locked that down in a similar fashion:

$IPT -A INPUT -s ! 127.0.0.1 -d ! 127.0.0.1 -p tcp -m tcp --dport 3128 -j DROP

A bit more poking around with nmap, netstat, Webmin, HotSanIC and other tools allowed me to lock down some other services that incorrectly bind to the public interface and not the internal interface.

The result is that we’re back to normal:

After the attack was stopped

One last piece needed my attention. Because this was an active spam attack, propagated using the IP of my server as a vector, I had to make sure to check my mail logs and delist myself from the various RBLs who had listed me as a spammer for sending out 43,745 separate spam attempts through my IP in a matter of hours.

SpamCop originally listed me, but I corrected that, and a few others. I also reported it to my provider so they can be sure to keep a closer eye on it.

Layered statistics after the attack

You can see the drop-off on the far right of the last two graphs above and in the traffic graph below.

Ethernet statistics after the attack

Problem solved.

Validating Blog Pingback Sites with Perl

Tags: , ,

Over the last few months I’ve been wondering what the slow response time has been when I am posting new entries to my blog. Granted, the hits to my blog have more than tripled in the last 2-3 months, but my servers can handle that load. The problem was clearly elsewhere.

Some more digging and I realized that the list of 116 ping sites I have in my blog’s “Update Services” list contains quite a few pingback sites that are no longer valid.

For those new to this, a “Pingback” is a specifically-designed XML-RPC request sent from one website (A, usually a blog site) to another site (B) in response to a new entry being posted on the site.

In order for pings (not to be confused with ICMP pings) to work properly, it requires a physical link in the form of a URL to validate. When (B) receives the notification signal from (A), it automatically goes back to (A) checking for the existence of a live incoming link to (B). If that link exists, the Pingback is recorded successfully.

This “validation” process makes it much less prone to spam attacks than something like Trackbacks. If you’re interested in reading more about how spammers are using Pingbacks and Trackbacks to their advantage, I suggest reading Blog trackback Spam analysis on the “From Information to Intelligence” blog site.

But I needed a way to test all of those ping sites and exclude the ones that are dead, down or throwing invalid HTTP responses… so I turned to Perl, of course!

My list of ping sites is a sorted, uniq’d plain-text list that has one ping site per-line. The list looks something like this:

http://api.moreover.com/ping
http://bitacoras.net/ping
http://blog.goo.ne.jp/XMLRPC
http://blogoole.com/ping
http://blogsearch.google.com/ping/RPC2
http://godesigngroup.com
http://godesigngroup.com/blog/feed
http://imblogs.net/ping
http://ping.bitacoras.com
http://ping.bloggers.jp/rpc
http://ping.blo.gs
http://pinger.blogflux.com/rpc
http://pinger.onejavastreet.com/
http://ping.myblog.jp
http://pingoat.com
http://pingomatic.com
http://rcs.datashed.net/RPC2
http://rpc.blogbuzzmachine.com/RPC2
http://rpc.blogrolling.com/pinger
http://rpc.pingomatic.com
http://rpc.weblogs.com/RPC2
http://rpc.wpkeys.com
...

I pass that list into my perl script and using one of my favorite modules (File::Slurp), I read that file and process each line with the following script:

use strict;
use URI;
use File::Slurp;
use HTTP::Request;
use LWP::UserAgent;

my @ping_sites          = read_file("pings");
my @valid_ping_sites    = ();

for my $untested (@ping_sites) {
        my $url         = URI->new($untested);

        my $ua          = LWP::UserAgent->new;
        $ua->agent('blog.gnu Ping Spider, v0.1 [rss]');
        $ua->timeout(10);

        my $req         = HTTP::Request->new(HEAD=>"$untested");
        my $resp        = $ua->request($req);
        my $status_line = $resp->status_line;

        (my $status)    = $status_line =~ m/(\d+)/;

        if ($status == '200') {
                push @valid_ping_sites, "$url\n";
        } else {
                print "[$status] for $url..\n";
        }
}

my $output      = write_file("pings.valid", @valid_ping_sites);

The output is written to a file called “pings.valid“, which contains all of the sites which return a valid 200 HTTP response. The remainder are sent to STDOUT, resulting in the following output:

$ perl ./pings.pl 
[403] for http://1470.net/api/ping..
[403] for http://api.feedster.com/ping..
[404] for http://bblog.com/ping.php..
[500] for http://blogbot.dk/io/xml-rpc.php..
[403] for http://blogmatcher.com/u.php..
[500] for http://blogsnow.com/ping..
[404] for http://fgiasson.com/pings/ping.php..
[404] for http://pingoat.com/goat/RPC2..
[500] for http://ping.syndic8.com/xmlrpc.php..
[500] for http://ping.weblogalot.com/rpc.php..
[403] for http://popdex.com/addsite.php..
[404] for http://www.blogdigger.com/RPC2..
[500] for http://www.blogsnow.com/ping..
[500] for http://www.blogstreet.com/xrbin/xmlrpc.cgi..
[404] for http://www.catapings.com/ping.php..
[500] for http://www.focuslook.com/ping.php..
[500] for http://www.holycowdude.com/rpc/ping..
[403] for http://www.popdex.com/addsite.php..
[500] for http://xmlrpc.blogg.de..
...

Those failed entries are then excluded from my list, which I import back into WordPress under “Settings → Writing → Update Services”.

The complete, VALID list of ping sites as of the date of this blog posting are the following 49 sites (marking 58% of the list I started with as invalid):

http://1470.net/api/ping
http://api.feedster.com/ping
http://api.moreover.com/ping
http://bblog.com/ping.php
http://bitacoras.net/ping
http://blogbot.dk/io/xml-rpc.php
http://blog.goo.ne.jp/XMLRPC
http://blogmatcher.com/u.php
http://blogoole.com/ping
http://blogsearch.google.com/ping/RPC2
http://blogsnow.com/ping
http://fgiasson.com/pings/ping.php
http://godesigngroup.com
http://godesigngroup.com/blog/feed
http://imblogs.net/ping
http://ping.bitacoras.com
http://ping.bloggers.jp/rpc
http://ping.blo.gs
http://pinger.blogflux.com/rpc
http://pinger.onejavastreet.com/
http://ping.myblog.jp
http://pingoat.com
http://pingoat.com/goat/RPC2
http://pingomatic.com
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://popdex.com/addsite.php
http://rcs.datashed.net/RPC2
http://rpc.blogbuzzmachine.com/RPC2
http://rpc.blogrolling.com/pinger
http://rpc.pingomatic.com
http://rpc.weblogs.com/RPC2
http://rpc.wpkeys.com
http://www.a2b.cc/setloc/bp.a2b
http://www.blogdigger.com/RPC2
http://www.blogsdominicanos.com/ping/
http://www.blogsnow.com/ping
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.catapings.com/ping.php
http://www.feedsky.com/api/RPC2
http://www.focuslook.com/ping.php
http://www.godesigngroup.com
http://www.holycowdude.com/rpc/ping
http://www.imblogs.net/ping
http://www.pingmyblog.com/
http://www.popdex.com/addsite.php
http://www.wasalive.com/ping/
http://www.xianguo.com/xmlrpc/ping.php
http://xmlrpc.blogg.de

Feel free to use this list in your own blog or pingback list.

If you have sites that aren’t on this list, add them to the comments and I’ll keep this list updated with any new ones that arrive.

Bad Behavior has blocked 897 access attempts in the last 7 days.