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… ↩︎

Roaring Kitty, Stock Manipulator?

The WSJ reports (gift link for paywall) that E*Trade is thinking about kicking Keith Gill — better known as Roaring Kitty or DeepFuckingValue — off of its platform. Gill is largely credited with driving the GameStop stock price to unrealistic levels, as evidenced by a PE ratio of 1,320 on June 4, 2024.

E*Trade is asking whether or not Gill manipulated the stock price, presumably via his Reddit and Twitter posts, especially after he resurfaced after silence for three years.

It is possible that Gill will find himself under an SEC investigation for this very question, especially now that he has 120,000 GameStop options worth $289 million. Gill will probably respond along the lines of, (1) he can’t be held responsible for what hundreds or thousands of amateur investors do, and (2) out of 306 million shares outstanding his portion is tiny and unable to influence the market.

But at this point his following is loyal and many will follow his lead, which will affect the stock price, where volume now exceeds 25 million. For comparison, Apple has 15 billion shares outstanding, approximately 50 times more than GameStop, with a trading volume of 62.5 million, which is less than three times that of GameStop.’s. Or more simply, Gill tweets and GameStop trading volumes goes through the roof.

It’s clear that Gill can significantly influence GameStop trading.

I don’t know if Gill is acting in good faith or not, I do know that he is in a position where he can influence this stock, and probably dozens of others that have prices low enough and some other measure of volatility that can be exploited by amateur traders. He may not have always had the influence, but he now does whether he realizes it or not.

In other words, he has a responsibility to be prudent in communications that will impact the stock price.

It made me think of Elon Musk, another figure who is able to significantly influence stock prices with a tweet. He often seems clueless that his has such power. Again, I don’t know if this is in good fatih. Like Gill he didn’t always have that kind of power. In many of his actions, he seems unaware that the repercussions of his behavior, as the world’s richest man, are orders of magnitude greater than anyone else’s.

In other words, he has a responsibility to be prudent in communications that will impact the stock price.

Neither man seems to understand what their influence is, or if they do, understand the idea of prudence. (Or perhaps don’t care, I don’t know.)

How Small Is A Small Business?

(If you are on the front page, click here to see just this post in a clearer view)

How big is a small business? There is no single definition, and any person you ask probably has their own idea.

The SBA publishes a list of their definitions of “small business” by industry and uses either revenue or employees. A business can be small with revenues up to $2.5 million, or up to $47 million depending on the industry. For industries that use headcount as the metric, a small company has 100 up to 1500 employees, again depending on the industry.

Why does this matter? I can think of two reasons:

  1. Most people have no idea how much the definition varies. I see articles in national news organizations that think of “small” as $100m or 500 employees, while other business owners may think $10m or $20m is small. Or 100k.

    I hope this helps people (1) understand how differently people think of and, (2) gives people some idea of what a common definition might look like.
  2. These definitions affect government contracts that businesses are eligible for.

On this page/post, you can search that list by industry or NAICS code to see what the definition of “small,” is, either by gross revenue or employees, whichever measure the SBA uses.

A random entry is below.

Search by Industry or NAICS Code:

Limit:

Average Limit for Sector:

Variance from Sector Average:

Average Limit for Subsector:

Variance from Subsector Average:



    The other thing this page demonstrates is how quickly AI will and is changing tech and data analysis: I found the data source and had the idea, but the code was generated entirely by ChatGPT. I am really blown away by gpt-4o, the context window is so much better. While you could put in tens of thousands of words (tokens) with gpt-4 the model still got lost quickly and you’d need to start a new chat.

    For this, I had multiple iterations and it never lost track of where we were, and always outputted the entire code at once. (YES! Can you believe it?)

    Data is loaded directly from the SBA API feed at https://api.sba.gov/naics/naics.json

    Find the code for this post at https://jonathanaddington.com/how-small-is-small-code/