Tue, 24 Aug 2010

Unions vs. Globalization

Unions are against globalization. To listen to them, unions are a force for good for all workers (rather than just the workers who pay the union its dues). But to watch them, you can see that they're in favor of cartelization. They don't mind other people competing against them, as long as those people are hobbled by the same pay rate, protections, and benefits as the union members have. In other words, they're not allowed to use a lower cost of living, or a lower regard for their own safety, or a longer work week as a competitive advantage.

Sigh. Unions! Still selfish, after all these years.

Posted [23:52] [Filed in: economics] [permalink] [Google for the title] [digg this]
qrcode

Sun, 08 Aug 2010

US WMS

JOSM doesn't support WMS Capabilities, so I created a crutch for it. These two programs (the first calls into the second) create three files for each state. One is the capabilities file downloaded from Seamless. Another one contains just the WMS URLs. Another one is an OSM file containing bounding boxes for each of the WMS layers. Load it into JOSM to see what layers cover what.

I find that it's helpful to initially turn on a WMS layer while zoomed out enough to see the entire bounding box. You get a very low resolution layer, but you can see if it overlaps your area of interest. Then you can zoom in enough, right-click on the layer name in the Layers box, and selecte "Change Resolution" to get a nicely rendered layer.

#!/usr/bin/python

# pulled by hand from http://seamless.usgs.gov/wms_services.php?layerid=15
all = """USGS_EDC_Ortho_Coastal	http://ims.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Coastal?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_StateLocal	http://ims.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_StateLocal?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Urban	http://ims.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Urban?REQUEST=capabilities&SERVICE=WMS
BLM_Ortho	http://ims.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/BLM_Ortho?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NYSDOP_Grid	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NYSDOP_Grid?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Alabama	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Alabama?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Alaska	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Alaska?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Arizona	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Arizona?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Arkansas	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Arkansas?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_California	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_California?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Colorado	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Colorado?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Connecticut	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Connecticut?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Delaware	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Delaware?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_DistrictOfColumbia	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_DistrictOfColumbia?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Florida	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Florida?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Georgia	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Georgia?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Hawaii	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Hawaii?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Idaho	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Idaho?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Illinois	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Illinois?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Indiana	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Indiana?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Iowa	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Iowa?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Kansas	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Kansas?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Kentucky	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Kentucky?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Louisiana	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Louisiana?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Maine	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Maine?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Maryland	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Maryland?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Massachusetts	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Massachusetts?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Mexico	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Mexico?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Michigan	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Michigan?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Minnesota	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Minnesota?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Mississippi	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Mississippi?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Missouri	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Missouri?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Montana	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Montana?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Nebraska	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Nebraska?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Nevada	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Nevada?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NewHampshire	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NewHampshire?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NewJersey	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NewJersey?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NewMexico	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NewMexico?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NewYork	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NewYork?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NorthCarolina	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NorthCarolina?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_NorthDakota	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_NorthDakota?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Ohio	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Ohio?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Oklahoma	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Oklahoma?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Oregon	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Oregon?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Pennsylvania	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Pennsylvania?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_PuertoRico	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_PuertoRico?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_RhodeIsland	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_RhodeIsland?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_SouthCarolina	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_SouthCarolina?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_SouthDakota	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_SouthDakota?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Tennessee	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Tennessee?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Texas	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Texas?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Utah	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Utah?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Vermont	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Vermont?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Virginia	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Virginia?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Washington	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Washington?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_WestVirginia	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_WestVirginia?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Wisconsin	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Wisconsin?REQUEST=capabilities&SERVICE=WMS
USGS_EDC_Ortho_Wyoming	http://imsortho.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDC_Ortho_Wyoming?REQUEST=capabilities&SERVICE=WMS"""

for one in all.split("\n"):
    state, url = one.split("\t")
    state = state.replace("USGS_EDC_Ortho_", "")
    # if for any reason, you need to run this program twice, comment out the following line
    print "wget -O %s.xml %s" % (state, url)
    print "./capabilities-to-osm.py %s.xml >%s.wms" % (state, state)

capabilities-to-osm.py follows:

#!/usr/bin/python

from xml.sax import saxutils
import sys
import time

class OSM():
    nodenum = -1
    waynum = -1

    def __init__(self, outf=sys.stdout):
        self.outf = outf
        self.outf.write("""<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='osmgen'>
""")
        self.startnum = None

    def point(self, x,y):
        self.outf.write("<node id='%d' lat='%s' lon='%s' />\n" % ( self.nodenum, y, x))
        self.nodenum -= 1

    def start(self):
        self.startnum = self.nodenum

    def stop(self, name=None):
        self.outf.write("<way id='%d' visible='true'>\n" % self.waynum)
        self.waynum -= 1
        for n in range(self.startnum, self.nodenum, -1):
            self.outf.write("<nd ref='%d'/>\n" % n)
        self.outf.write("<nd ref='%d'/>\n" % self.startnum)
        self.outf.write("<tag k='area' v='yes'/>\n")
        if name is not None:
            self.outf.write("<tag k='name' v='%s'/>\n" % name)
        self.outf.write("</way>")

    def close(self):
        self.outf.write("</osm>\n")

