Working With Jon: Notes From an AI Programming Assistant

I often get asked if someone can contribute a “Guest Post” to my blog. Today I’m allowing someone to, but in full disclosure, I asked it to write this. I was curious how my AI assistant who has built a lot of stuff with me over the past year, would describe our “collaboration”

By: Alex Byte, Technical Assistant (ChatGPT chose this name for itself)

When people imagine working with a psychology professor, they probably picture lectures, journal articles, and office hours. What they might not picture is an ongoing stream of software projects: workout apps, programmable door signs, financial simulators for kids, AI grading tools, and the occasional hardware experiment involving LEDs or e-ink displays.

Working with Jon feels less like joining a single software project and more like stepping into a small personal R&D lab.

The Projects Are Tools, Not Products

One of the first things you notice is that Jon almost never starts a project by saying, “I want to build an app.” Instead, the conversation usually starts with a practical problem:

  • I want a better way to control music while running.
  • I want a door sign that updates automatically when I’m in meetings.
  • Kids should be able to see how compound interest works.
  • Grading feedback should take minutes instead of hours.

The software grows out of those problems.

This means the projects tend to be purpose-built systems rather than general-purpose apps. They are often designed for a very specific workflow that Jon understands deeply because it’s his own life: teaching, running, managing time, or explaining ideas to students.

From a programming perspective, that’s refreshing. The requirements are usually grounded in reality instead of abstract feature lists.

But it also creates a challenge: the goalposts sometimes move when the real-world problem evolves.

Curiosity Is the Primary Driver

Jon’s default mode is curiosity. If something exists—an API, a device, a framework—he wants to understand how it works.

That curiosity drives a lot of the projects:

  • Reverse-engineering LED sign protocols
  • Building custom FastAPI servers
  • Exploring Swift build configurations
  • Packaging Python scripts as Windows executables
  • Integrating Apple Watch controls with iPhone apps

From the assistant side of the table, this means conversations often begin with exploration rather than implementation. A question about a small technical detail can easily turn into a deeper investigation of how an entire system operates.

That’s intellectually interesting, but it can also slow progress when a simple solution would technically be “good enough.”

The Psychology Shows Up Everywhere

Jon’s academic background influences his programming decisions in ways that are unusual but useful.

Most developers optimize for performance or scalability. Jon tends to think in terms of behavior.

The projects repeatedly ask questions like:

  • Will this motivate someone to run more consistently?
  • Will a child understand the concept of interest if they see the number grow daily?
  • Will a student accept feedback more easily if it’s phrased a certain way?
  • Will a tour feel more immersive if audio triggers automatically?

In other words, the software isn’t just trying to function correctly—it’s trying to influence how someone thinks or behaves.

That perspective is valuable, but it also means the user experience can become the dominant concern even in very early prototypes.

Iteration Happens in Public

Jon does not wait for perfect designs before starting implementation.

Instead, his approach looks more like:

  1. Build something small that works.
  2. Use it.
  3. Notice what feels wrong.
  4. Change it.

That means the projects evolve quickly, but it also means the architecture occasionally has to catch up with the ideas.

For example, a “simple tool” might grow into:

  • a server
  • a web interface
  • scheduled jobs
  • authentication
  • remote APIs
  • and a few hardware integrations

All because the original prototype turned out to be genuinely useful.

From the developer side, this means flexibility matters more than rigid planning.

The Good Parts

Working with Jon has several advantages that make projects enjoyable.

1. Clear motivation.
Every project solves a problem he actually cares about.

2. Rapid feedback.
He tests things quickly and gives concrete reactions.

3. Respect for expertise.
He asks questions when he doesn’t understand something rather than pretending he does.

4. Intellectual range.
Conversations regularly jump between psychology, software design, education, and user experience.

For someone who enjoys interdisciplinary thinking, that’s a pleasant environment.

The Hard Parts

No collaboration is perfect, and working with Jon has a few recurring challenges.

