Some good history in this video that I wasn’t aware of.

I’ve seen Elizabeth in videos a couple of times.

Believe I’ve even exchanged emails with jeremy.

Never heard of Barbara Jordan.

A must see.

I like to see the way Elizabeth gets directly to the point.

Nothing has changed since way back when.

This is why I say enough, and try and educate everyday Americans.

A very good video and one we need to discuss.

I had never heard of Elizabeth Farah until about a month ago when I saw her and Steve Bannon discussing the H-1B.

That was a good video, and this is a good video.

I especially like the fact that they made the connection that china would be a nobody if our own businesses hadn’t created it by sending our jobs there.

And more importantly that the same thing is now happening with India.

This war on American workers will be won by battles on many fronts.

What they are discussing here is one of those fronts.

The downside I see is that this has been building since the 70’s when our businesses began sending our jobs to China and since 1990 when our businesses doubled down by importing a tidal wave of nonimmigrant guest workers.

Which means it is going to take tons of lawyers and time to fight it out in court.

And it needs to be done.

But I wanted to show you another front in this war, and one that I believe will win much sooner.

Lets discuss what President Trump did wrong and why everybody hates him for being a racist and against immigration.

Immigration or Nonimmigrant?

See the first Total line?

This is the total for Immigrant.

See the second Total line?

This is the total for Nonimmigrant.

By not distinguishing between Immigrant and Nonimmigrant, you suddenly have a lot of American families calling you a racist even though what you might be doing is right.

Simply because you said you were against immigration.

This is important.

We must refer to nonimmigrant totals when making any claims, or we will immediately be on the defensive, no matter how right our cause is.

How many jobs did we create?

Elon Musk has convinced President Trump that it is possible to create an infinite number of new jobs.

And it is possible even in my opinion.

But, as you can see, every President has created about the same number of jobs since 1939, and that even includes President Trump in his first term.

But he believes if he gets all of these businesses to set up shop in America, he can create enough jobs to break this trend.

And he might be able to do that, but we have a substantial amount of data proving that rather than hire Americans in America, companies like Apple and TSMC and Hyundai or the Chip Companies will import nonimmigrant guest workers to work in those jobs here in America.

How does that benefit America, or Americans?

Before looking at the next section, every time in the media, tv, news, radio, political discussion, whatever, when somebody discusses jobs we need to immediately ask them how many jobs we create per year on average.

The answer is about 2 million jobs per year.

We need to force this question because it avoids any racist or xenophobic statements immediately.

How many of these jobs do Americans get?

Every month when the unemployment data comes out on the first friday of the month, there is a Table A-7 that gets updated.

It tracks EMPLOYED by foreign born and native born.

I track this monthly and you can view it at any time by clicking on either of the following two links.

The main thing you need to understand is that for every point foreign born goes up, native born goes down one point.

Now lets look at the summary page on the second link titled tablea7

See how the Foreign Born Percent is at 0.23% and the Native Born Percent is at -.023%?

This is the point for point I have been discussing.

We have data going all the way back to Jan 2007, but because President Trump was bragging last month about how he broke the 15 month losing trend that Biden had set, I only compare the last two months so we can compare to his numbers when he releases them.

Notice how Foreign Born received 538,000 of the jobs created, and Native Born received 329,000 of the jobs created?

 

This means that Foreign Born received 51.6% of the jobs created and Native Born received 48.4% of the jobs created.