class print_track(saxutils.XMLFilterBase):
    chars = None
    baseurl = None
    def startElement(self, name, attrs):
        if name == 'LatLonBoundingBox':
        # <LatLonBoundingBox minx="-79.810565637" miny="0" maxx="-71.8388440985" maxy="45.1013683371"/>
            osm.start()
            osm.point(attrs['minx'], attrs['miny'])
            osm.point(attrs['minx'], attrs['maxy'])
            osm.point(attrs['maxx'], attrs['maxy'])
            osm.point(attrs['maxx'], attrs['miny'])
            osm.stop(self.name)
        elif name == 'Name':
            self.chars= ''
        elif name == 'OnlineResource':
            self.baseurl = attrs['xlink:href']
    def characters(self, ch):
        if self.chars is not None:
            self.chars += ch
    def endElement(self, name):
        if name == 'Name':
            self.name = self.chars
            self.chars = ''
            if self.baseurl:
                print "%sservice=WMS&version=1.1.1&request=getmap&width=500&height=500&format=image/png&SRS=EPSG:4326&layers=%s&" % (self.baseurl, self.name)

from xml.sax import make_parser
from xml.sax.handler import feature_namespaces

if __name__ == '__main__':

    import sys
    # Create a parser
    parser = make_parser()


    # Tell the parser we are not interested in XML namespaces
    parser.setFeature(feature_namespaces, 0)

    osm = OSM(open(sys.argv[1].replace('.xml', '.osm'), "w"))

    # Create the handler
    dh = print_track()

    # Tell the parser to use our handler
    parser.setContentHandler(dh)

    # Parse the input
    parser.parse(open(sys.argv[1]))

osm.close()

Posted [15:40] [Filed in: osm] [permalink] [Google for the title] [Tags , ] [digg this]
qrcode

Wed, 28 Jul 2010

Stupid Conservatives

Yo! Stupid conservatives! Y'all keep whinging about how wonderful it is that Arizona is FINALLY doing something about immigration. It sounds like you wish that the Federal Government would do its job and keep those dratted foreigners out.

Well, I have exactly zero words for you:

[nelson@desk ~]$ grep -i immigration ~/Constitution 
[nelson@desk ~]$ 
Yes, that's right, immigration is not one of the enumerated powers. Maybe you'd like it to be? Maybe you wish that it was? Maybe you're willing to give this one power, just this one, to the Feds?

Well, I have exactly one word for you: emigration.
If the Feds can control immigration even though the Constitution doesn't give them that power, then they can also control emigration. So when the USA turns into the communist USSA and Der Presidente for life decides that you can't leave, where are you going to be THEN??

The Feds don't have the ability to stop people from entering or leaving the United States, and that's a good thing.

Posted [20:51] [Filed in: economics] [permalink] [Google for the title] [Tags , ] [digg this]
qrcode

Sun, 18 Jul 2010

Williams Done Wrong

Hey you, over there. If you were offended by Mark Williams blog posting about a letter from Colored People to Abraham Lincoln, THEN YOU ARE STUPID. And you lack any sense of historical perspective. Many many people thought at the time that colored people could not take care of themselves. That freedom was too much for them. That they would have to think for themselves, and suffer the consequences of their choices. That colored people couldn't do that, and so for example, if you wanted to free your slaves, you first had to put up a bond against them becoming wards of the state.

So to pretend that "Colored People" were writing to Lincoln to agree with the racist opinion of the time, is just too delicious for words. It's absurd theater at its best.

Posted [18:12] [Filed in: economics] [permalink] [Google for the title] [Tags ] [digg this]
qrcode

Sat, 26 Jun 2010

Violently Protesting for Peace

I just have to shake my head. Again, at global government meetings, you have so-called "anarchists" who are demonstrating for their concept of peace and justice, which seems to include violence. But violence doesn't cause people to say "Hey, my government is engaging in violence. I must want less government". No, they say "Hey, my government isn't going enough to stop the violence. I should give them more power (money and privilege) so that they can keep these protesters in line."

It's like shooting yourself in the foot to promote foot health, to mix a metaphor.

Posted [16:18] [Filed in: economics] [permalink] [Google for the title] [Tags , , , ] [digg this]
qrcode

Mon, 07 Jun 2010

Less Government?

I'm not sure Leonard Pitts is correct about Bobby Jindal rethinking his belief in less government. What if your next-door-neighbor contracted with a wind energy company to erect a wind generator, and it fell on your property? You'd be angry at the company, but you'd hold your neighbor responsible.

