Misleading Facebook Post: US Poverty is Driven by Politics

There is a Facebook post going around that deceptively shows US states by poverty to imply that Republican politics introduce poverty. Here is the post/list:

A screenshot displaying a list titled "List Of the US States With the Highest Poverty Rates." It enumerates twelve states with their respective poverty rates in descending order: Mississippi at 19.58%, West Virginia at 17.10%, Arkansas at 16.08%, New Mexico at 18.55%, Louisiana at 18.65%, Kentucky at 16.61%, Alabama at 15.98%, Oklahoma at 15.27%, South Carolina at 14.68%, Tennessee at 14.62%, North Carolina at 13.98%, and Georgia at 14.28%. The list is followed by a comment from "The Other 98%" with a timestamp indicating "12 August at 10:13" and a pondering emoji, stating "wonder what they all have in common 🤔".

This list cuts off arbitrarily to make a point. While there may be truth in the larger picture, selectively using data to make your point isn’t cool.

First, let’s expand the list1:

State or territoryPopulationPopulation under
poverty line
Poverty rate
 Puerto Rico3,227,4571,400,95843.41%
 Mississippi2,883,074564,43919.58%
 Louisiana4,532,187845,23018.65%
 New Mexico2,053,909381,02618.55%
 West Virginia1,755,591300,15217.10%
 Kentucky4,322,881717,89516.61%
 Arkansas2,923,585470,19016.08%
 Alabama4,771,614762,64215.98%
 District of Columbia669,089103,39115.45%
 Oklahoma3,833,712585,52015.27%
 South Carolina4,950,181726,47014.68%
 Tennessee6,603,468965,21314.62%
 Georgia10,238,3691,461,57214.28%
 Texas28,013,4463,984,26014.22%
 Arizona7,012,999990,52814.12%
 North Carolina10,098,3301,411,93913.98%
 Michigan9,753,5411,337,25613.71%
 Ohio11,350,3781,546,01113.62%
 New York19,009,0982,581,04813.58%
 Florida20,793,6282,772,93913.34%
 Missouri5,942,813772,99213.01%
 Indiana6,491,632838,14912.91%
 South Dakota849,910108,86312.81%
 Montana1,036,490132,47612.78%
 Nevada2,987,817381,69512.78%
 California38,589,8824,853,43412.58%
 Oregon4,096,744506,55812.36%

There is no shortage of blue states in that list.

The overall US poverty rate is 13.15%, and guess what? There are plenty of red states below that. Here is the visualization:

United States map showing the percentage of population below the poverty line by state, based on the American Community Survey from 2016 to 2020. States are color-coded to indicate poverty levels: dark red for 18% or more, red for 16% to 18%, orange for 14% to 16%, light orange for 12% to 14%, and pale orange for less than 12%. The overall percentage of Americans living below the poverty line is 13.1%. The top five states with the highest poverty rates are Mississippi at 19.6%, Louisiana at 19.0%, New Mexico at 18.4%, West Virginia at 17.1%, and Kentucky at 16.3%. The bottom five states with the lowest poverty rates are New Hampshire at 7.2%, Utah at 8.9%, Maryland at 9.0%, Minnesota at 9.3%, and New Jersey at 9.5%.

But that still doesn’t tell a good story, here is povery by county:

Heat map of the United States showing the percentage of the population living below the poverty line by county, based on data from the American Community Survey 2016-2020. Darker shades of red indicate higher percentages of poverty. The map legend indicates that red tones range from light (less than 5% poverty) to dark (30% or more poverty). The overall percentage of Americans living below the poverty line during this period is noted as 13.1%. The image also includes a reference to New York City for geographical context.

With the data provided you could conclude that poverty is driven by politics.

Atlanta has a poverty rate of 17% compared to 12.3% for GA overall even though Atlanta is blue.

Or you could conclude that it’s due to race.

Or you could conclude that it’s due to geography.

This isn’t even adjusted for the cost of living!

This article from Time shows CA, FL, MI and NY as the states with the four highest poverty rates after such adjustments.

Like nearly every political issue in the news today the data is nuanced and the causes are nuanced.

P.S. You can find fuller data on the adjusted measure (SPM) at the US Census Bureau – https://www.census.gov/topics/income-poverty/supplemental-poverty-measure.html

  1. Via Wikipedia which takes it from the US Census Burea ↩︎

Guess What? EVs Are Useful

Illustration of an electric car charging at a home charging station with a family in the background. A man is reading a newspaper in the foreground, and two people are seated on the porch using a laptop and a tablet. The setting is a residential area during the evening.

WSJ out with an article where the author finds that — surprise! — EVs are useful today even without as many charging stations as there are gas stations:

The surprise was that—for seven days of errands, pickups, and even a lengthy road trip—being limited to charging at the slowest possible rate was just fine, and my inability to fast charge away from home was a nonissue.

First — yes, the average American driving range is so low, 30-40 miles a day, that a gas car with a 3-gallon tank would be sufficient for most daily needs, much less an EV with a 200-300 mile range.

Second, it’s nice to see the Journal have at least one reporter understand that EVs aren’t just to fight climate change, although that matters, they are actually nice cars in their own right.

Don’t Kill All Your Zombies

Image from Negative Space at Pexels.

The WSJ ran a story about the risks associated with old online accounts, often referred to as “zombie” accounts. They recommend deleting these old accounts.

We may forget about them, but these accounts pose a risk. They make us more vulnerable to criminals who want to steal the personal data stored there, from our passwords to our contact information to even our credit-card numbers.