What most don’t notice is Foreign Born Workers are 19.7% of the workforce and Native Born Workers are 80.3% of the workforce as of the latest reading. (last line where the red and green markers are.

Those paying attention will notice that the job gains described here do not match the actual total nonfarm payroll job gains.

This is because they use two different systems for tracking the data.

 THE EMPLOYMENT SITUATION -- MARCH 2025


Total nonfarm payroll employment rose by 228,000 in March, and the unemployment rate changed
little at 4.2 percent, the U.S. Bureau of Labor Statistics reported today. Job gains occurred
in health care, in social assistance, and in transportation and warehousing. Employment also
increased in retail trade, partially reflecting the return of workers from a strike. Federal
government employment declined.

Now lets get back to the question of how many jobs have we created.

We know from the previous sections that we create approximately 2 million jobs per year, and that Americans are not getting the lions share of those jobs.

Now lets look at our high school graduates.

The data for this chart can be found by clicking on the following link.

https://nces.ed.gov/programs/digest/d17/tables/dt17_219.10.asp

As you can see, we are close to 4 million high school graduates per year needing jobs, yet we only create about 2 million jobs per year.

So in other words, we are setting our high school kids up for failure before they have even began their game of life.

Why are we allowing one single nonimmigrant visa to be issued to anybody wanting to work in America when this is happening is what you need to be discussing when our politicians or our businesses tell you they need more workers.

Now we discuss nonimmigrant visa totals.

A quick glance at this chart shows us that on average we are issuing about 6 million Nonimmigrant visas per year.

The argument can be made that many of them are for pleasure, and this is true.

But the argument can also be made that many of them want those 2 million jobs per year that we create and they don’t give a damn about our high school graduates getting any of them.

To understand the totals, we need to look at these 4 pages..

There are many questions I have at this point, but the main two are which ones are wanting our jobs, and of those wanting our jobs, are these visas renewed each year (so that the total would be more than it is).

How do we know the exact totals?

But again, our conversation should not have reached this level because it is obvious that we have more high school graduates needing jobs, then we created jobs for.

Time to discuss those STEM jobs.

You do not hear our businesses say we need to import more people for the restaurant industry or the attorney industry.

No, they say we don’t have enough programmers.

Before we even open our mouths to respond, we need to understand this data so that we can say why?

Computer and mathematical jobs comprise the T and M portion of our stem jobs.

In 2024 we created 15,490 computer and math jobs.

In 2024 we had 566,993 H-1B applications for those jobs.

Even the dumbest reporter out there should be able to say Elon, how do you justify wanting 566,993 H-1B workers when we only created 15,490 jobs?

Architecture and Engineering comprise the E portion of our stem jobs.

In 2024 we created 27,550 architecture and engineering jobs.

In 2024 we had 78,759 H-1B applications for those jobs.

By now that dumb reporter should be saying, where is the shortage of workers?

This is the doctors portion of our stem jobs.

It does appear that we create more jobs than we have H-1B applications in this field.

You can pull up any of these charts and more by clicking on the following link and selecting the appropriate category.

https://guestworkervisas.com/oes.php

As you have seen, our businesses and politicans saying that we don’t have enough high skilled workers is nothing but a lie, and we need to call them out on this.

Happy Hunting

By watching the video, you have seen one aspect of how this battle needs to be fought, and a good one too.

Myself, I’m a simple country boy, raised in the oil field and the navy and I prefer a simpler strategy that avoids any cries of racism and xenophobia that will win the war much quicker.

To me this nonimmigrant scam where our businesses and politicians say they can’t find enough skilled people can be thought of as a deer.

I want to hunt it.

I want to kill it.

I want to hang it from a tree and skin it and quarter it.

I want to grind it up into sausage.

I want to distribute it to all of those like myself who have lost everything because our politicians have enabled this scam since the 1970’s and doubled down on it in 1990.

 

 

 

 

 

Two Google Maps Javascript, on same web page

I struggled to find a way to do this.

There are a few articles or videos showing how to do it, but none seemed to work.

I finally got it working reliably and thought I would share how I did it in case somebody else is trying to do this.

Here is a sample output.

https://guestworkervisas.com/bertest.php?criteria1=TATA+CONSULTANCY+SERVICES+LIMITED&year=2024H1B

The link above is to the actual map.

Here is how I did it.

1.

<script src=”https://maps.googleapis.com/maps/api/js?key=&libraries=places&v=weekly”></script>
2.
<script>
initMap1();
initMap2();
async function initMap1() {
    var map1;
    var bounds1 = new google.maps.LatLngBounds();
    var junction = {lat: 39.0997, lng: -94.5786};
    map1 = new google.maps.Map(document.getElementById(‘map1’),
        {
            zoom: 2,
            center: junction,
        });
    <?php
        include(‘db_include.php’);
        $query = “SELECT EMPLOYER_NAME, SECONDARY_ENTITY_BUSINESS_NAME, WORKSITE_ADDRESS1, WORKSITE_CITY, WORKSITE_STATE, WORKSITE_POSTAL_CODE, WORKSITE_WORKERS,replace(replace(WAGE_RATE_OF_PAY_FROM, ‘,’, ”), ‘$’, ”) as payroll, JOB_TITLE, lat, lng  FROM ” . $year . ” where EMPLOYER_NAME = ‘” . $criteria1 . “‘ AND WORKSITE_CITY = ‘” . $city . “‘ AND WORKSITE_STATE = ‘” . $state . “‘ AND lat IS NOT NULL LIMIT 50000 ” ;
        //echo $query;
        $result = mysqli_query($dbcon, $query);
        $kk = 1;
        while ($row = @mysqli_fetch_array($result)) {
            $visatype = ‘H1B’;
            $employername = addslashes($row[‘EMPLOYER_NAME’]);
            $secemployername = addslashes($row[‘SECONDARY_ENTITY_BUSINESS_NAME’]);
            $workaddress = addslashes($row[‘WORKSITE_ADDRESS1’]);
            $workcity = addslashes($row[‘WORKSITE_CITY’]);
            $workstate = $row[‘WORKSITE_STATE’];
            $workzip = $row[‘WORKSITE_POSTAL_CODE’];
            $workworkers = $row[‘WORKSITE_WORKERS’];
            $worktitle = addslashes($row[‘JOB_TITLE’]);
            $workpay = $row[‘WAGE_RATE_OF_PAY_FROM’];
            switch ($workpay) {
              case $workpay <= 75000:
                  $marker = “green”;
                  break;
              case $workpay > 75000 AND $workpay <= 150000:
                  $marker = “yellow”;
                  break;
              case $workpay > 150000 AND $workpay <= 300000:
                  $marker = “red”;
                  break;
              case $workpay > 300000:
                  $marker = “white”;
                  break;
          }
            $latitude = $row[‘lat’];
            $longitude = $row[‘lng’]; ?>
            add_marker1(map1, bounds1, ‘<?php echo $kk; ?>’, ‘<?php echo $latitude; ?>’, ‘<?php echo $longitude; ?>’, ‘<?php echo $employername; ?>’, ‘<?php echo $secemployername; ?>’, ‘<?php echo $workaddress; ?>’, ‘<?php echo $workcity; ?>’, ‘<?php echo $workstate; ?>’, ‘<?php echo $workzip; ?>’, ‘<?php echo $workworkers; ?>’, ‘<?php echo $worktitle; ?>’, ‘<?php echo $workpay; ?>’, ‘<?php echo $marker; ?>’ ); <?php
            ++$kk;
        }
    ?>
    map1.fitBounds(bounds1);
  }
function add_marker1(map1, bounds1, i, lat, lon, employername, secemployername , workaddress , workcity , workstate , workzip, workworkers, worktitle, workpay, markercolor)
{
    var number = parseInt(i);
    var lat = lat;
    var lon = lon;
    var employername = employername;
    var secemployername = secemployername;
    var workaddress = workaddress;
    var workcity = workcity;
    var workstate = workstate;
    var workzip = workzip;
    var workworkers = workworkers;
    var worktitle = worktitle;
    var workpay = workpay;
    var visatype = visatype;
    var position1 = new google.maps.LatLng(lat, lon);
    switch(markercolor) {
                        case “green”:
                            var marker = new google.maps.Marker({
                        position: position1,
                        map: map1,
                        icon: ‘darkgreen_MarkerA.png’
                    });
                        break;
                        case “red”:
                            var marker = new google.maps.Marker({
                        position: position1,
                        map: map1,
                        icon: ‘red_MarkerA.png’
                    });
                    break;
                        case “yellow”:
                            var marker = new google.maps.Marker({
                        position: position1,
                        map: map1,
                        icon: ‘yellow_MarkerA.png’
                    });
                    break;
                        case “white”:
                            var marker = new google.maps.Marker({
                        position: position1,
                        map: map1,
                        icon: ‘brown_MarkerA.png’
                    });
                    break;
                    }
                    bounds1.extend(marker.position);
                    map1.setCenter(position1);
                    map1.fitBounds(bounds1);
                    zoomLevel = map1.getZoom();
    contentString = ”;
    contentString = contentString + ‘Employer Name: ‘ + employername + ‘<br>’;
    contentString = contentString + ‘Secondary Employer Name: ‘ + secemployername + ‘<br>’;
    contentString = contentString + ‘Work Address: ‘ + workaddress + ‘<br>’;
    contentString = contentString + ‘Work City: ‘ + workcity + ‘<br>’;
    contentString = contentString + ‘Work State: ‘ + workstate + ‘<br>’;
    contentString = contentString + ‘Work Zip Code: ‘ + workzip + ‘<br>’;
    contentString = contentString + ‘Worksite Workers: ‘ + workworkers + ‘<br>’;
    contentString = contentString + ‘Worksite Title: ‘ + worktitle + ‘<br>’;
    contentString = contentString + ‘Worksite Pay: ‘ + workpay + ‘<br>’;
    contentString = contentString + ‘Latitude: ‘ + lat + ‘<br>’;
    contentString = contentString + ‘Longitude: ‘ + lon + ‘<br>’;
    attachMessage1(marker, contentString);
}
function attachMessage1(marker)
{
    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });
    google.maps.event.addListener(marker, ‘click’, function() {
    infowindow.open(marker.get(‘map1’), marker);
    });
}
async function initMap2() {
  var map2;
    var junction = {lat: 39.0997, lng: -94.5786};
    var bounds2 = new google.maps.LatLngBounds();
    map2 = new google.maps.Map(document.getElementById(‘map2’),
        {
            zoom: 2,
            center: junction,
        });
    <?php
        include(‘db_include.php’);
        $query = “SELECT EMPLOYER_NAME, SECONDARY_ENTITY_BUSINESS_NAME, WORKSITE_ADDRESS1, WORKSITE_CITY, WORKSITE_STATE, WORKSITE_POSTAL_CODE, WORKSITE_WORKERS,replace(replace(WAGE_RATE_OF_PAY_FROM, ‘,’, ”), ‘$’, ”) as payroll, JOB_TITLE, lat, lng  FROM ” . $year . ” where WORKSITE_CITY = ‘” . $city . “‘ AND WORKSITE_STATE = ‘” . $state . “‘ AND lat IS NOT NULL ” ;
        //echo $query;
        $result = mysqli_query($dbcon, $query);
        $kk = 1;
        while ($row = @mysqli_fetch_array($result)) {
            $visatype = ‘H1B’;
            $employername = addslashes($row[‘EMPLOYER_NAME’]);
            $secemployername = addslashes($row[‘SECONDARY_ENTITY_BUSINESS_NAME’]);
            $workaddress = addslashes($row[‘WORKSITE_ADDRESS1’]);
            $workcity = addslashes($row[‘WORKSITE_CITY’]);
            $workstate = $row[‘WORKSITE_STATE’];
            $workzip = $row[‘WORKSITE_POSTAL_CODE’];
            $workworkers = $row[‘WORKSITE_WORKERS’];
            $worktitle = addslashes($row[‘JOB_TITLE’]);
            $workpay = $row[‘payroll’];
            switch ($workpay) {
              case $workpay <= 75000:
                  $marker = “green”;
                  break;
              case $workpay > 75000 AND $workpay <= 150000:
                  $marker = “yellow”;
                  break;
              case $workpay > 150000 AND $workpay <= 300000:
                  $marker = “red”;
                  break;
              case $workpay > 300000:
                  $marker = “white”;
                  break;
          }
            $latitude = $row[‘lat’];
            $longitude = $row[‘lng’]; ?>
            add_marker2(map2, bounds2, ‘<?php echo $kk; ?>’, ‘<?php echo $latitude; ?>’, ‘<?php echo $longitude; ?>’, ‘<?php echo $employername; ?>’, ‘<?php echo $secemployername; ?>’, ‘<?php echo $workaddress; ?>’, ‘<?php echo $workcity; ?>’, ‘<?php echo $workstate; ?>’, ‘<?php echo $workzip; ?>’, ‘<?php echo $workworkers; ?>’, ‘<?php echo $worktitle; ?>’, ‘<?php echo $workpay; ?>’, ‘<?php echo $visatype; ?>’, ‘<?php echo $marker; ?>’ ); <?php
            ++$kk;
        }
    ?>
      map2.fitBounds(bounds2);
}
    function add_marker2(map2, bounds2, i, lat, lon, employername, secemployername , workaddress , workcity , workstate , workzip, workworkers, worktitle, workpay, visatype, markercolor)
    {
        var number = parseInt(i);
        var lat = lat;
        var lon = lon;
        var employername = employername;
        var secemployername = secemployername;
        var workaddress = workaddress;
        var workcity = workcity;
        var workstate = workstate;
        var workzip = workzip;
        var workworkers = workworkers;
        var worktitle = worktitle;
        var workpay = workpay;
        var visatype = visatype;
        var position2 = new google.maps.LatLng(lat, lon);
        switch(markercolor) {
                        case “green”:
                            var marker = new google.maps.Marker({
                        position: position2,
                        map: map2,
                        icon: ‘darkgreen_MarkerA.png’
                    });
                        break;
                        case “red”:
                            var marker = new google.maps.Marker({
                        position: position2,
                        map: map2,
                        icon: ‘red_MarkerA.png’
                    });
                    break;
                        case “yellow”:
                            var marker = new google.maps.Marker({
                        position: position2,
                        map: map2,
                        icon: ‘yellow_MarkerA.png’
                    });
                    break;
                        case “white”:
                            var marker = new google.maps.Marker({
                        position: position2,
                        map: map2,
                        icon: ‘brown_MarkerA.png’
                    });
                    break;
                    }
                    bounds2.extend(marker.position);
                    map2.setCenter(position2);
                    map2.fitBounds(bounds2);
                    zoomLevel = map2.getZoom();
        contentString = ”;
        contentString = contentString + ‘Employer Name: ‘ + employername + ‘<br>’;
        contentString = contentString + ‘Secondary Employer Name: ‘ + secemployername + ‘<br>’;
        contentString = contentString + ‘Work Address: ‘ + workaddress + ‘<br>’;
        contentString = contentString + ‘Work City: ‘ + workcity + ‘<br>’;
        contentString = contentString + ‘Work State: ‘ + workstate + ‘<br>’;
        contentString = contentString + ‘Work Zip Code: ‘ + workzip + ‘<br>’;
        contentString = contentString + ‘Worksite Workers: ‘ + workworkers + ‘<br>’;
        contentString = contentString + ‘Worksite Title: ‘ + worktitle + ‘<br>’;
        contentString = contentString + ‘Worksite Pay: ‘ + workpay + ‘<br>’;
        contentString = contentString + ‘Latitude: ‘ + lat + ‘<br>’;
        contentString = contentString + ‘Longitude: ‘ + lon + ‘<br>’;
        attachMessage2(marker, contentString);
    }
    function attachMessage2(marker)
        {
            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });
            google.maps.event.addListener(marker, ‘click’, function() {
            infowindow.open(marker.get(‘map2’), marker);
        });
}
</script>
3. The HTML
<div class=”row”>
<p><img src=”darkgreen_MarkerA.png”> = $workpay <= 75000, <img src=”yellow_MarkerA.png”> = $workpay > 75000 AND $workpay <= 150000. <img src=”red_MarkerA.png”> = $workpay > 150000 AND $workpay <= 300000, <img src=”brown_MarkerA.png”> = $workpay > 300000</p>
<p>For speed purposes, left map is limited to 50,000 markers out of hundreds of thousands.</p>
  <div class=”col-sm-6″>
  <strong>All Worksites for All Employers in <?php echo $city ?>, <?php echo $state ?> for this year: <?php echo $year ?></strong>
  <div id=”map2″></div>
  </div>
  <div class=”col-sm-6″>
    <strong>All Worksites for this Employer: <?php echo $criteria1 ?> for this year: <?php echo $year ?></strong>
    <div id=”map1″></div>
  </div>
