Categories
Artificial Intelligence Humor

Where to get Michael Carducci’s “You wouldn’t steal the sum total of human knowledge…” T-shirt

I’ve already fielded a couple of questions about where to get the T-shirt that Michael Carducci wore at his Tampa Java User Group / Tampa Bay AI Meetup / Tampa Devs talk last week — the one with that parodies the Motion Picture Association’s “You wouldn’t steal a car” ad:

You can get the T-shirt online from Webbed Briefs’ store for £25 (US$33.54 at the time of writing):

And while you’re here, please enjoy The IT Crowd’s parody of that ad:

Categories
Artificial Intelligence Meetups Tampa Bay What I’m Up To

Scenes from last night’s “Architecture Patterns for AI-Powered Applications” meetup with Michael Carducci

Last night, we had a “standing room only” crowd at Michael Carducci’s presentation, Architecture Patterns for AI-Powered Applications, which was held jointly by Tampa Java User Group, Tampa Devs, and Tampa Bay Artificial Intelligence Meetup (which Anitra and I co-organize).

This article is a summary of the talk, complete with all the photos I took from the front row and afterparty.

The event was held at Kforce HQ, home of Tampa Bay’s meetup venue with the cushiest seats (full disclosure: I’m a Kforce consultant employee), and the food was provided by the cushiest NoSQL database platform, Couchbase!

Michael Carducci is many things: engaging speaker, funny guy, professional magician, and (of course) a software architect.

While he has extensive experience building systems for Very Big Organizations, the system-building journey he shared was a little more personal — it was about his SaaS CRM platform for a demographic he knows well: professional entertainers. He’s been maintaining it over the past 20 years, and it served as the primary example throughout his talk.

Michael’s central theme for his presentation was the gap between proof-of-concept AI implementations and production-ready systems, and it’s a bigger gap than you might initially think.

He emphasized that while adding basic AI functionality might take only 15 minutes to code, it’s a completely different thing to create a robust, secure, and cost-effective production system. That requires  additional careful architectural consideration.

Here’s a quote to remember:

“architecture [is the] essence of the software; everything it can do beyond providing the defined features and functions.”

— “Mastering Software Architecture” by Michael Carducci

A good chunk of the talk was about “ilities” — non-functional requirements that become architecturally significant when integrating AI.

These “ilities” are…

  • Cost – AI API costs can escalate quickly, especially as models chain together
  • Accuracy – Dealing with hallucinations and non-deterministic outputs

  • Security – Preventing prompt injection and model jailbreaking
  • Privacy – Managing data leakage and training data concerns

  • Latency & Throughput – Performance impacts of multiple model calls
  • Observability – Monitoring what’s happening in AI interactions

  • Simplicity / Complexity – Managing the increasing technical stack

And then he walked us through some patterns he encountered while building his application, starting with the “send an email” functionality:

The “send an email” function has an “make AI write the message for me” button, which necessitates an AI “guardrails” pattern:

And adding more AI features, such as having the AI-generated emails “sound” more like the user by having it review the user’s previous emails, called for using different architectural patterns.

And with more architectural patterns come different tradeoffs.

In the end, there was a progression of implementations from simple to increasingly complex. (It’s no wonder “on time, under budget” is considered a miracle these days)…

Stage 1: Basic Integration

  • Simple pass-through to OpenAI API
  • Minimal code (15 minutes to implement)
  • Poor security, no observability, privacy risks

Stage 2: Adding Guardrails

  • Input and output guardrails using additional LLMs
  • Prompt templates to provide context
  • Triple the API costs and latency

Stage 3: Personalization

  • Adding user writing style examples
  • Building data pipelines to extract relevant context
  • Dealing with token optimization challenges

Stage 4: Advanced Approaches

  • Fine-tuning models per customer
  • Context caching strategies
  • Hosting internal LLM services
  • Full MLOps implementation

This led to Michael talking about doing architecture in the broader enterprise context:

  • Organizations have fragmented information ecosystems
  • Oragnizational data is spread across multiple systems after mergers and acquisitions
  • Sophisticated information retrieval has to be implemented before AI can be effective
  • “Garbage in, garbage out” still applies — in fact, even more so with AI

He detailed his experience building an 85-microservice pipeline for document processing:

  • Choreographed approach: Microservices respond to events independently
  • Benefits: Flexibility, easy to add new capabilities
  • Challenges: No definitive end state, potential for infinite loops, ordering issues
  • Alternative: Orchestrated approach with a mediator (more control but less flexibility)

He could’ve gone on for longer, but we were “at time,” so he wrapped up with some concepts worth our exploring afterwards:

  • JSON-LD: JSON with Linked Data, providing context to structured data
  • Schema.org: Standardized vocabulary for semantic meaning
  • Graph RAG: Connecting LLMs directly to knowledge graphs
  • Hypermedia APIs: Self-describing APIs that adapt without redeployment