This statement isn’t wrong but it is incomplete.

I do not recommend that people delete their old social media accounts. You want to control your online presence, when you delete an old account you make it possible for someone else to pick up the same username at that sight and pretend to be you. Worse, anyone that knew you at that username would not easily know it wasn’t you.

I once had someone signup for an Instagram account with an old email address of mine, which I still controlled. It was faster for me to take over their account through a password reset than to get it shut down. To this day, I have control of the account.

So what do you do instead?

The Journal also fails to note that people at the highest risk of—those that reuse passwords—probably have their passwords on the dark web already. Deleting that MySpace account from 20 years ago was already exposed in 2016.

  • Remove saved credit cards from your old sites.
  • Change the password to something long and random.
  • Make sure 2FA is on.
  • Make sure your contact information is up to date, especially your email and cell phone number.

There may be other reasons to delete those accounts. If you have messages, search history or purchased products you don’t want to see public ditching those accounts make may sense. But remember, the other person on that message still had their copy which also means that the site keeps a copy. Deleting the account may or may not delete your data.

Note: my advice doesn’t apply to all sites. Deleting your accounts at old shopping sites or places where you signed up for a 30-day trial and no more makes plenty of sense.

At the end of the day you will need to use your own common sense. Don’t take the advice of the Journal—or mine—blindly.

Coding with Copilot and ChatGPT

I love coding with AI.

There, I said it. “You’re not a real developer,” I can hear you saying. And no, my profession is not primarily development1, but development definitely makes my job in IT easier.

Here are some tips that will make Copilot and ChatGPT code faster, better and more accurately for you.

Start with a Readme

When you can, start with a readme that explains what your project or script will do, before you write a single line of code. In this project, the readme was the very first file I made. I then pasted it into ChatGPT and asked that ChatGPT write a script to match.

Use examples in the readme: what do you want the syntax to be? Are there code examples of JSON or expected output you want to see? Start with the end in mine, and describe it as much detail as matters to you for the output.

Examples, Specifically

Both Copilot and ChatGPT work very well with examples. If you want to see a specific output, show it an example of what you want. If you were writing an API that exposes an endpoint with user data you might tell ChatGPT something along the lines of:

This is an unfinished endpoint to return user data from this project through a restful API. Clients expect to see JSON responses such as:
{
   "user": "[email protected]",
   "id": "some-guid",
   "phone": "555-123-1234",
   "nickname": "JD",
   "favorite color": "blue"
}

Some attributes are optional, so responses like this are also valid:
{
   "user": "[email protected]",
   "id": "another-guid"
}

Comments Galore

Comments seem to make both Copilot and ChatGPT better so I use them liberally. When ChatGPT gives me output I ask it to comment the code for a “junior developer.” In Python I have it generate docstrings for each function (documentation that describes what the function does).

With Copilot, comments can write your code for you. Write a comment like:

# Regex to separate split emails from domains, then put the domains into a sorted list

and then just wait for the autocomplete to give you the correct code, such as:

pattern = r'@([a-zA-Z0-9.-]+)'
domains = re.findall(pattern, emails)
sorted_domains = sorted(domains)

I also add examples and documentation in comments when I think the reference will help. If I am consuming a JSON API I may write:

def SaveAPIResponse(*args):
"""Takes the json response from Acme API and saves to the database.
A sample response would be:
{
   "user": {
      id": 12345,
      "username": "johndoe",
      "email": "[email protected]",
      "firstName": "John",
      "lastName": "Doe",
      "createdAt": "2024-08-05T22:04:55Z",
      "github": "johndoe"
     }
}
"""

You’ll see the accuracy explode.

One Thing at a Time

For the first couple of responses you can ask ChatGPT to output a lot, a 100+ lines of code isn’t crazy. When you get to troubleshooting, feed it one section at a time.

For instance, in my most recent project I decided to have ChatGPT write unit tests for me — because who likes writing those? They didn’t all work correctly, so I gave it one failing test at a time, correct either the test or the original code, and then went on to the next test.

Even when there is a similar root issue, one at a time is usually better.

Know When to Restart

For a certain amount of time ChatGPT seems to be more accurate with the more information you give it. But at some point in the conversation it seems to suffer from brain fog and stops any critical thinking and gives recycled output2. At this point, start a new chat.

Don’t just pick it up again, start fresh.

Your new chat might start like, “I’m picking up this project from another developer. She was working on adding feature XYZ to the script below. Will you check for errors and then finish the function? <paste the script>”

If relevant, include the readme or other documentation (again). “She left me these notes…” (This is also where it can be helpful to have documentation in comments, such as those above)

Prep Materials with AI

Sometimes you may have a lot of material or code to go through and you don’t want to muddy up the conversation. Just use a separate chat. For example, I may take a large snippet of JSON and ask ChatGPT to write documentation on the structure of it, and then use that documentation in my readme.

I might take a 100+ lines of JSON from something like this, and then ask ChatGPT to “write documentation for this JSON from the provider’s perspective, as through a restful API.” Then I’ll take that output and put it in the readme or the comments.

It keeps the main conversation from getting brain fogged, and should give you some clear output about expectations as well.

  1. If you look at my Github you will see projects such as this WordPress plugin that uses ChatGPT to add alt text to images, a docker/syslog project, a Dehashed command line API client, and more. I’m not alien to programming either. ↩︎
  2. Yes I know ChatGPT doesn’t “think” but I don’t know what to call an. AI that is essentially emulating brain fog… ↩︎