Ian Watkins

Ian Watkins

Hey! πŸ‘‹πŸΌ I'm the dad of 5 humans and 3 dogs who loves a good cup of coffee and an even better book. Follower of Jesus. Major nerd. Sales executive. Tech geek. BBQ enthusiast. This is where I share what I am learning as I go.

Recent Posts

Steady

How do you react when difficult circumstances arise?

Life isn’t always fair. It’s not easy. Difficult circumstances will arise for all of us from time to time. The question is how will you choose to respond during tough times?

It is tempting to give into our emotional response and allow that to dictate how we react. This, however, is not good. Emotions are fleeting and driven by hormones flooding your body. They are indifferent to reality outside your current circumstance. They have no perspective.

Read more β†’

Sales Success Is Boring 😴

The Boring Path to Sales Success

Ask any top sales performer the secret to their success, and chances are, you won’t get a flashy answer. You won’t hear about a secret script or a viral campaign or some once-in-a-lifetime pitch that changed everything. What you’ll hear β€” if they’re being honest β€” is something much simpler, and far less exciting:

πŸ’‘Sales Success Comes Down To Consistency, Discipline, And A Commitment To The Basics.

Read more β†’

Decorators in Python

Python Decorators

Decorators are a way we can use higher order functions to modify other functions. Typically they are used to wrap a function with another function.


def hello(name="Ian"):
    def greeting(func):
        def wrapper(*args, **kwargs):
            print("A man is sitting at the bar, you go up and greet him.")

            if name == "Ian":
                print("My name is Ian, what's yours?")
            else:
                print(f"My name is {name}, what's yours?")

            print("The man glances your way momentarily, then moves to the other end of the bar.")
            result = func(*args, **kwargs)
            return result
        return wrapper
    return greeting

@hello("Alice")
def bar_talk():
    print("You start a conversation about the weather with the bartender instead.")

@hello()
def another_chat():
    print("You shrug your shoulders and ask the bartender about the local sports team.")


print("=== First Interaction ===")
bar_talk()

print("\n=== Second Interaction ===")
another_chat()

In the example above, you would get the following print out:

Read more β†’

RAG

What is RAG?

If you’ve been trying to keep up with AI, there’s a good chance you’ve come across the term RAG. When I first learned heard the term, I wasn’t exactly sure what it meant form the context of the discussion.

Retrieval-Augmented Generation (RAG) is a technique that enhances the accuracy of large language models (LLMs) by giving them a wider context window and including external (from the LLM’s database) knowledge sources.

Read more β†’

Sales Mindset

Mindset is everything.

Sales is arguably a mindset game and most salespeople get it wrong.

Let me tell you why…

Most sales reps I have spoken to over the last decade have told me that the reason they went into sales to begin with is to make more money. There’s no doubt that making commission is a massive upside to working in sales - but the issue arises when the initial motivation becomes the focus of your daily mindset.

Read more β†’

Projects

Terminal Site

Terminal

Those who code spend a lot of time in the terminal. I actually take my daily notes for work and life in the terminal in addition to any coding projects I work on in my spare time.

When you become comfortable using it, the terminal becomes a magical place, where you can fly around like a wizard performing all sorts of tasks without ever needing to lift your fingers off the keyboard. Seriously… who uses a mouse these days 😜.

Read more β†’

Code Tutor AI Agent

Code Tutor AI πŸ§™πŸΌβ€β™‚οΈ

An AI-powered interactive CLI coding tutor built with OpenAI Agent SDK.

Code Tutor is built to allow you to learn to code yourself rather than just vibe code your way to success. This AI agent is supportive and uses the Socractic method to walk you, the coding student, through solving the problem on your own with guidance.

🧠 Code tutor is built on the principle that we can use AI to accomplish great things, but we need to protect our ability to think critically and learn.

Read more β†’

Better Tasks

Better Tasks Neovim Plugin

Better Tasks is a lightweight, modular and opinionated Neovim plugin for managing Markdown-based task lists across your notes, journals, or project files. It adds intuitive task management commands, persistent storage, status highlighting, and upcoming fuzzy-finding and popup UIs.

As always, you can find out more about this project and all my projects in my GitHub.


πŸ’‘ Task Structure

As you can see below, the tasks can be formatted into a table-like structure (not truly a table due to markdown limitations) that allow you to quickly see your tasks at a glance and view them through the perspective of title, due date, category, or status.

Read more β†’