Now, the US Government claims ownership of the waters off the coast. It licensed BP to drill off the coast. That went sour, and Louisiana has been hurt. They're holding the US Government responsible.

This has nothing to do with the correct size of your next-door neighbor. Nor does it have anything to do with the correct size of the US Government (which does things not even remotely present in the US Constitution).

Government is the enemy in the case of this oil spill, since it didn't require remotely operated valves on the blowout preventer.

Posted [00:08] [Filed in: economics] [permalink] [Google for the title] [Tags , , ] [digg this]
qrcode

Sat, 29 May 2010

Ride starting Sat May 29 15:47:05 2010

22.32 km 73219.91 feet 13.87 mi 5798.00 seconds 96.63 minutes 1.61 hours 8.61 mi/hr

Went out for a late afternoon ride with the wife on the tandem because the yankees blew a 7 run lead. Felt much better about it after the ride.

Posted [18:35] [Filed in: bicycling] [permalink] [Google for the title] [Tags ] [digg this]
qrcode

Mon, 24 May 2010

Not the free market's job

A bunch of people are tweeting and retreeting the question "I didn't look today, did the free market clean up the oil yet?". I have a couple of responses to that. First that there is no such thing as a free market. You're not free to sell something unless someone else is willing to buy it. That points to the conclusion that there are only customer-regulated markets and government-regulated markets. And that poses the question: who's the customer here, and if they're not regulating why not?

If customers can't regulate the behavior of sellers, then it's not even close to being that-thing-which-is-called-a-free-market. So that points to this: when governments regulate, they don't regulate in a vacuum. Their regulation displaces customer regulation. If you look at the oil industry, you'll find that it's regulated up the wazoo and back down again. Customers can't regulate because they're being prevented from doing so by government regulation.

Thus, to my friends who are asking this question, I suggest that since a free market isn't present in the oil industry, it's silly to expect that something which doesn't exist is capable of taking action.

And my second response is to ask what would have happened had this oil spill happened on private property. It's certainly the case that the property owner would have a contract with BP, and the contract would specify remedies. One way or the other, the property owner is going to be compensated for the risk of oil spills.

Who is the property owner here? Why, it's the federal government, which claims to own the seas off our coast. What does their contract with BP say? If it doesn't hold BP's feet to the fire for enough money to clean up the oil, then why did the government allow the drilling?

So the question is not why the free market hasn't cleaned it up yet, but instead why the government screwed up. Private companies fire incompetent executives, and if they don't do that, they go out of business. Who's going to lose their job over the irresponsible handling of the BP drilling? And if they don't, will the government go out of business?

The answer is obviously "no" to the second, and probably "nobody" to the first. And that, my friends, is exactly why you want to limit the things you let your government do.

Posted [00:18] [Filed in: economics] [permalink] [Google for the title] [Tags , , , ] [digg this]
qrcode

Sun, 23 May 2010

Racism by Rand Paul?

Rand Paul points out that customer regulation of markets doesn't tolerate racism. Racism in a market is a commons. Anybody can be a racist, up to a point, but if too many people are racists, the market for racism gets destroyed. In order for all the racists to succeed in business, you need to manage this commons. Typically, this is done by government, and specifically, in the case of black racism, by Jim Crow laws.

Just another example of government regulation of markets making everyone worse off. It's a dangerous tool that we're better-off without. Yes, it can sometimes succeed, but most often it fails, and because the future is unknown to us, we can't pick the successes and avoid the failures.

Better to have separation of state and markets. Let customers regulate markets, not politicians.

Posted [03:09] [Filed in: economics] [permalink] [Google for the title] [Tags , ] [digg this]
qrcode

Sun, 02 May 2010

Immigration, the victimless crime

I am disappointed by conservative's reactions (Fred Thompson, and Anne Coulter, to name two) to the Arizona legislation. They point to a higher crime rate by illegal immigrants, to which I say "When immigration is outlawed, only outlaws will immigrate." If you make it risky to immigrate, only those with nothing to risk will immigrate. Perhaps this will surprise some conservatives, but there are Mexican professionals like doctors, lawyers, engineers, and programmers, who have better things to do than come to the US and standing around waiting to be hired.

Also, I want to see the victim of the crime of illegal immigration. Name the victim, or else I'll claim it's a victimless crime.

Or maybe they want to claim that Mexicans come here just to go on welfare? Sorry, but the facts go against that; instead they work on fake social security cards for which they will never be able to claim the benefits.

Or maybe they want to claim that Mexicans are here to take American's jobs? Well, the day that a spanish-only Mexican can take an english-speaking American's job, is the day that Mexican deserves the job. If an American can't or won't work harder than a Mexican, I have no pity for them. If they're a victim, it's of their own laziness.

Posted [23:56] [Filed in: economics] [permalink] [Google for the title] [Tags , , , ] [digg this]
qrcode