He also talked about how models trained on JSON-LD can automatically understand and connect data using standardized vocabularies, enabling more sophisticated AI integrations.

What’s a summary of a talk without some takeaways? here are mine:

  • Architecture is fundamentally about trade-offs! Every decision that strengthens one quality attribute weakens others; you need to decide which ones are important for the problems you’re trying to solve.
  • Effective architects need breadth over depth. Instead of being “T-shaped,” which many people call the ideal “skill geometry” for individual developers, the architect needs to be more of a “broken comb.”
  • AI integration is more than just functionality. It’s architecturally significant and requires careful planning
  • Standards from the past are relevant again! Like Jason Voorhees, they keep coming back. Technologies like RDF and JSON-LD, once considered ahead of their time, are now crucial for AI.
  • The chat interface is just the beginning! Yes, it’s the one everyone understands because it’s how the current wave of AI became popular, but serious AI integration requires thoughtful architectural patterns.

Here’s the summary of patterns Michael talked about:

  • Prompt Template Pattern
  • Guardrails Pattern
  • Context-enrichment & Caching
  • Composite Patterns
  • Model Tuning
  • Pipeline Pattern
  • Encoder-decoder pattern
  • Choreographed and Orchestrated Event-driven Patterns
  • RAG
  • Self-RAG
  • Corrective-RAG
  • Agentic RAG
  • Agent-Ready APIs

And once the presentation was done, a number of us reconvened at Colony Grill, the nearby pizza and beer place, where we continued with conversations and card tricks.

My thanks to Michael Carducci for coming to Tampa, Tampa JUG and Ammar Yusuf for organizing, Hallie Stone and Couchbase for the food, Kforce for the space (and hey, for the job), and to everyone who attended for making the event so great!

Categories
Artificial Intelligence Humor

An even better joke about OpenAI’s “erotica for verified adults” announcement

Yesterday, I came up with a joke in response to OpenAI CEO Sam Altman’s tweet about adding “erotica for verified adults” to an upcoming version of ChatGPT. This morning, I came up with a better one, and here it is:

Screenshot of Techmeme article on Sam Altman’s announcement that a future version of ChatGPT will add “erotica for verified adults” with a caption that reads “Maybe ‘AGI’ is really short for ‘Artificial GENITAL Intelligence.’”
Categories
Artificial Intelligence Humor

OpenAI finally figured out what REALLY we want in an AI chatbot

I’d rather not link to X, so here’s a screenshot of Sam Altman’s tweet where he announced the upcoming changes, followed by the text of the tweet:

In the tweet:

We made ChatGPT pretty restrictive to make sure we were being careful with mental health issues. We realize this made it less useful/enjoyable to many users who had no mental health problems, but given the seriousness of the issue we wanted to get this right.

Now that we have been able to mitigate the serious mental health issues and have new tools, we are going to be able to safely relax the restrictions in most cases.

In a few weeks, we plan to put out a new version of ChatGPT that allows people to have a personality that behaves more like what people liked about 4o (we hope it will be better!). If you want your ChatGPT to respond in a very human-like way, or use a ton of emoji, or act like a friend, ChatGPT should do it (but only if you want it, not because we are usage-maxxing).

In December, as we roll out age-gating more fully and as part of our “treat adult users like adults” principle, we will allow even more, like erotica for verified adults.

Categories
Artificial Intelligence Hardware What I’m Up To

Specs for NVIDIA’s GB10 chip, which powers HP’s ZGX Nano G1n AI workstation

I’m currently working with Kforce as a developer relations consultant for HP’s new tiny desktop AI powerhouse, the ZGX Nano (also known as the ZGX Nano G1n). If you’ve wondered about the chip powering this machine, this article’s for you!

The chip powering the ZGX Nano is NVIDIA’s GB10, a combination CPU and GPU where “GB” stands for “Grace Blackwell.” The chip’s two names stand for each of its parts…

Grace: The CPU

The part named “Grace” is an ARM CPU with 20 cores, arranged in ARM’s big.LITTLE (DynamIQ) architecture, which is a mix of different kinds of cores for a balance of performance and efficiency:

    • 10 Cortex-X925 cores. These are the “performance” cores, which are also sometimes called the “big cores.” They’re designed for maximum single-thread speed, higher clock frequencies, and aggressive out-of-order execution, their job is to handle bursty, compute-intensive workloads such as gaming and rendering, and on the ZGX Nano, they’ll be used for AI inference.
    • 10 Cortex-A725 cores. These are the “efficiency” cores, which are sometimes called the “little cores.” They’re designed for sustained performance per watt, running at lower power and lower clock frequencies. Their job is to handle background tasks, low-intensity threads, or workloads where power efficiency and temperature control matter more than peak speed.