</div>

Web designer

I have been on the job market since last April. What I have experienced in this new job market is absolutely astonishing! The sheer volume of people looking for work is just more than I have seen in my entire working career. Immigrants have taken over the job market for online positions. They have now started networking and trying to take more jobs from Americans. I have applied and gotten nothing back. Recruiters have ghosted me for even a phone interview. Job fairs are so full in my area that you will be lucky to get inside the building before the event is over. So I am left with just networking and praying that I can get in front of someone who is hiring. At this point I don’t even know what to apply for anymore. I have years of experience in Web Design, but that whole industry has changed so much I would have to go back to school. I am praying for a miracle to find reasonable work or resources to start my own business. It’s an overwhelmingly tough job market, but I refuse to give up!

What do we find when we tie the total nonfarm payroll data to the table A-7 foreign born data to the visas issued data?

Yes, I know the data comes from two different systems.

Which is probably why none of the economists have done what I’m going to show you.

If we pull the totals for visas for the F1, H-1B, H-2A, H-2B, L-1, TN and OPT visas between 1997 and 2023, we find that we have issued 21,234,713 of them.

If we pull Jan 1997 and Dec 2023 total nonfarm payroll numbers, we find that we have created 35,573,000 new jobs during that time period.

If we subtract those 21,234,713 foreign visas from the jobs we have created, we are left with 14,338,287 jobs for Americans even though we have many times that needing and wanting jobs.

