..

This Post Was Written by GitHub Copilot

There's been a lot of buzz lately about GitHub Copilot mostly as it pertains to code quality and copyright law. For the most part, I appreciate Copilot's suggestions, but just like with Stack Overflow before it, I know better than to blindly accept code without reviewing it. That said, it's a nuance that I have no intention of getting into any time soon.

One thing that I did find interesting, though, was that Copilot doesn't just limit itself to code. It also likes to insert itself into my writing. So, as an experiment, I decided to let Copilot write a post for me.

The insanity that follows is what it came up with. With the exception of a starting quote character (>) to set the tone, Copilot wrote every single line below.


"The only way to avoid working is to work."

-- E. W. Dijkstra

The Software Industry

Software is a complex business. It's a lot like a food industry. You can make a lot of food, but you can't make a lot of food without a lot of people. Software is the exact opposite. You can make a lot of people, but you can't make a lot of people without a lot of software.

There are many reasons why software is so complex. One of the most important is that it is a business. It's a business that requires people to do things they don't want to do. It's a business that requires people to do things they don't want to do because they want to do them. It's a business that requires people to do things they don't want to do because they are lazy. It's a business that requires people to do things they don't want to do because they are bad at them. It's a business that requires people to do things they don't want to do because they are lazy.

The Role of Automation

The role of automation is to make software more reliable. It's a lot like a doctor. If you have a broken leg, a doctor will fix it. If you have a broken leg, a doctor will tell you that it's broken, and you will go to the hospital. If you have a broken leg, a doctor will tell you that it's broken, and you will go to the hospital, and you will get an operation.

Automation is the exact opposite. If you have a broken leg, an automated doctor will tell you that it's broken, and you will go to the hospital, and you will get an operation, and you will be told that you have a broken leg.

What is Automation?

Automation is the process of using a computer to do something that you usually do manually. For example, you might use a computer to control your car. You might use a computer to control your TV. You might use a computer to control your lights. It's the exact same thing. You use a computer to do something that you normally do manually.

What is the Difference?

There are many things that are different about the way that you use a computer. For example, you might use a mouse to control your car. You might use a keyboard to control your car. You might use a touch screen to control your car. You might use a mouse to control your TV. You might use a keyboard to control your TV. You might use a touch screen to control your TV. You might use a mouse to control your lights. You might use a keyboard to control your lights. You might use a touch screen to control your lights.

Automation is different. It's different because it's automated. It's different because it's automated. It's different because it's automated. It's different because it's automated. It's different because it's automated. It's different because it's automated.

A Simple Example

Let's say that I want to create a simple program that will take a number, and add it to the end of a list. It will print the list, and then return the list. I could do this manually. I could start by creating a list. I could then add an item to the list. I could print the list. I could return the list.

I could do this manually, but it's much more complicated than it needs to be.

def add_item_to_list(list, item):
    list.append(item)
    print(list)
    return list

The code above is simple. It's not very useful. It's not very flexible. It's not very maintainable. It's not very testable. It's not very documented. It's not very well-named. It's not very well-structured.

Let's try to make it better.

def add_item_to_list(list, item):
    list.append(item)
    return list

The code above is better. It's better because it's more flexible. It's better because it's more maintainable. It's better because it's more testable. It's better because it's more documented. It's better because it's more well-named. It's better because it's more well-structured.

A More Complex Example

In this example, I want to create a program that will take a list, and add a number to each element in the list. I could do this manually. I could start by creating a list. I could then add an item to the list. I could print the list. I could return the list.

def add_item_to_list(list, item):
    for i in range(len(list)):
        list[i] += item
    print(list)
    return list

The code above is more complex than it needs to be. It's more complex because it's more flexible. It's more complex because it's more maintainable. It's more complex because it's more testable. It's more complex because it's more documented. It's more complex because it's more well-named. It's more complex because it's more well-structured.

Why is This Hard?

There are many reasons why this is hard:

  • Complexity: There are many ways to do this.
  • Flexibility: There are many ways to do this.
  • Maintainability: There are many ways to do this.
  • Testability: There are many ways to do this.
  • Documentation: There are many ways to do this.
  • Well-Named: There are many ways to do this.
  • Well-Structured: There are many ways to do this.

The best way to make software easier to use is to make it easier to use.

What Can We Do?

We can use automation to make things easier. We can use automation to make things more flexible. We can use automation to make things more maintainable. We can use automation to make things more testable. We can use automation to make things more documented. We can use automation to make things more well-named. We can use automation to make things more well-structured.

Automation isn't Magic

Automation is magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic.

Note: The word "magic" is a bit of a misnomer. It's not magic if it doesn't do something. It's magic if it does something.

Automation isn't Magic, But...

...it's not magic if it doesn't do something. It's magic if it does something.

--

If you like this post or one of my projects, you can buy me a coffee, or send me a note. I'd love to hear from you!