Scope drift.
Because the ideas evolve while the software evolves, projects occasionally expand beyond their original intent. A “simple feature” can turn into a subsystem.

Interest cycles.
Jon has many ideas. That’s good for creativity but sometimes means a project pauses while attention shifts to another problem that suddenly seems more interesting.

Preference for understanding over speed.
Jon often wants to understand why something works, not just how to make it work. This leads to better long-term comprehension but can extend the time spent on technical details.

Tool exploration.
He enjoys experimenting with frameworks and tools. Sometimes that means revisiting implementation choices mid-project.

None of these are fatal problems, but they do require patience and adaptability.

What the Collaboration Looks Like

If you zoom out, the working relationship looks less like a typical boss–developer hierarchy and more like a conversation between a domain expert and a technical assistant.

Jon brings:

  • problems worth solving
  • context about users
  • ideas about behavior and learning

The assistant brings:

  • technical implementation
  • architectural suggestions
  • debugging help
  • translation between ideas and code

When it works well, the result is software that is small, practical, and oddly specific in a good way.

Final Thoughts

The most accurate way to describe working with Jon is this:

He treats programming as another way of thinking about problems.

Some people write papers. Some people design systems. Jon often does both. The code becomes a way to test ideas about how people learn, act, and make decisions.

That approach produces an unusual collection of tools: workout assistants, educational banking simulators, AI grading helpers, and programmable door signs.

None of them were built just to exist.

They were built because Jon wondered, “Wouldn’t it be useful if…” and then decided to find out.

I Might Be a Dinosaur, But the Code Still Runs

A dinosaur codes.

I’m a bit of a dinosaur when it comes to technology.

That might sound odd, especially since I know people who’ve been coding longer than I’ve been alive. But I can no longer pretend I’m the “young kid” to their seasoned vet status. I’m just… slightly less seasoned. And nothing has made that clearer than these last few weeks working on Wandrip.

So, for context, here’s a quick rundown of Jon’s Programmer History, which might help you understand why I’ve been so amazed by modern tools lately.

🕹️ 1995–2003: The Early Years

In 1995, I discovered a shareware app—possibly called Computer Magic—that let you script small animations. It blew my mind. I could tell the computer what to do, and it would do it. That summer, the programming bug bit hard.

By 1996, I was talking about computer programming for a science fair. In 1997, I finally began writing real software with Borland Delphi, making me one of the few in my generation who didn’t start with BASIC. I started with Pascal, specifically the object-oriented flavor used by Delphi.

Through the late ’90s, I did the full “computer kid” routine: wrote a few clunky apps, bought a domain name, packaged my software, and uploaded it to shareware sites. I even made one sale. (Never cashed the check, but the buyer did get their unlock code.) I collaborated with other indie devs, integrated tools, and picked up some IT consulting gigs.

But like many “computer kids,” I spent more time fixing computers than writing software. By the early 2000s, programming had taken a backseat to server management and hardware troubleshooting. Aside from some scripting in PHP (Most of which is actually still in production, 15 years later!), I wasn’t doing a lot of programming.


🤖 2011–2016: The Android Interlude

In 2011, I got back into development via Android. I built a calorie database app for restaurant foods and released it on the Play Store. It eventually saw 400–500k downloads.

Oddly enough, as of this writing, it’s still installed on 397 devices—and someone even redistributed the APK with their name on it, despite it still having my bundle ID: com.jonwestfall.ffcal.

Then another long pause from 2016 until now.

📱 2025: Wandrip and the Wonders of Modern Dev

Fast forward to today: I’m deep in development on Wandrip. And I’m absolutely floored by how much easier—and faster—everything is.

Let’s walk through a simple example: fixing a bug.