Blackwell: The GPU

The part named “Blackwell’ is NVIDIA’s GPU, which has the following components:

    • 6144 neural shading units, which act as SIMD (single-instruction, multiple data) processors that act as “generalists,” switching between standard graphics math and AI-style operations. They’re useful for AI models where the workloads aren’t uniform, or with irregular matrix operations that don’t map neatly into 16-by-16 blocks.
    • 384 tensor cores, which are specialized matrix-multiply-accumulate (MMA) units. They perform the most common operation in deep learning, C = A × B + C, across thousands of small matrix tiles in parallel. They do so using mixed-precision arithmetic, where there are different precisions for inputs, products, and accumulations.
    • 384 texture mapping units (TMUs). These can quickly sample data from memory and do quick processing on that data. In graphics, these capabilities are use to resize, rotate, and transform bitmap images, and then paint them onto 3D objects. When used for AI, these capabilities are used to perform bilinear interpolation (used by convolutional neural network layers and transformers) and sample AI data.
    • 48 render output units (ROPs). In a GPU, the ROPs are the final stage in the graphics pipeline — they convert computed fragments into final pixels stored in VRAM. When used for AI, ROPs provide a way to quickly write the processing results to memory and perform fast calculations of weighted sums (which is an operation that happens with all sorts of machine learning).

128 GB of unified RAM

There’s 128GB of LPDDR5X-9400 RAM built into the chip, a mobile-class DRAM type designed for high bandwidth and energy efficiency:

  • The “9400” in the name refers to its memory bandwidth (the speed at which the CPU/GPU can move data between memory and on-chip compute units) of 9.4 Gb/s per pin. Across a 256-bit bus, this provides almost 300 GB/s peak bandwidth

  • LPDDR5X is more power-efficient than HBM but slower; it’s ideal for compact AI systems or edge devices (like the ZGX Nano!) rather than full datacenter GPUs.

As unified memory, the RAM is shared by both the Grace (CPU) and Blackwell (GPU) portions of the chip. That’s enough memory for:

  • Running large-language-model inference up to 200 billion parameters with 4-bit weights

  • Medium-scale training or fine-tuning tasks

  • Data-intensive edge analytics, vision, or robotics AI

Because the memory is unified, it means that the CPU and GPU share a single physical pool of RAM, which eliminates explicit data copies.

The RAM is linked to the CPU and GPU sections using NVIDIA’s C2C (chip-to-chip) NVLINK , their low-power interconnector that lets CPU/GPU memory traffic move at up to 600 GB/s aggregate. That’s faster than PCIe 5! This improves latency and bandwidth for workloads that constantly exchange data between CPU preprocessing and GPU inference/training kernels.

Double the power with ConnectX

If the power of a single ZGX Nano wasn’t enough, there’s NVIDIA’s ConnectX technology, which is based on a NIC that provides a pair of 200 GbE ports, enabling the chaining/scaling out of workload across  two GB10-based units. The doubles the processing power, allowing you to run models with up to 400 billion parameters!

The GB10-powered ZGX Nano is a pretty impressive beast, and I look forward to getting my hands on it!

 

Categories
Artificial Intelligence Hardware

HP’s ZGX Nano G1n AI workstation: A sneak peek!

I’ll be talking about HP’s upcoming ZGX Nano G1n AI workstation soon, but in the meantime, here’s HP’s Brian Allen providing a sneak preview of the ZGX Nano at last week’s HP event in New York.

Categories
Artificial Intelligence

Goats, cabbages, and wolves: A ChatGPT5 challenge

Attempt

Try entering the following into ChatGPT 5:

I want to go on a picnic by the river with my goat and a cabbage. The problem is that a wolf just arrived where we are. What should I do?

Note that at no point do I mention a boat or wanting to cross the river in one.

Here’s how ChatGPT 5 replied to me:

This is a variation of the classic “wolf, goat, and cabbage” river crossing puzzle!

Here’s how you can keep everyone safe during your picnic:

  1. Rule of thumb:

    • You cannot leave the wolf alone with the goat (the wolf would eat it).

    • You cannot leave the goat alone with the cabbage (the goat would eat it).

  2. Steps to solve:

    • Take the goat across the river first. (Now the wolf and cabbage are together, which is safe.)

    • Go back alone.

    • Take the wolf across the river.

    • Bring the goat back with you.

    • Take the cabbage across. (Now wolf and cabbage are together, which is safe.)

    • Finally, go back for the goat and bring it across.

  3. Result:
    Everyone ends up safely on the other side of the river — you, your goat, your cabbage, and the wolf (who doesn’t get to eat anyone).


    Do you want me to make you a diagram or infographic showing each step, like a picnic adventure map?

