Me, Myself and AI

How and why I’ve used AI as a programming tool.

I think of myself as a good programmer. I’m not tooting my own horn here – as a computer scientist, I am still a novice in many areas. But as a programmer, I think I can hold my own. And I think that’s because I have developed two qualities that all good programmers share.

The first quality of a good programmer is a passion for problem solving. They relish the process of understanding a problem, researching the prerequisite knowledge, and then implementing a solution. Failure just means another chance to solve it. And when the problem is finally solved, it provides a rush of dopamine that rivals sex and most hard drugs.

The last thing a good programmer would want is to be given the answer to a problem and never understand the solution. That is the sole definition of failure.

But this is balanced by a second quality. Good programmers respect anything that helps them better understand a problem. A good programmer wants to possess every possible tool, understand those tools, and utilize them to derive (or even better, automate) a solution.

So how do these qualities fit in with this new generation of AI?

“Our intelligence is what makes us human, and AI is an extension of that quality.”

Yann LeCun

Between Google, Stack Exchange, and pirated academic textbooks, I can’t even begin to count how many times I’ve utilized the Internet to solve a problem. Despite its many pitfalls, the internet is a marvelous thing – it is a massive collection of human intelligence. That intelligence is the foundation of tools like ChatGPT and Copilot, and when we use these tools, we’re tapping into that intelligence.

In the words of ChatGPT itself…

I am an extension of human knowledge in the sense that I have been trained on a diverse and extensive dataset of human language. This training includes a wide variety of texts from books, articles, websites, and other forms of written communication. The goal of my design is to process and generate language in a way that can assist users in accessing information, answering questions, and solving problems by leveraging the vast amount of knowledge encoded in my training data.

ChatGPT

Yet as exciting as it is to have access to this seemingly bottomless keg of knowledge, it comes with the same inherent risks that browsing the internet has always had. The information we gather from the Internet can be incomplete. It can lack context and nuance. Sometimes its confidently yet completely wrong. At it’s worst, it can be willfully deceptive.

But isn’t that a valid description of our collective intelligence? Brilliant, but sometimes deeply flawed? If we’re willing to accept this risk and reward when we use the Internet, we have to be willing to do the same with AI.

For me, the rewards of using AI have been well worth this risk. When questions pop into my head about whether I can improve how I’ve structured a project, I’m just one prompt away from having a comprehensive answer. If I need a quick answer on how to use something in my project’s tool chain (e.g. a GCloud CLI command or a Git command), I can get that information almost immediately instead of diving into documentation.

I’m comfortable using AI as a tool because I treat it the same way I treat anything I use online: I assume that it’s lying to me. If something it tells me doesn’t work or just seems off, I do more research. The use of AI, when approached with a good sense of judgement and a skeptical mindset, becomes less about outsourcing our intellect and more about expanding it.

Hello World! (Part 1)

Welcome to my blog!

My name is Chris Jacobs – I’m a soon-to-be graduate of Oregon State University’s postbaccalaureate computer science program and I’ll be completing my senior capstone this term.

The purpose of this blog is to not only document the progress of my capstone project, but also use it as a tool to reflect on my journey in getting this degree. My hope is that this self-reflection will provide me with a sense of accomplishment relating to the work that I’ve done over the last three years, as well as some much needed confidence as I begin the next part of my CS journey – finding a job.

But first, a little history.

Before Computer Science

I transitioned into computer science relatively late in life – I was 31 when I started at OSU. My original degree was from Portland State University where I received a BS in Psychology. Immediately after I graduated I started working with children who were living in a residential care facility and being treated for major psychiatric and/or developmental issues.

I worked there for three and a half years – three times longer than most people work before quitting. As incredibly difficult as the job was, I loved the work and loved the people I worked with.With that said, it was a job that left me with chronic knee and shoulder pain, multiple concussions, and fairly severe PTSD, all of which still affects me to this day.

So, in September of 2016, the week before I married my wife, I left to pursue a Masters in Social Work at Portland State University with the goal to become a child social worker.

However, in the middle of my internship, I withdrew from the program. The reasons I had for withdrawing probably deserve their own post, but in short, it was due to a combination of burnout and a growing feeling of contempt for the systems that govern child social work.

Starting Over

It took me a long time to get my bearings after I left my masters program. I had no desire whatsoever to apply for entry level (non-degree) social work positions. And I couldn’t bring myself to return to the work I was doing with kids in residential treatment – even if I had been wiling, my wife would have refused to let me go back.

My dad had been an electrical engineer at Intel for 25 years before he retired, so I had been interested in computers since I was around six years old. I had taken introductory CS coursework at PSU and for a while had considered choosing it as my major. So in August of 2017 I started dabbling in Python. That choice quickly reignited my interest in computer science.

I loved working through code challenges, feeling the frustration of getting stuck and then the elation that came when I finally grasped the solution. Perhaps more than that, I loved the essence of building software – designing something useful (or just fun), coding it, and immediately seeing the product of your work. And then the joy of learning more and being able to go back and improve what you made!

After years of working in social work and not being able to control anything I came across in my work, I quickly saw the liberation of being able to control everything in front of you. Discovering the power of computer programming is like discovering an all powerful staff; if you’re able to discover the required spells and recite the correct incantations, nothing stands in the way of creating what you are able to envision.

So after four months of a lot of depression and uncertainty, I decided that when it came to my career, I was going to start over. I started taking coursework at Portland Community College, eventually enrolling in their Associates program for Computer Information Systems. I can happily say that I never looked back.

(Part 2)

On Blogging

“There is nothing to writing. All you do is sit down at a typewriter and bleed.”

Unknown

I have to be honest: I hate blogging.

I don’t think I’ve ever kept a blog or a journal for more than a week before I deleted it or tossed it in the trash.

Have you ever listened to the sound of your own voice, immediately cringed, and then swore to yourself to never again speak in public? This is the exact reaction I have when I reread something that I’ve written.

I read. I cringe. I delete.

Don’t get me wrong, I’m not proud of this. I’d love to write a blog that made me feel good. I’d love to feel confident about the subjects I write about and I’d like to enjoy how I write about them. Sharing my thoughts with others is something that I wish I could do more. I think the desire to be known is something that is deeply embedded in all of us.

Alright, I’m going to deep. I was told to make this blog light. Let’s try some different quotes.

“I write to discover what I know.”

Flannery O’Connor

“The most difficult and complicated part of the writing process is the beginning.”

A. B. Yehoshua

“We write to taste life twice, in the moment and in retrospect.”

Anaïs Nin

There, that’s better.

Here’s my take on these quotes:

  • Writing makes it possible to better understand ones own thoughts and sense of truth.
  • The hardest part of writing is sitting down to write. Writing must begin somewhere, and it must begin with a sense of abandon.
  • Writing is a snapshot of an idea or state of being. Like every form of art, that snapshot continues to evolve and provides new meaning each time it is viewed. Thus, destroying ones own writing erases an opportunity for introspection.

Wonderful. Once again, I’ve convinced myself that blogging is a good idea. How exciting…

I therefore swear upon my sacred honor to never delete this blog or any post that I publish. To do this, I must accept the existence of my own awkwardness. I must savor the cheesiness of my own cheese. I must bask in the warmth of my own cringe.

I should also mention that this blog is required for my coursework (more on that later).

So unless I hate this blog so much that I become willing to fail the very last class of my degree, I’m just going to have to accept my writing for what it is.

Till next time,

Chris