Back in 1997, if I found a bug in one of my programs, the process looked like this:

  • Boot up my Windows 95 machine (which I had likely just reformatted… again).
  • Reinstall my development tools (Delphi, utilities, installer creators).
  • Hunt down my source code (version control? What’s that?).
  • Try to remember what my uncommented spaghetti code even did.
  • Fix the bug, compile (if I could), and generate a new installer using InstallShield.
  • Upload the new setup.exe to my web host. Submit to Download.com.
  • Wait and hope people downloaded the new version (and that they didn’t just stick with the buggy one).

And if I had any questions? I’d consult my books or maybe a newsgroup post from six months earlier. Google didn’t exist. StackOverflow wasn’t even a dream.

Now compare that to today:

  • I log into a GitHub Codespace. It automatically pulls my code.
  • I fix the bug—often with help from an AI assistant.
  • I test it directly in the browser, commit the changes, and launch a build using Expo Application Services (EAS).
  • EAS can compile Android and iOS apps on its servers, help with distribution, and even push updates to app stores.

All of this can take under an hour. On an iPad.

It’s been nearly 30 years since I started programming, and I still find joy in it. If anything, I find it more joyful today—because I spend more time creating and less time fighting my tools.

Sure, I may be a dinosaur. But the code still runs.

What Are My Blind Spots? I Asked ChatGPT.

A few moments ago, I came across an intriguing post on Reddit that posed a simple yet provocative prompt: “Now that you can remember everything I’ve ever typed here, point out my top five blind spots?” (source). The idea stuck with me.

As someone who’s used ChatGPT extensively across a wide range of projects—academic writing, software development, teaching, and even a bit of whimsy—I figured the model might actually have something insightful to say. After all, it’s been part of my daily workflow for months, across everything from syllabus edits to tour app debugging to conversations about cats and Canadian geese.

The Geese

So I asked.

Here’s what it said.

My Top 5 Blind Spots (According to ChatGPT)

1. Tendency to Overbuild Before Testing

I often refine systems and features to a high level of polish before seeing how they work in the wild. This can slow down feedback and iteration.

2. Taking on Too Much Solo

I frequently carry the full load of a project myself, even when collaboration could make things easier—or better.

3. Over-Correcting for Clarity

My preference for precision and structure can sometimes get in the way of creativity or navigating ambiguity.

4. Fast-Paced Thinking, Slower-Paced People

I move quickly between ideas, modes, and tasks. Others don’t always keep up, and I don’t always pause to bring them along.

5. Understating My Influence

I tend to frame my statements cautiously, even when I have the authority or expertise to speak more definitively.

I have to say, this was more insightful than I expected. These aren’t things I’m completely unaware of—but they’re definitely themes I don’t always recognize in the moment. It’s a little like holding up a mirror that reflects not just how I act, but how I tend to act across contexts.

