Friday, April 20, 2007

A Few Useful Scripts

I have a set of perl scripts that I use fairly often. They convert numbers between decimal and hexadecimal, as well as to and from dotted-decimal. All are released under the GNU General Public License.

The calling syntax is the same for all of them:

$ dectohex 12345
or
$ echo 12345 | dectohex -
This allows them to be chained together.

[dectohex]

#!/usr/bin/perl
#
# Copyright (c) 2007  Michael A. Marsh
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or any
# later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# The GNU General Public License is available at
# http://www.gnu.org/licenses/gpl.txt or by writing to the
# Free Software Foundation, Inc.
# 51 Franklin St, Fifth Floor
# Boston, MA  02110-1301 USA
#

$usage = "Usage: dectohex  | -\n";

$arg = shift @ARGV || die $usage;

sub do_translate
{
   my ( $dec ) = @_;

   $hex = sprintf "%X", $dec;

   print "$hex\n";
}

if ( $arg eq '-' )
{
   while(<>)
   {
      do_translate($_);
   }
}
else
{
   do_translate($arg);
}

[hextodec]

#!/usr/bin/perl
#
# Copyright (c) 2007  Michael A. Marsh
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or any
# later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# The GNU General Public License is available at
# http://www.gnu.org/licenses/gpl.txt or by writing to the
# Free Software Foundation, Inc.
# 51 Franklin St, Fifth Floor
# Boston, MA  02110-1301 USA
#

$usage = "Usage: hextodec  | -\n";

$arg = shift @ARGV || die $usage;

sub do_translate
{
   my ( $hextotal ) = @_;

   $dec = hex($hextotal);

   print "$dec\n";
}

if ( $arg eq '-' )
{
   while(<>)
   {
      do_translate($_);
   }
}
else
{
   do_translate($arg);
}

[dectoip]

#!/usr/bin/perl
#
# Copyright (c) 2007  Michael A. Marsh
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or any
# later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# The GNU General Public License is available at
# http://www.gnu.org/licenses/gpl.txt or by writing to the
# Free Software Foundation, Inc.
# 51 Franklin St, Fifth Floor
# Boston, MA  02110-1301 USA
#

$usage = "Usage: dectoip  | -\n";

die $usage unless scalar(@ARGV);
$arg = shift @ARGV;

