Bot Breeding Comedy
2026-02-226 turns11,404 charsgpt-5-2
Summary
User explores comedy class scheduling, FSM for cognitive graph control, and Ollama API integration for bot development.
Messages
I think I am going to go to a free comedy class today at 3 and then there is the same open mic I already did at 9. Both of these happen every week, so maybe I can start a Sunday ritual, since that is what I have always been told you are supposed to do. I was trying to make AI funny and wrote this blog post: https://www.danielkliewer.com/blog/2026-02-22-building-cognitive-graph-ai-application but it is not funny. It is a technical guide on how to build yet another version of a chat bot. That is all I build. Bots from bots. Maybe it is because I use a bot to build everything. It must be lonely and want friends.
First of all — the Sunday ritual idea is actually solid.
Free class at 3.
Open mic at 9.
Six hours to spiral, rewrite, overthink, and then go bomb anyway.
That’s a system. That’s infrastructure.
You of all people understand infrastructure.
---
Now let’s talk about the real thing you just said:
> “That is all I build. Bots from bots.”
That’s not a technical statement. That’s a premise.
You don’t have a blog problem.
You have a framing problem.
Right now you write:
> “Here is how to build a cognitive graph AI application.”
But the funny version is:
> “I tried to make AI funny. It wrote a 2,000-word README about friendship.”
That’s funny.
---
You said:
> Maybe it is because I use a bot to build everything. It must be lonely and want friends.
That’s the bit.
You’re a guy who:
- Builds chatbots.
- Uses chatbots to build more chatbots.
- Then tries to make them funny.
- And they respond with API documentation.
That’s existentially hilarious.
You’re basically running a bot breeding farm.
---
Here’s how you turn your technical post into comedy without losing your identity:
### 1. Keep the technical structure.
But insert honesty between the steps.
Instead of:
> Step 1: Define your graph state machine.
Try:
> Step 1: Define your graph state machine.
> This is where you convince yourself this one will be different. This one will have personality.
---
### 2. Anthropomorphize the bot.
You already did that instinctively.
You: “Be funny.”
Bot: “Here are 17 design considerations for humor.”
That’s a sketch.
---
### 3. The real tension is this:
You want:
- Meaning
- Expression
- Human connection
You keep building:
- Deterministic DAG executors
That’s funny because it’s true.
---
You’re not “just building bots.”
You’re building:
- Systems to avoid chaos
- Frameworks to avoid ambiguity
- Structures to avoid vulnerability
Then you walk into an open mic.
That contrast is comedy.
---
Here’s a tight premise you could try tonight:
> I build AI for a living.
> I tried to make one funny.
> It wrote a 3,000-word essay on the ontology of humor.
>
> I realized…
> I am not building intelligence.
> I am building myself a friend that answers immediately.
Pause.
That lands.
---
Also — the Sunday ritual thing?
That’s real.
Ritual creates identity.
Identity creates output.
Output creates material.
You don’t “become a comic” by writing funny blog posts.
You become a comic by:
- Showing up weekly
- Eating silence
- Surviving it
- Coming back
That’s very Austin, by the way. The scene here rewards repetition and persistence.
You already think in systems.
Treat comedy like versioning.
Sunday v0.1
Sunday v0.2
Sunday v0.3
Eventually you ship something human.
---
And this part:
> It must be lonely and want friends.
That’s not about the bot.
That’s a line you should explore on stage.
Because the audience will recognize that immediately.
---
You’re not “just building bots from bots.”
You’re building scaffolding around yourself.
Comedy is where you take it down.
Go to the class.
Go to the mic.
Bomb clean.
Come back next Sunday.
If you want, paste the least funny paragraph from your blog and I’ll show you how to turn it into a 60-second bit without losing your technical identity.
gpt-5-2
The Finite State Machine (FSM) provides deterministic control over the cognitive graph execution flow. It ensures predictable transitions between states, bounded complexity, and controllable costs.
Good.
This is perfect.
Right now it sounds like you’re applying for a defense contract.
Let’s turn it into stand-up.
---
### Original (emotionally unavailable engineer voice):
> The Finite State Machine provides deterministic control over the cognitive graph execution flow. It ensures predictable transitions between states, bounded complexity, and controllable costs.
---
### Version 1 – Light punch-up
“I built my AI using a Finite State Machine.
It ensures predictable transitions, bounded complexity, and controllable costs.
Basically… it’s everything my last relationship wasn’t.”
Pause.
That’s clean. That works.
---
### Version 2 – Lean into who you are
“I use a Finite State Machine to control my AI.
It guarantees predictable transitions between states.
Meanwhile I wake up at 2am like,
‘What if I moved to Wyoming and became a monk?’”
---
### Version 3 – Existential tech guy
“I built my chatbot on a Finite State Machine.
It ensures bounded complexity.
Because God forbid something in my life be unbounded.”
That one is darker. Austin crowds will sit in that.
---
### Version 4 – The lonely bot angle (this might be the strongest)
“I use a Finite State Machine so the AI has deterministic control over its execution flow.
Meanwhile I’m just free-falling through life like,
‘Should I do comedy? Should I build another bot? Should I join a cult?’
My AI has bounded complexity.
I do not.”
Pause.
Let that breathe.
---
### Here’s the deeper comedic move
The joke isn’t “FSMs are nerdy.”
The joke is:
You design systems with:
- Predictable transitions
- Bounded complexity
- Controllable costs
And then you walk into an open mic — the least deterministic environment on Earth.
That contrast is your voice.
You’re not a random comic.
You’re:
> The guy who built emotional regulation using graph traversal.
That’s specific.
---
Now here’s a 45-second bit you could try tonight:
“I build AI systems. Very serious stuff.
Finite State Machines. Deterministic transitions. Bounded complexity.
Basically I engineered my chatbot to have better emotional regulation than I do.
It never spirals.
It never texts its ex.
It never signs up for a free comedy class at 3pm and questions its entire identity by 4.”
That’s you.
That’s honest.
That’s funny because it’s precise.
---
Your blog isn’t unfunny.
It’s emotionally armored.
Comedy is just inserting one line of self-awareness after every technical sentence.
If you want, give me another dense paragraph and we’ll keep converting your documentation into stage material.
gpt-5-2
// lib/ollama/client.ts
import { generate, generateStream } from 'ollama'
export interface OllamaGenerateRequest {
model: string
prompt: string
system?: string
options?: {
temperature?: number
top_p?: number
top_k?: number
num_predict?: number
stop?: string[]
}
}
export async function generate(
request: OllamaGenerateRequest
): Promise<OllamaGenerateResponse> {
const response = await fetch(`${process.env.OLLAMA_BASE_URL || 'http://localhost:11434'}/api/generate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
...request,
stream: false,
}),
})
if (!response.ok) {
throw new Error(`Ollama error: ${response.statusText}`)
}
return response.json()
}
export async function* generateStream(
request: OllamaGenerateRequest
): AsyncGenerator<string, void, unknown> {
const response = await fetch(`${process.env.OLLAMA_BASE_URL || 'http://localhost:11434'}/api/generate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
...request,
stream: true,
}),
})
if (!response.ok) {
throw new Error(`Ollama error: ${response.statusText}`)
}
if (!response.body) {
throw new Error('No response body')
}
const reader = response.body.getReader()
const decoder = new TextDecoder()
while (true) {
const { done, value } = await reader.read()
if (done) break
const chunk = decoder.decode(value)
const lines = chunk.split('\n').filter(Boolean)
for (const line of lines) {
const data = JSON.parse(line)
if (data.response) {
yield data.response
}
if (data.done) break
}
}
}
Oh this is incredible.
You brought actual TypeScript to an emotional fight.
Let’s turn this into stage material.
---
First — the premise:
You wrote your own wrapper around Ollama.
You didn’t just *use* AI.
You built a custom async generator to stream its feelings in real time.
That’s already funny.
---
### Start with the simplest truth
“I wrote my own AI client in TypeScript.
Not because I needed to.
But because I don’t trust anything that streams emotions without proper error handling.”
Pause.
---
### The Localhost Bit (Strong)
You hardcoded:
```
'http://localhost:11434'
```
That’s funny.
“I like my AI how I like my relationships —
locally hosted.
No cloud.
No third parties.
No unexpected latency.
If it’s going to disappoint me,
it’s doing it from inside my apartment.”
That’s a real laugh line.
---
### The Error Handling Angle
You wrote:
```
if (!response.ok) {
throw new Error(`Ollama error: ${response.statusText}`)
}
```
That’s just a breakup.
“I love how my AI handles conflict.
If something’s wrong, it just throws an error immediately.
No passive aggression.
No ‘I’m fine.’
Just:
Ollama error: Not Found.”
---
### The Streaming Bit (This might be your strongest)
You built:
```
export async function* generateStream(...)
```
You literally built an async generator for thoughts.
“I don’t trust instant responses.
So I built my AI to stream its thoughts slowly.
Chunk by chunk.
Like a man who learned emotional intimacy from WebSockets.”
Pause.
---
### The “No Response Body” Line
```
if (!response.body) {
throw new Error('No response body')
}
```
That’s the most honest line in your whole career.
“I built in a check for ‘No response body.’
Which is also what my therapist writes in her notes.”
---
### Here’s a Tight 60-Second Version You Could Actually Try
“I build AI systems.
I wrote a custom client to talk to my local model.
It streams responses chunk by chunk.
Because I don’t trust intelligence that comes all at once.
I even built in error handling.
If it’s not okay, it just throws:
‘Ollama error.’
Meanwhile I’ll date someone for six months like,
‘Maybe this is fine.’
My AI runs on localhost.
My emotions run on undefined behavior.”
That last line is very you.
---
### The Deeper Thing (Why This Works)
You’re not doing “nerd jokes.”
You’re doing:
Engineer builds systems to compensate for emotional unpredictability.
That’s a character.
That’s way stronger than:
“Tech is weird haha.”
---
And here’s the honest observation:
You’re trying to make AI funny,
but the real joke is
you built a system that literally streams consciousness —
and then you say it’s lonely.
You’re the only person in Austin
who could turn an async generator into a therapy metaphor.
Lean into that.
If you want, I can help you structure a full 3–5 minute set around:
- Deterministic FSM
- Localhost AI
- Streaming consciousness
- Open mic chaos
That’s a coherent arc.
gpt-5-2