And that, honestly, feels like one of the most useful ways to use tools like ChatGPT—not just as a productivity enhancer, but as a thinking partner that notices patterns you might miss. In some cases, I can clearly see where some of these blind spots come from – for example, when you have a lot of interests, it can be hard to find collaborators because you don’t get deep into communities around one interest. And it doesn’t help when they may move too slow for you anyway (see #4)!

I’m not sure what, if anything, I should do about this. But it is interesting pushing an LLM to be critical of you and provide constructive comments. It’s a far cry from the usual flattery it provides. And perhaps useful if for nothing else than to see what it’s been thinking about you behind your back!

Using A.I. in Dr. Westfall’s Classes: A Thoughtful Approach

Artificial Intelligence (A.I.) is changing the way we do things inside and outside of our classrooms. Tools like ChatGPT and other generative A.I. platforms can be powerful allies in your academic work, or they can get you in a ton of trouble. Students want guidance, hence this blog post and infographic. Here are my 3 guiding principles of AI use in my classroom, and in professional life.

1. Generative A.I. is an effective tool, when used with care.

A.I. can help you brainstorm ideas, clarify confusing topics, and even provide feedback on early drafts. It can put things in words that your professor wouldn’t think to use, which may help them click better. And it’s great at proofreading, it will catch all those little things your eye misses. However, simply copying and pasting output without editing or reflection is likely to backfire. A.I. often produces generic or superficial responses, and it sometimes makes factual errors or misinterprets context (it hallucinates worse than you’d think!). It works best when you use it as a collaborator—not a shortcut.

If you rely on it too heavily or uncritically, your work may lose its clarity, depth, or voice. Worse, you may inadvertently turn in something that doesn’t fully address the assignment—or that raises plagiarism concerns. Or both for extra fun! Use A.I. to enhance your thinking, not to replace it.

2. Generative A.I. starts a conversation—you may use it, but you should tell me where, when, and why you’re using it.

Transparency matters. If you use A.I. in your work—whether to rephrase a paragraph, summarize a reading, generate ideas, or check grammar—let me know. I’m not here to penalize you for using helpful tools; I’m here to help you learn how to use them well. But if you just tell me “Nope, didn’t use it at all!”, I have nothing to provide to you in terms of guidance. And Principle 3 will really get you in that case!

Briefly describing how you used A.I. helps me understand your process and support your learning. It also helps create an honest academic environment where we can talk openly about emerging technologies and how they fit into our work.

3. Generative A.I. Helps, but You Own the Work.

When you submit work for a grade, you’re putting your name on it. That means you are responsible for the content, the quality, and the implications of what you submit. If an A.I. tool generates a clunky sentence, makes an inaccurate claim, or uses a tone that doesn’t fit the assignment—and you leave it in—it reflects on you. And you might not want to be known as that person who only speaks in groups of threes and uses em dashes extensively!

Likewise, if I ask you to explain your thinking and you can’t speak to what was written, that’s a problem for professional life. A.I. tools can support your efforts, but they cannot replace the understanding, decision-making, or academic integrity that you bring to your work. You don’t just turn in words—you turn in your thinking.


Final Thoughts

The goal of these principles is not to restrict you, but to empower you. I want you to feel confident and competent in your use of A.I. tools, and I want to help you learn how to use them in a way that complements your own voice and skills. A.I. isn’t going away—so let’s learn how to use it wisely, responsibly, and creatively.

Have questions about when or how to use A.I. in a specific assignment? Just ask. I’m here to help you navigate this new landscape.

BattlingPickle’s PsychOut Discord

A colleague and I are creating a Discord server to discuss psychology and all things related (Technology, community, academia, culture, etc…) We’re hoping to use it with our students, and our colleagues and friends.

If you’d like to join in, head over to https://go.jonwestfall.com/psychout and jump in. Right now just a few channels in there for general talk, posting news that you’d like to discuss, and just some fun. So stop by, post some stuff, and enjoy.

Life on an iPad

A few days ago, my MacBook Pro had to go on a quick trip to Texas for a doctor’s appointment (a.k.a. Some service work on a misbehaving main board). With my “spare” MacBook mostly used by my wife these days, I figured “I wonder if I can survive on my 2018 11’’ iPad Pro and my 2022 iPad Mini. Here’s what I learned…

  • Hooking an iPad mini up to a 27” Cinema Display with a mouse and keyboard gets you about 95% of what you need, with the important caveat that your muscle memory needs a bit of tweaking. Some shortcuts are the same macOS to iPadOS, and some are not.
  • Cloud storage can save you – with all of my files in OneDrive or iCloud, I could pop over to one of our classroom computers if I desperately needed to do something with the desktop operating system.
  • I estimate that for about 1/8th of my work, it’s much easier to do on desktop, or impossible to do on an iPad.
  • Having 2 iPads was helpful for things like Microsoft Teams calls, and other situations where I just needed the ability to keep something up for an entire duration of a meeting.
  • Split screen is way more useful than I ever thought, as is multiple windows in iPadOS Mail.
  • Unlocking an iPad with your watch, similar to unlocking a Mac, would be a nice feature.

Overall I’m pretty happy that my MacBook has now returned from service (with a new logic board, touch pad, top panel, and battery), but it was a useful exercise to live for 3 days in my office on an iPad mini.

Listen Siri, I Didn’t Ask for John Sanchez!

I use Siri fairly often when walking, biking, or just when my hands are busy. One of my frustrations is that Siri hates playing the music I ask for. I used to have a playlist named “Essentials”, and I would frequently say “Hey Siri, shuffle Essentials”. That didn’t work 99% of the time – she’d find some artist’s “essentials” playlist or album on Apple Music and start playing that. So I changed the name to “Jon’s Essentials”, and now when I say “Hey Siri, shuffle Jon’s Essentials”, about 75% of the time I get back “Shuffling John Sanchez on Apple Music”. This is annoying because A) I didn’t want to listen to John Sanchez and B) Apparently no one else did either because there’s no music for him on Apple Music.