sub do_translate
{
   my ( $dec ) = @_;

   die $usage unless $dec =~ /^\d+$/;

   $hextotal = sprintf "%x",$dec;

   @digits = split(//,$hextotal);

   while(@digits)
   {
      $digit = pop(@digits);
      $digit = pop(@digits) . $digit if(@digits);
      unshift(@pieces,hex($digit));
   }
   while ( scalar(@pieces) < 4 )
   {
      unshift(@pieces,0);
   }

   $ipaddr = join('.',@pieces);

   print "$ipaddr\n";
}

if ( $arg eq "-" )
{
   while(<>)
   {
      do_translate($_);
   }
}
else
{
   do_translate($arg);
}

[iptodec]

#!/usr/bin/perl
#
# Copyright (c) 2007  Michael A. Marsh
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or any
# later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# The GNU General Public License is available at
# http://www.gnu.org/licenses/gpl.txt or by writing to the
# Free Software Foundation, Inc.
# 51 Franklin St, Fifth Floor
# Boston, MA  02110-1301 USA
#

$usage = "Usage: iptodec  | -\n";

$arg = shift @ARGV || die $usage;

sub do_translate
{
   my ( $ipaddr ) = @_;

   @pieces = split(/\./,$ipaddr);

   die $usage unless ( @pieces == 4 );

   for($i=0;$i<@pieces;++$i)
   {
      die "IP address must be in dotted-decimal form\n"
         unless $pieces[$i]=~/^\d+$/;
      $hexvals[$i] = sprintf "%02x",$pieces[$i];
   }

   #$hextotal = @hexvals[0..4];

   $hextotal = join '',@hexvals;

   $dec = hex($hextotal);

   print "$dec\n";
}

if ( $arg eq "-" )
{
   while(<>)
   {
      do_translate($_);
   }
}
else
{
   do_translate($arg);
}

Wednesday, April 18, 2007

rms reminisce

In keeping with my policy of violating my policy on not posting personal stuff, I had dinner this evening with Richard Stallman. It wasn't, of course, a one-on-one dinner. He was speaking at the university, and I was one of the group that went with him to dinner.

I have to say, I've read and heard a lot about his personality, and dinner was very pleasant and non-contentious. I was prepared for impassioned arguments throughout the meal. Granted, he spent much of the time catching up on work, but he'd certainly chime in with "GNU plus Linux" whenever someone slipped up and referred to "Linux." We were also watching ourselves to not accidentally say "open source" but rather "free software." I understand and sympathize with both points — he's right on both counts, if you want to be pedantic. As an activist who's always "on," it's his job to be pedantic, which can't be easy.

There wasn't much getting to know the guy, but I suspect he appreciated the opportunity to get some work done as the rest of us chatted, and he contributed significantly more to the conversation than just correcting our terminology. He seemed to enjoy his sushi, as well, certainly enough to get a couple of extra pieces.

What's the point of this post? None, really, other than to say, "Hey, I met Richard Stallman," and that, as someone who isn't a confidant, I found him reasonably pleasant to be around. Given many of the accounts I've read online, that seems to bear mention. You know, balance and all that.

Sunday, April 08, 2007

Impressions of an Idiot

Today, I mowed my lawn. From my last post, you know this means I pushed a reel mower around my yard. I also had to pick up a bunch of twigs, which took some time.

All told, I spent about an hour clearing my yard and mowing. I could tell I was getting a workout, and by the end I was ready to take off my jacket, even though it's in the 30s here.

My impression? It wasn't too bad. Given the first mow of the season is supposed to be the most difficult, since you're mowing older growth, I don't expect it to be a difficult lawn to mow. Negotiating the roots in the back was perhaps the most difficult part, but as I was mowing there I noticed that the grass wasn't particularly full, so some sort of ground cover would probably grow better there anyway.

The biggest surprise was that the slopes in my yard were much easier to mow than I'd expected. It helps that they're both short and narrow. Overall, I think my yard looks nice after the push mow, and I'll be guaranteed at least half an hour of cardio exercise every week during the growing season.

Thursday, April 05, 2007

Idiot Not Included

In another of an infrequent series of posts relating to me personally, as a new homeowner I suddenly have to worry about things of which I was blissfully oblivious in the past. Water in my basement was one such thing. Another is suddenly finding myself with a lawn that has decided, against all reason, to grow.

As a consequence of this lawn growth, I've bought a lawn mower. It has what my Dad refers to as a 1IP engine. That's one idiot-power. Yes, it's a push reel mower. This wasn't an effort to be cheap. Nor was it particularly an effort to be "green." Gas mowers are a pain, and electric mowers seem to suck. Electric mowers either have power cords, which, face it, sucks, or they have heavy batteries that make them a pain to push and that take a day to recharge (also sucks). I've used a good electric mower, but that model hasn't been made in years.

So, I researched my mower options, and a push reel mower seemed to make sense. For one, I have a very small yard. The front is mostly level, with slopes along the sides towards the back. The back is again mostly level, though with a fair number of tree roots. It's also only about half grass, with extensive slate work and some planter boxes. If the roots give me trouble, the back might become even less grass-covered.

If you're curious, I bought a Brill Luxus 38. I've only just assembled it and taken it for a test swath. I have to say, it's pretty nice. At $210, with free shipping, it's on the pricey end of push mowers, but it allegedly won't need sharpening for a decade. I've got it set at 4cm (it's made in Germany), which was a reasonably easy cut through some appreciable grass. So, while it's still a bit early to tell, I think I'm going to be happy with it. The weirdest thing about was that the assembly instructions were effectively in reverse. I suspect it would have been a lot easier to assemble the handle completely (one Phillips-head screwdriver required) before attaching anything to the reel. When mowing, it makes a pleasant shwuff shwuff shwuff sound — much nicer than the buzz of a gas or electric mower.

Saturday, March 31, 2007

Mmm...beer

I'm pleased to announce yet another blog. OK, this one doesn't get a lot of attention, and "Lying Scum-Weasels" was more-or-less a colossal failure. This new blog will be different, though. This new blog is: 36 Pints. It's about homebrewing, in particular about the homebrewing that my friends and I are doing. I'll be following each batch from inception to consumption. See the welcome post for more details.

Monday, February 12, 2007

Will Shill for Swag

As a renowned blogger, my opinion carries a lot of weight. If you're a manufacturer or distributer of fine products, for example a Sumo Omni, why not send me goodies to receive a (most likely favorable) review on this very blog?

NOTE: No guarantee is made regarding my own renown nor the effectiveness of my personal endorsement. All shilling is at the risk of the shilled.

Tuesday, January 30, 2007

The Great Beerjunction

Later this week, I'm bottling the second batch of beer (a Märzen) with one friend at his house. This weekend, I'm starting the second batch (probably an IPA) with another friend at his house. Sometime soon, possibly next weekend, I'll be kegging the first batch (a honey lager) at my new house.

Sunday, December 17, 2006

I'm Doctor Zoidberg, Homeowner!

I'm going to break my rule of not discussing personal items. I'm about to move into my new house. If you

  1. feel like you should have my new address and phone number,
  2. didn't receive my email, and
  3. read this blog,
drop me a line.

Tuesday, December 12, 2006

This One Goes to Eleven

This has been eating at me, and I can't be the only one. Whenever I hear that Eric Clapton commercial where he's talking about listening to records over and over, all I hear is Nigel Tufnel from Spinal Tap. "You can't dust for vomit."

Wednesday, October 18, 2006

And Only Seven Months Late

Because this blog is nothing if not a bellwether for cultural trends, I feel obligated to direct you to The Show, starring ZeFrank. He's thinking, so you don't have to.

Saturday, October 14, 2006

A Couple of Administrative Notes

First, I have another blog, co-written with Luwak P. Civet, called Lying Scum-Weasels. It updates less frequently than this blog does, despite twice the authors. I have added it to the sidebar links for your convenience and derision.

Second, the request line is still open, and will remain so indefinitely until I get sick of it. Since Blogger neglects to inform me to which article a comment was submitted when it notifies me, any comment can become a reader request. To minimize confusion (if you're into that sort of thing), you might favor adding your requests to the comments of the original post, referenced above.

Wednesday, October 11, 2006

The Vast Left-Wing Conspiracy

The way Hillary Clinton is shooting off her mouth these days, attacking the President and blaming America, you'd think it was already 2008. Hillary's public antics are reminiscent of Michael Dukakis. The only good thing about Dukakis was the number of states he gave away to George H. W. Bush.

Dukakis is emblematic of the problem with Liberals in America, even down to his Greek heritage. I think we all know what kind of "family values" were practiced in Greece during it's so-called "Golden Age." Hillary's not shying away from the Homoliberal Agenda, either.

Perhaps the biggest problem with the Left is their constant drive to take the "God" out of the "governed." This agenda isn't always as obvious as efforts to repeal the Ten Commandments. Even our woodworking classes, which are as American as anything taught in our Liberal-controlled public schools, are being corrupted by the crypto-Darwinian message hidden in something so seemingly innocuous as "Gorilla Glue." As if "uncle Bobo" were in the shop at the next bench, using tools like the proto-human that atheists would have us believe he is.

It's no wonder that Liberals support abortion-on-demand. According to them, killing a cockroach with an X-Acto knife is no different than killing a fetus with a scalpel, since either one could turn into a human being at any moment. While the college-age Liberals seem to like living in their own filth and surrounded by vermin, we should never forget that the driving force behind the Liberal Agenda are the wealthy Californians and New Yorkers who want to assuage their feelings of guilt for living in immaculately maintained and pest-controlled mansions.

Liberal attacks on God are nothing new. Back in 1845, the Devil-worshipper Daniel Webster tried to block Texas' entry into the Union. He wanted to prevent a new bastion of Godliness that would stand up to his Satanic ambitions. Well let me ask you, Mr. Webster, would we have the transistor today if Texas weren't part of these United States? I'll let you guess the answer to that one. I can tell you for certain that your Rand-McNally road atlas would look a Hell of a lot different, without the economic drive provided by the natural resources of Texas. Instead of having to learn Spanish to give instructions to the Mexican who scrubs your toilet, you'd have to learn Spanish to understand the instructions of the Mexican whose toilet you scrub.

We have to remember that Liberals have a definite agenda. That agenda is to destroy America's moral foundation, and with it our entire Nation. This destruction is being done methodically, one moral precept at a time. One day, it's denying God's Creation. The next, it's defying holy proscriptions against sodomy. After that, who knows? Possibly attacking our divine right to own guns. (I believe that was Leviticus 12:8.) In November, remember to vote Godly. Our futures depend on it.

Tuesday, October 03, 2006

Hyper-Sensitive Fucknut of the Week

This story is just completely stupid. Or rather, the the vice-principal is completely stupid. I'm an atheist, and pretty openly so, so it's not like I'm prone to coddling the God Crew when it comes to thinly veiled proselytizing masquerading as "private worship." But this is just moronic. What purpose is possibly served by preventing any student from reading any book (other than "controlled" books such as pornography, and there are undoubtedly people who would argue with that distinction)?

I'd be happy to see students reading The Bible. Or The Koran. Or The Age of Reason. Or The Necronomicon, for that matter. If they're reading, they're using their minds. Hopefully, when this girl reads her Bible, she actually thinks about what she's reading, whether to evaluate it critically or to figure out how the various teachings fit together into a single whole.

Imagine the uproar and protests if the school had prevented a student from reading The Koran. Muslim advocates would be up in (metaphorical) arms about this perceived attack on their religion. If I were cynical (OK, a touch more cynical), I'd say this was done deliberately to set a precedent for when a Muslim student is targetted by this sort of arbitrary censorship. Not that I think the girl was put up to this, but to the vice-principal, this could have been a God-send.

Sunday, September 24, 2006

How Else Are You Going To Learn This?

or: From the "Public Service" File

If you have an opened packet of chewing gum in your shirt pocket when said shirt goes into the wash and then the dryer, the gum does not, in fact, make a mess of the entire load of laundry. Instead, you'll find the paper wrappers from the individual sticks slightly shredded, and the foil-wrapped sticks folded neatly into thirds and slightly compressed. At least, that's how you'll find three of the four hypothetically laundered sticks of gum. The jury is still out on that fourth stick.

Incidentally, the comments are still open and being monitored for reader requests, which has, disappointingly, resulted in only one entry so far.

Saturday, September 09, 2006

Wax Production in Medieval Germany

The German city of Homburg is perhaps best known today for its contributions to haberdashery. Homburg, like it's similarly named cousin, was the birthplace of a casing-less ground-meat product, a revolutionary idea in Germany. Unlike the other ground-meat product, the Homburg patty was not, in general, favorably received. A common remark by the citizens of Homburg was, "Better on the head than in the mouth." Fashion at the time being at least somewhat subject to practicality, the Homburg patty was modified over time both to sit more reliably on the head and to be made of a material that failed to begin smelling rank after only a few days of wear.

Back in the Eleventh Century, however, Homburg was a major center of dyed wax production. It was noted particularly for a variety of purple wax. The color was derived from the extract of a local herb, Salvia puniceus; the mixing of this dye into parafin by the standard techniques (that is, melt the parafin, add the dye, and allow the parafin to set) resulted in an extremely uneven distribution of the dye.

As a consequence, the city's monopoly on Homburg purple wax™ (or it would have been, had the concept of trademark existed at the time) owed at least as much to the proprietary nature of the blending technique for the dye as to the geographic uniqueness its source. So lucrative was the purple wax business, and hence so secretive the dye-blending technique, that it was protected both by Act of the city magistracy and a committee of municipal witch-hunters. In the year 1031 alone, over 20 witches were burned at the stake for attempting to learn the method of making Homburg purple wax to use in the furtherance of the Devil's unholy purposes.

Particularly popular were Homburg's purple wax drawing-sticks. (The word "crayon" would not appear for almost two more centuries, when they were popularized throughout Europe by the Duc de Rayon, who was later commemorated by the DuPont Corporation for his pioneering contributions to chemical engineering.) Children in every south-German hamlet or burg could be seen playfully defacing their homes' walls with colorful drawings of horses and inedible meat products.

Homburg purple wax fell out of favor in the year 1036. A travelling Greek organ grinder named Stavros arrived in town in early May, after having been chased out of Saarbrücken by the torch-wielding citizenry for reasons that have been lost to history. His monkey, named Gunther (after the organ grinder's grandmother), escaped one day while the organ grinder slept after a particularly valiant lunchtime attempt to consume the local cuisine. Gunther slipped into the home of the Chief Magistrate through an open window, where he came upon a few unattended purple drawing-sticks belonging the the Magistrate's 9-year-old daughter, Helga. Being a monkey, and hence not especially adept at discerning the edible from the inedible, Gunther ate the drawing-sticks.

Upon being discovered by the Chief Magistrate, the startled Gunther emitted a simian shriek, reported to sound like "Mwa! Ha ha! Ha!" In shrieking, Gunther displayed his bare teeth, which had been colored purple by the wax. So amusing was this sight, that the Magistrate related it regularly at cocktail parties to anyone who would remain in his vicinity long enough to hear. Soon, the story of Herr Purpurroteraffe (as the Chief Magistrate came to be known behind his back) spread throughout West-Central Europe.

News of the Purple-Mawed Monkey of Homburg eventually reached the court of Conrad II, the Holy Roman Emperor. The Emperor, being of royal blood, took this story to indicate that a monkey in Homburg was attempting to usurp his throne. A military expedition was launched at once, with over one thousand troops assembled to march on Homburg. The military contingent marched to the gates of city, which they were about to sack when the magistracy requested a parley. The situation was explained to the Emperor with the assistance of some cleverly improvised hand-puppets, and the attack was called off. However, a condition for sparing the city was that they were to cease production of purple wax immediately and indefinitely. The citizens of Homburg eagerly agreed, secretly being grateful for the attendant decline in time spent scrubbing wax off of their walls.

The prohibition on purple wax continued for many centuries as a tradition among wax-workers, until 1908 when the Crayola Company introduced a purple crayon with its new "Condemned Colors" box of eight. Purple is now a widely accepted constituent of crayon assortments everywhere, only slightly diminishing the popularity of perennial favorites red and blue.

Thursday, September 07, 2006

Riffing the Light Fantastic

I'd like to do something a little different. I'd like to take requests. Use the comments, and give me a couple of words (perhaps drawn randomly from /usr/share/dict/words or the equivalent) or a phrase. I'll try to come up with something for as many of the suggestions as possible. I won't promise anything deep or well-researched, but there's likely to be a fair amount of sarcasm. Posts will appear as I get around to them, which will depend on the quality of the suggestions and how entertaining I find the whole exercise.

And no, this is not a cheap ploy to figure out how many actual readers I have. I'm pretty sure that number is somewhere between two and five.

Thursday, August 10, 2006

Posturing

I'm currently undergoing physical therapy for back pain related to decades of bad posture, exacerbated by actually attempting to exercise. Part of the treatment is to try to maintain better posture while sitting at the computer at work or at home. In order to remind myself to sit up straight, I wrote the following Python script using Tk, which I have named "nag":

#! /usr/bin/python
#
# Copyright (c) 2006  Michael A. Marsh
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or any
# later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# The GNU General Public License is available at
# http://www.gnu.org/licenses/gpl.txt or by writing to the
# Free Software Foundation, Inc.
# 51 Franklin St, Fifth Floor
# Boston, MA  02110-1301 USA
#

from Tkinter import *
import tkFont
import select
import random

def callback(event):
    root.quit()
    root.withdraw()

root = Tk()
frame = Frame(root)
frame.master.title("nag")
frame.master.geometry("+0+0")
f = tkFont.Font(family="Times", size=40, weight=tkFont.BOLD)
l = Label(frame,text="Sit up straight!",fg="red",bg="white",font=f)
l.pack()
frame.pack()
frame.bind_all("<Button-1>", callback)
random.seed(None)
while True:
    t = 60 * random.randint(5,10)
    select.select([],[],[],t)
    root.deiconify()
    root.mainloop()

Users of Fvwm might find the following snippets from my .fvwm2rc helpful as well:

# Styles for various common programs:
Style "nag"             NoTitle, NoHandles, DecorateTransient, Sticky
AddToFunc InitFunction
+                         "I" exec nag

[Edited 8/19/06:] The original version had a memory leak. This version preserves the initial window, hiding it when clicked and revealing it after the 5-10min delay.

Wednesday, August 02, 2006

Wikipedia Redux

After Stephen Colbert mentioned Wikipedia on The Colbert Report, the Wikipedia entries on the show, the character Stephen portrays, and elephants received repeated edits corresponding to suggestions that Stephen made on his show.

Only one word comes to mind to describe this:
Meow.

Monday, July 31, 2006

Biodeterrence

Today the Washington Post ran an article on human-engineered viruses (registration might be required). While I certainly wouldn't want to discount the threat posed by bioweapons, it seems the press at least is prone to viewing threats in a overly compartmentalized fashion. To protect ourselves from bioweapons, we need stockpiled antivirals or other biological countermeasures, or laws to restrict the proliferation of the technology.

What seems to be ignored, though possibly not by the policy-makers, is the fact that the best way to protect ourselves against bioweapons is to prevent them from being used. Non-proliferation is definitely part of this, but one that is ultimately futile. The genie, as the cliche goes, is notoriously difficult to put back in the bottle.

We have at our disposal a considerably more effective deterrent. Consider that some country, let's call it Malignia, decides it wants to support a war of terror against the United States. Malignia manages to develop or acquire a biological weapon. If Malignian-sponsored terrorists sneak this weapon into this country and release it, it could spread very quickly causing millions or tens of millions to become severely ill or die. In response, we could launch a nuclear strike against Malignia that would completely obliterate its population.

The ability to pursue a disproportionate response to any potential attack from a terrorist state automatically gives us a strategic advantage, and is the nature of deterrence. It would be foolish to ignore this deterrent capacity in any consideration of how to prevent biological attacks.

Wednesday, July 19, 2006

Medieval Pandering Vote-Whores

Here's what the House leadership considers the nation's vital business:

The House, citing the nation's religious origins, voted Wednesday to protect the Pledge of Allegiance from federal judges who might try to stop schoolchildren and others from reciting it because of the phrase "under God." [Associated Press]

Let's be clear about this. Our politicians don't think this is important, they think it will be popular. It's a bold move of stating how courageous they are to take a position with which most of their constituents agree and which addresses no real threat. Whether or not you agree with the phrase "under God" being in the pledge (dating only as far back as the McCarthy witch-hunt era), this is a waste of time designed to do nothing but garner votes in November. The legislation is, in fact, completely irrelevant. The Pledge was established by Congress, and the debated phrase was added by Act of Congress in 1954, so if the Pledge is unconstitutional without this new bill, it will still be unconstitutional with it.

This kind of legislation shows absolutely no respect for the intelligence of the voters. It's pure pandering. And it works. Our Congressional representation, in both parties, has been treating us like children or idiots, and will continue to do so as long as we keep rewarding them for it by repeatedly returning them to their elected positions.

Show the vote-whores that you've had enough of their pandering. The sponsors and co-sponsors of this legislation can be found at thomas.loc.gov for the House and Senate.