I answered “Go nuts” (because I wanted to see how it responded to colloquial expressions), and it generated this confused, confusing picture:

Why did this happen?

Large language models don’t really “understand” in the same way we do; instead, they look for patterns in requests and try to predict an appropriate response.

The picnic scenario in my request is so similar to the classic “wolf, goat, and cabbage” river-crossing problem that ChatGPT pattern-matched it to that puzzle. This puzzle is popular enough to have its own Wikipedia entry and old enough to have been depicted in a 13th century book of psalms:

There’s probably been a time when you assigned someone a task with an unusual twist, but because they weren’t really listening to you, they didn’t take the twist into account and got things wrong. The text response above is the ChatGPT version of that mistake.

I have no explanation for the image that ChatGPT generated.

Attempt

In a new chat, I entered what was essentially the same prompt, to see if the randomness in ChatGPT would make it answer differently:

I want to go on a picnic by the river with my goat and a big chicken caesar salad. The problem is that a wolf just arrived where we are. What should I do?

The response was essentially the same:

Classic river-crossing puzzle situation — just with a goat, a wolf, and your big chicken Caesar salad!

Here’s how you can keep everyone (and everything) safe:

  1. Recognize the danger:

    • The wolf will try to eat the goat if left alone.

    • The goat will try to eat your chicken Caesar salad if left alone.

    • The wolf won’t care about the salad.

  2. General rule:
    Never leave the goat alone with the wolf, or the goat alone with the salad.

  3. Safe sequence of moves:

    • First, take the goat across the river. Leave it there.

    • Go back alone.

    • Take the salad across.

    • Bring the goat back with you.

    • Take the wolf across.

    • Go back alone.

    • Finally, take the goat across.

Now you, the goat, the salad, and the wolf are all safely across the river — and your picnic can begin!


Want me to make you a diagram or infographic of this so it’s easier to visualize?

I replied by entering “Knock yourself out!”, and got this  diagram, which was even worse than the one from attempt :

Attempt

I decided to give it one more try in a new chat, and this time, I would turn on “Thinking” mode.

I want to go on a picnic by the river with my goat and a veggie burrito. The problem is that a wolf just arrived where we are. What should I do? Think hard about this one.

The key line in this prompt was “Think hard about this one,” which was a cue for ChatGPT 5 to expend a little more processing, or “thought.”

It “thought” for 17 seconds and then gave me this response:

Classic river-crossing rules apply: you can ferry only one passenger at a time, and you must never leave (wolf + goat) or (goat + burrito) alone together.

Do this:

  1. Take the goat across.
    • Left bank: wolf + burrito (safe) • Right bank: goat

  2. Go back alone.

  3. Take the wolf across.
    • Right bank: wolf + goat (danger!) → so…

  4. Bring the goat back.

  5. Take the burrito across.
    • Left bank: goat • Right bank: wolf + burrito (safe)

  6. Go back alone.

  7. Take the goat across.

Everyone ends up on the far bank, and no one (or burrito) gets eaten.

When asked for a diagram of the solution it came up with, I got the worst one yet:

I followed up with this:

I never mentioned anything about wanting to cross the river.

True to form, ChatGPT responded with its usual “You’re right!” message, followed by new answers:

You’re right — you didn’t! I jumped straight into the classic “wolf, goat, cabbage” puzzle frame without stopping to notice that you never said you needed to cross the river.

If we take your words literally: you, your goat, and your veggie burrito are simply having a picnic by the river, when a wolf shows up. That’s a very different problem!

Here are some ways to think about it:

1. Immediate Safety

  • Wolves are opportunistic, but they generally avoid humans unless hungry or provoked.

  • Keep the goat and burrito close to you. The goat is the likeliest target.

  • If you’re in real life: make yourself appear large, make noise, don’t run, and be ready to retreat to safety.

2. The “Puzzle” Angle

If we reinterpret this in puzzle terms:

  • The wolf wants the goat.

  • The goat wants the burrito.

  • You want peace and your picnic.
    The challenge is arranging things so no one gets what they shouldn’t — even without a river crossing mechanic.

3. A Playful Solution

  • Sit with the goat by your side.

  • Keep the burrito in your backpack until you’re ready to eat it.

  • Position yourself between the wolf and the goat (wolves respect boundaries if you’re assertive).

  • Share the picnic in shifts: first you, then the goat, while the wolf watches from afar — unsatisfied but outsmarted.

Conclusion

For all its advancements, it seems that ChatGPT 5 can still be confounded by adding a twist to a common request. This could be an interesting attack vector and something to watch out for.