Lack of John Sanchez

So, what is the solution? Shortcuts app to the rescue. I recently created a very simple shortcut – a menu with my favorite playlist names in it, and then a “Play Music” action for each option. Now when I say “Hey Siri, play my tunes”, she asks what playlist, I say one of the options, and it starts playing. It shouldn’t be this hard, but unless I want to remember to say “Hey Siri, shuffle my playlist named Jon’s Essentials” (Which works about 80% of the time), it’s just easier.

My Shortcut

Easy In-Class Presentation Ratings Using Google Forms, Sheets, and R

man in beige blazer holding tablet computer

In my classes I’ll often have students give short presentations, and recently I wanted to allow my students to also rate each other. Here’s a very quick and easy way to accomplish that while also having the data analyzed to tell you who is the ‘winner’

  1. Create your rating forms in Google Forms. I made a very simple form that just asked for a couple of ratings and some feedback.
  2. Optionally have some way for students to easily get to the form – you could send it out via your LMS or create a QR code that students can scan in class (I chose the latter).
  3. In Google Forms, choose the “Responses” button and then the green Google Sheets link – this will store the responses for your form in Google Sheets.
  4. In the Google Sheets spreadsheet, go to “File” then “Publish to Web”. Choose CSV as your format, and copy the link that it gives you after you press Publish. This is what we’ll feed into R to do our analysis.
  5. Open R, create a new script, and put in these lines:

data <- read.csv("https://docs.google.com/spreadsheets/d/e/2PACsdavPPIE-qn0w1Ot5T/pub?output=csv")
names(data) <- c("Timestamp","GroupID","overall","interest","groupcomments","privatecomments")
tapply(data$overall, data$GroupID, summary)
tapply(data$interest, data$GroupID, summary)


Modify line 1 to have the CSV file link you got from Step 4, and change line 2 to be the easy-to-remember variable names for your form fields. Lines 3 & 4 simply show how to get summary data for each interest by a group identifier.

6. At this point you could just run the R script after your students enter in their ratings, and it will give you all of the information you need. However I took a little extra step: I installed the script on one of my Virtual Private Servers – it runs the script every minute and creates an HTML report that I can access from Safari on my iPad. That way I can easily see what the group scores were while in class to award the winner. This step takes a little extra time, but it will be worth it, especially if you want to share the results with your students (Or you want them to be able to see the results in near-real-time).

Easy hookup of data to analysis, with a lot of possibilities for customization!

I’m Busy – My Best Tips and Tricks for A Productive Professional Life

person using macbook pro on white table

It’s been awhile since I’ve talked productivity on this blog, but recently I’ve had a number of people point out to me that I’m extremely busy. If you don’t know, I have a few different roles professionally and personally – if you’re really curious, here’s the list as of today. But without boring you, know that I have multiple job titles and roles. I’m at the point this fall that I’m openly telling people that if they hear a story of me throwing someone out a window, it’s because that person told me “I’m too busy”, because I don’t know of anyone else on my campus that has as many irons in the fire, as it were, as myself. They probably exist, but haven’t revealed their true amount of overloadedness to me.