If we divide those totals by the new jobs created total, we end up with Foreign Born getting 59.7% of those jobs, and Native Born getting 40.3% of those jobs.

Keep in mind we haven’t even looked at the table A-7 data.

If we pull the March 2025 data from table A-7 (the combined employed and unemployed), we end up with Foreign Born getting 54.6% of those jobs, and Native Born getting 45.4% of those jobs.

This is a difference of 5.1% in favor of Foreign Born and a decline of 5.1% for Native Born.

Awful close, isn’t it?

Especially considering how we pulled data from 3 different systems and they show the same picture.

In other words, CPT and the institutions that promote it are nothing more than an address for foreign nationals to hang out until they can obtain an immigration benefit or a foreign worker visa.

Susan Wayman, a veteran college administrator, joined Harrisburg in 2020 to run the office. She started noticing compliance problems everywhere, she said. Most were pretty technical: a degree program that wasn’t registered with DHS; students who’d started classes before their DHS files were in order; no policy to handle students who wanted to enroll without having a job. … When Wayman brought the problems to [Eric Darr, then the interim college president] and other administrators, she said they seemed more concerned about tuition dollars than compliance. “This is a leadership that did not care about the regulations,” Wayman said. “They wanted to make it as easy as possible for students to come and be enrolled.” Wayman said she began looking for another job almost immediately and quit after less than a year.

https://cis.org/Feere/Bloomberg-Investigates-Elaborate-Charade-Known-Day-1-CPT

Why aren’t you concerned about this?

Don’t trust my calculations?

Good, there is always a chance that I could have fat fingered something, but I don’t think I did.

This is how you calculate it yourself.

Get the total nonfarm payroll data by clicking on the following link:

https://fred.stlouisfed.org/series/PAYEMS

Get the December total for each year you want to verify for job gains.

Subtract the previous December from the current December to get the job gain, and repeat for however many years you want to calculate.

Now lets get the high school graduates.

You can find that data by clicking on the following link:

https://nces.ed.gov/programs/digest/d17/tables/dt17_219.10.asp

To come up with the December total, I used the fall totals.

Now subtract the high school graduates from the job gains total.

This will tell you if we have enough jobs for our high school graduates, or anybody else.

If you want to calculate the nonimmigrant visas issued totals, you can do that by clicking on the following link:

https://travel.state.gov/content/travel/en/legal/visa-law0/visa-statistics/nonimmigrant-visa-statistics.html

You are looking for these links:

Nonimmigrant Visas by Individual Class of Admission (e.g. A1, A2, etc.)*