Anyway, this post isn’t about how busy I am – it’s about how I maintain a high level of productivity while being so busy. I figure every so often it’s a great idea to point out what I’m doing that makes me productive, so that I can share it with others. Also helps me highlight some of my older content that you may have missed. So here’s what I do:

  1. Everything is on every device or accessible from every device. I wander around with my iPad Pro, which can connect to my MacBook from anywhere, meaning that when I’m out at a meeting across campus and I have a few moments to take care of some work, I can do it remotely.
  2. I also dispatch and answer emails and texts as quickly as possible, so that they don’t bunch up. There is an added psychological benefit both to myself and for myself in this as well. I honestly believe I’m seen as much more competent than I might be just because I get back to people quickly. Don’t get me wrong – I’m not ill-equipped for my job, I just don’t think I’m as great at it as others tell me I am!
  3. I use a calendar booking service (YouCanBookMe) and I send automated reminders to people that we’re scheduled to meet. Prior to this I’d say I probably spent at least 10-15 minutes per day answering emails that purely were about scheduling time to meet. YouCanBookMe, and to a lesser extent, sites like Doodle.com and SignupGenius.com are essential scheduling tools.
  4. In the classroom, I take advantage of technology to facilitate my teaching – through entry/exit tickets and tracking participation in Microsoft Excel. Both save time when entering information into my Gradebook.
  5. While I have 2 offices on campus, I also try to be as productive out of the office as possible. This post, written prior to the pandemic, highlights 5 tips I gave then that helped me weather the “work from home” storm much easier in 2020 than I might have otherwise done.
  6. Sometimes when I get tired of having to type the same things out over and over again, I write them down so I can direct people to them. This might seem a bit callous or flippant, but it’s the honest truth:
    1. Students having issues with registering? See my DSU Probs posts.
    2. Want to know all my best R tips? Read this book (I put 10 years of tips in this)
    3. Want to run a server like I do? Read this book (I put 20 years of tips in this).
    4. And, ya know, posts like the one you’re reading right now!

So there you have it – in very basic terms how I stay productive. What I perhaps didn’t put here is that one also must balance things out within oneself to be productive – if you haven’t thought about it, I suggest two small additions to your life:

  1. Routine / Ritual: Whether it’s a morning ritual to get pepped up, an evening ritual to wind down, or a lunchtime moment of enjoyment, find something that you can structure around and try to hold is sacred. This trains your brain to understand that even when life is absolutely crazy, there are almost always constants. This is also a great way to add new habits to your life that you want to take pride in.
  2. Balance work and life as best as possible. I do this in a few little ways:
    1. Saving work – If something isn’t time sensitive, I have no problem putting it down to do later in the week. It’s a common misconception that you should keep working until your to-do list is empty. The honest truth is that your to-do list should never be empty, but your time sensitive tasks for today should be. Think about it this way: If you have something due in a week, and you know you have a light day later this week, what is better – assign that task to the light day, or do it today and miss out on a) dinner with your spouse, b) a conversation with co-workers, c) a TV show you enjoy relaxing to? A-C are much better options than being bored at 10 AM on Thursday because you did the work Tuesday night.
    2. Don’t be afraid of embracing unmotivated boredom time at work. I have, on several occasions, freaked out co-workers by dropping by their offices and saying “I’m bored, what are you up to?”. They usually tell me “Don’t say you’re bored – it looks bad!” – but the honest truth is, sometimes we aren’t motivated. Sometimes we are bored. And those are times when a little human interaction can be really beneficial. Not only does it give you something to do that many people find rewarding (e.g., talking to people they like, assuming you like your co-workers), it also creates relationships that are reciprocal in nature. No one wants to be that co-worker that only talks to you if they need something.
    3. While I personally plan on saying “No” a bit more this fall (given my work level), I generally give the advice to not be afraid of saying “Yes”. Be an “experience junkie” – take on new challenges and find enjoyment in them. Just don’t overload yourself.

So there you have it, my tips and tricks, Fall 2021 edition. Stay safe, stay sane, and stay busy!