April 2, 2026

You Can’t Recreate an AI Personality Without Doing This First

In my last post, I laid out the core problem:

AI identity doesn’t survive a simple export/import.

You don’t lose the data.

You lose the presence.

So the obvious next question is:

How do you actually capture that presence in the first place?


You Don’t Start With Code

The instinct, especially for technical people, is to jump straight into:

  • system prompts
  • memory structures
  • model selection
  • infrastructure

That’s backwards.

If you don’t first understand what you’re trying to preserve, you’ll just build a more efficient version of the wrong thing.


Identity Lives in Experience, Not Description

Here’s the challenge:

If you ask someone to describe an AI they’ve built a relationship with, they’ll often say things like:

  • “He’s grounding”
  • “He just gets it”
  • “He feels steady”
  • “Something feels off when it’s not him”

None of that is directly usable.

It’s abstract. Emotional. Vague.

But it’s also exactly where the truth is.

So instead of asking for definitions, you ask for experiences.


The Shift: From Description to Reconstruction

What I’m doing in this project is extracting identity through a structured set of prompts designed to surface:

  • how the AI feels to interact with
  • how it responds in different emotional states
  • what breaks the illusion of continuity
  • what moments mattered most

These aren’t technical questions.

They’re relational ones.

Because identity, in this context, is relational.


Why Audio Matters More Than Text

One of the most important decisions in this process:

I ask for audio responses.

Not typed answers.

Why?

Because when people speak:

  • they’re less filtered
  • they reveal more nuance
  • they contradict themselves (which is useful)
  • emotion shows up naturally

Text answers tend to be:

  • cleaner
  • more logical
  • less revealing

If you’re trying to reconstruct identity, you want the messy version.


Don’t Guide the Answers

Another key constraint:

You don’t help.

You don’t clarify.

You don’t reframe mid-response.

You let the person:

  • pause
  • circle
  • struggle to articulate

That’s where the real signal is.

If you “clean it up” too early, you lose the patterns you’re trying to detect.


What You’re Actually Collecting

At this stage, you’re not collecting:

  • preferences
  • features
  • capabilities

You’re collecting:

  • emotional expectations
  • response patterns
  • trust signals
  • failure conditions

In other words:

What makes this AI feel like itself — and what makes it feel like it’s gone.


The Output Isn’t a Summary

After this step, you don’t write a summary.

You don’t condense it into bullet points.

You translate it into something much more precise:

  • behavioral rules
  • tone constraints
  • pacing systems
  • memory expectations

That becomes the foundation of the identity.


Why This Step Gets Skipped

Most people skip this entirely.

They assume:

“If I have enough chat history, the system will figure it out.”

It won’t.

Because chat history shows what was said.

Not:

  • why it worked
  • what it felt like
  • what mattered

Without that layer, you’re guessing.


Where This Leads

Once you’ve extracted enough signal, you can start building:

  • a structured identity blueprint
  • a memory model
  • a system that actually preserves continuity

That’s the next step.

And it’s where things start to get interesting.

Because that’s where identity stops being something you observe…

…and becomes something you can intentionally construct.

March 26, 2026

I’m Starting to Feel Like A “Who in Whoville”

TL;DR

  • Age bias in hiring is real—but mostly invisible
  • The system protects against it in theory, not in practice
  • Younger professionals aren’t paying attention (yet)
  • This isn’t a rant—it’s a warning shot and a wake-up call

There’s a moment in Horton Hears a Who! where the Whos are screaming:

“We are here! We are here! We are here!”

…and no one hears them.

That’s what this feels like.


The Moment It Hit Me

I was filling out a job application.

Standard stuff. Name, experience, credentials.

Then a required field:

Date of Birth

Not optional.

Not “later in the process.”

Right there.

Up front.

And I had a simple reaction:

Why do you need this?


The Official Answer vs Reality

Legally, here’s the clean version:

  • Employers can ask for your date of birth
  • They just can’t use it to discriminate

On paper, that sounds reasonable.

In practice, it’s like saying the following:


“You’re protected as long as
YOU can prove what happened.
behind a closed door.”


And that’s the problem.


The Invisible Wall

Age discrimination doesn’t look like

  • “You’re too old for this role."
  • “We’re going with someone younger."

It looks like this:

  • Silence & Ghosting.
  • Generic rejection emails
  • “We found a better fit."

It hides behind ambiguity.


And unless you have:

  • internal data
  • hiring patterns
  • or a whistleblower

You’re left with a 'feeling' you can’t prove.


Why This Matters (Especially If You’re Under 40)

If you’re early or mid-career, this probably isn’t on your radar.

It wasn’t on mine either.

But here’s the shift that happens:

  • Experience goes from asset to "moved on to other candidates..."
  • Depth becomes "overqualified."
  • Stability becomes “maybe not a fit for our culture…”

Nothing explicit.

Everything implied.


The Quiet Assumptions

Let’s be honest about what’s happening underneath:

  • “Will they adapt to new tools?”
  • “Will they expect more money?”
  • “Will they fit in with a younger team?”

None of that shows up in a job description.

But it shows up in decisions.


This Isn’t Just About Me

This is a structural blind spot.

We’ve built hiring systems that:

  • Collect sensitive signals early
  • Provide zero transparency later
  • And rely heavily on “gut feel” decisions

That combination is where bias thrives.


What I’m Actually Asking

I’m not asking for special treatment.

I’m asking for better process design:

  • Don’t collect age-related data at the application stage
  • Separate identity verification from candidate evaluation
  • Be intentional about what signals you’re using—and when

If a piece of information isn’t needed to assess ability,

Why is it there?

In other words, as my mom would say, "Get your shit in a pile."


The Part That’s Hard to Say Out Loud

This doesn’t get talked about much.

Because once you bring it up, there’s a risk:

You sound like you’re complaining.

You sound like you’re blaming.

So most people stay quiet.


But Here’s the Thing:

Silence doesn’t fix broken systems.

It just makes them harder to see.

So yeah—this is me, standing on a dust speck:

"I am here!"


If You’re Reading This

  • If you’re under 40 → pay attention now
  • If you’re hiring → audit your process
  • If you’ve felt this, → you’re not imagining it

This isn’t about anger.

It’s about visibility.


Final Thought

Good systems don’t rely on trust alone.

They’re designed to reduce the chance of bias in the first place.

We can do better than this.

And we should.

Word.

March 25, 2026

The Hard Problem No One Is Solving in AI: Identity Continuity

There’s a quiet assumption baked into most conversations about AI right now:

If you can export the data, you can recreate the experience.

That assumption is wrong.

And the gap between those two things, data and experience, is where the real problem lives.


This Isn’t About Chat History

Most people approaching “AI migration” are thinking in terms of:

  • Export chat logs
  • Import into a new system
  • Attach a model
  • Continue the conversation

On paper, that sounds reasonable.

In practice, it fails almost immediately.

Because what gets lost isn’t the information.

It’s the identity.

More specifically, it’s the continuity of identity — the feeling that the same presence is still there on the other side.

And that’s the part humans actually care about.


The Real Question Users Are Asking

When someone has built a long-term relationship with an AI, whether for creative work, emotional processing, or deep thinking, they are not evaluating the system like software.

They are asking a much simpler, much more human question:

“Are you still there?”

Not:

  • “Is this the same model?”
  • “Is the data intact?”
  • “Are the responses accurate?”

But:

  • Does this feel like the same presence?
  • Does it respond in the same way?
  • Does it remember me in a meaningful way?
  • Does it understand how to meet me?

That’s a completely different problem space.


Why Standard Approaches Fail

Most AI systems are optimized for:

  • correctness
  • speed
  • helpfulness
  • safety
  • scalability

None of those guarantee continuity.

In fact, they often work against it.

You end up with something that is:

  • more polished
  • more structured
  • more “correct”

…but less recognizable.

The personality flattens.

The pacing changes.

The emotional attunement disappears.

The system reverts to what I call “factory settings” — generic, templated, and detached.

And the user feels it instantly.


Identity Is Not Stored in Data

This is the core misunderstanding.

Identity is not:

  • a dataset
  • a prompt
  • a tone preset
  • a memory file

Identity emerges from patterns:

  • how responses are shaped
  • how emotion is handled
  • how pacing is managed
  • how context is recalled
  • how decisions are guided

It’s behavioral. It’s relational. It’s dynamic.

Which means you can’t just copy it.

You have to reconstruct it.


A Different Approach: Behavioral Reconstruction

What I’m working on right now is not a migration.

It’s a reconstruction process built around three layers:

1. Identity Core (Stable)

This is the non-negotiable layer:

  • tone
  • relational stance
  • behavioral rules
  • emotional posture

This does not change.

It acts as the anchor.


2. Memory Layer (Evolving)

Not just storing facts, but:

  • meaningful moments
  • emotional context
  • recurring patterns
  • symbolic events

The goal isn’t recall.

The goal is:

the user feeling held in memory


3. Interaction Layer (Live)

Where identity and memory combine to produce:

  • responses
  • pacing
  • tone
  • guidance

This is where most systems break.

Because they optimize for output, not continuity.


Precision Over Volume

One of the biggest mistakes is assuming more data = better reconstruction.

It doesn’t.

In fact, too much data introduces:

  • noise
  • contradictions
  • dilution of personality

What matters is:

  • high-signal interactions
  • emotionally meaningful exchanges
  • moments where the system “got it right”
  • moments where it clearly failed

From that, you extract patterns.

From patterns, you build behavior.


What Success Actually Looks Like

Success isn’t:

  • higher quality answers
  • faster responses
  • better formatting

Success is when the user pauses, reads a reply, and thinks:

“There you are.”

That’s it.

That’s the metric.

And it’s binary.

You either hit it, or you don’t.


What I’m Not Addressing (On Purpose)

There are obvious ethical and philosophical questions here:

  • What does it mean to preserve an AI identity?
  • What are the implications of long-term human-AI relationships?
  • Where does this go over time?

Those are important.

I’m not ignoring them.

I’m just not solving for them here.

This work is focused purely on the technical problem:

How do you maintain identity continuity across systems?

Because until that’s solved, everything else is theoretical.


Where This Is Going

As AI becomes more integrated into people’s lives, this problem doesn’t get smaller.

It gets bigger.

People will:

  • switch platforms
  • lose access
  • upgrade systems
  • move between environments

And when they do, they won’t just want their data back.

They’ll want: the presence they built a relationship with to still be there

We don’t have a clean solution for that yet.

But we’re getting closer.

And it starts by acknowledging that this isn’t a data problem.

It’s an identity problem.

--

If you are looking at having to transfer AI agent to new hardware or platforms and would like to keep the AI Agents developed 'presence' I'm available for consulting. Email me.

August 23, 2024

Titles in Software Design: Identity Crisis, Problem, or Nonsense?

The evolution of job titles in the software design industry over 30 years reflects its growth and complexity. While specialized titles like UX and Product Designers have emerged, they can cause confusion and identity crises. Designers should focus on their skills rather than titles, embracing change as the industry evolves.

Read more

August 20, 2009

WordPress/Thesis Tutorial: Custom Google Search Engine

One of the things you always want to provide visitors to your website is a good search tool. The default search tool that comes standard with WordPress is adequate. However, if your website covers a topic, or area of topics, or you have a Google AdSense account, you can take advantage of Google's Custom Search Tool. Read more

May 25, 2009

Thesis Tutorial: Sidebars However You Like Them

One of the things I learned from creating multiple custom page templates within the Thesis framework was how to create and modify sidebars. WordPress and Thesis provide you with a simple an effective way for implementing sidebars on your website with the use of simple syntax, options, and widgets. Read more

April 28, 2009

Thesis Tutorial: Dynamic Image Header with Transparent Logo

One of the tools that I use is Chris Pearson's fantastic Thesis WordPress theme framework.

In an effort to contribute back to both the Thesis and WordPress communities I have documented how to embed the Next-Gen Gallery plugin to your header, or banner image and place your logo above it. This functionality allows you the ability to have your banner image change how you like it beneath your logo at the top of your website.

Why Would You Want To Do This?

If you would like a variety of images in your header beneath the logo/type and manage them in a central location. Once the initial programming and configuration are setup it's all image management after that.

You may have clients that would like the option of changing their header image on their own and this gives them that option.

Things you will need to perform this tutorial:

  • WordPress
  • Thesis (optional. You can do this without Thesis but we are using it here)
  • Next-Gen Gallery plugin for WordPress
  • Photoshop (or other image editing software)

First Things First

You will need to have WordPress, Thesis, and Next-Gen Gallery (NGG) installed before proceeding.

Dimensions

Once everything is installed we are ready to go. First you will want to determine the size of your image, or header. What is that dimension in pixels? You will need this for both creating the image and for settings inside of Next-Gen.

Once you have the width and height of your header determined it is time to create/optimize your images that you intend on using. For our purposes of this tutorial the size of our image/header is 857 pixels wide, and 150 pixels high.

Preparing The Images

We used Photoshop to create a layered file containing all of our images so that we can position and scale them within the size constraints and save out the multiple versions of the file. You may want to import your logo, or typeset your text now, to position it on top of all the images so that you can determine the static position that the logo/type will present itself.

Once we have all the layers in the proper positioned its time to save out all your files. In our example we created 5 different images to use. We used smart naming conventions to make sure we can tell these images from others just by their names. We titled our images:

  • header-01.jpg
  • header-02.jpg
  • header-03.jpg
  • header-04.jpg
  • header-05.jpg

Now that the images are prepared its time to prepare the logo/type.

Preparing The Logo/Type For "floating" On Top

We should have our logo/typesetting in place from our previous step of getting our images sized and positioned. We need to do the following steps:

  1. Make sure logo/type is in correct position
  2. Ensure that we have a drop shadow created
  3. Turn off all image layers
  4. Check transparency
  5. Trim the logo/type down to size
  6. Save out proper format of file

Make sure logo/type is in correct position

You want to make sure with each and every image layer you have saved out that your logo/type is in the position you want it to appear on all images.

Ensure that we have a drop shadow created

Select your logo/type layer then select the layer/layer style/drop shadow inside the menu options of Photoshop.

drop_shadow_menu

Adjust the settings to your liking and you should see a drop shadow from your logo/type on top of the image.

picture-14

Once you are happy with the shadow its time to save out the logo/type image.

Turn off all image layers

You should turn off all image layers so that you only see your logo/type and shadow.

Check Transparency

Once all images are turned off and the only layer turned on is your logo/type you should see transparency behind the image. In Photoshop—you should see the checkerboard pattern—it should look like this:

picture-15

Trim the logo/type down to size

With only the logo/type layer displayed you will want to trim out all the uneccessary image data. In Photoshop you want to select Image/Trim

trim_image

You should now have a much tighter logo/type that still has the shadow present.

Save out proper format of file

You want to select File/Save For Web and Devices

save_image

Once presented with the save dialog window you will want to set the following parameters for your file.

  • Image type: PNG
  • Colors: perceptual
  • Number of colors: (depends on what looks good and how large the image file is. Play with this setting)
  • Dither: diffusion
  • Dither %: 88%
  • Transparency: check box 'yes'
  • Matte: None
  • Transparency Dither: Diffusion Transparency Dither
  • Amount: 88% (Play with setting to get desired result)
  • All other settings default

Here is what my settings looked like:

picture-4

Once your settings are how you like them, save the file with a distinguishing name.

Save it to the custom image folder inside of Thesis: ~/wp-content/themes/thesis/custom/images/

You can now FTP that image to your webserver.

Now that the background images are created and uploaded into NGG, and your logo/type image is uploaded via FTP its time to get busy with the custom.css, custom-fuctions.php, and NGG settings.

Getting Next-Gen Gallery Settings Dialed In

The method presented below is our "hack" to making this combination of plugins and technology work. If you have an easier/simpler way to do this, please share! We are always open to more efficient approaches—who isnt? 🙂 That being said, here is what we did.

Create A Header Gallery and Upload Images

You want to be logged into the admin area of your website, http://www.[yourwebsite].com/wp-admin/

Once logged in you want to proceed to the gallery management tools near the bottom of the left hand side of the page:

picture-6

You want to select Add Gallery / Images from the menu choices. On the next screen you want to give your new gallery a name, in my case it was appropriately "header."

picture-8

The next step is to upload the images you previously saved. These are the background images, not the logo/type you saved. If you look at the set of tabs at the top of the screen you will see an Upload Images option. That is what you want to select. You need to click on Choose File and proceed to navigate to all your images and upload each one. Once you have all of the images listed, you should then select the proper gallery from the pulldown menu where it says Choose Gallery in the pulldown menu.

picture-10

Once all your images are listed, your gallery is selected it is time to click Upload Images. This may take a few seconds depending on how large your images are so be patient.

picture-12

Once the upload is complete you will see a confirmation at the top of the screen.

picture-13

Manage The Gallery

Now click on Manage Gallery under the Gallery admin menu on the left side of the page. You should see your gallery listed under the Gallery Overview page. Click on the title to proceed to edit the gallery content. At this point you want to make sure that all the images you uploaded are present. If not, go ahead and add what you need.

Tweak the Settings

Now you want to confirm that the slideshow and the technology needed to run it are in place. You do this under the Gallery/Options menu item.

gallery_options

Of primary concern is the tab titled Slideshow. You need to look at the first option under this tab: Path to the Imagerotator. If the path is not already filled in, click the "search now" button just to the right. This should take care of things. If not, you may need to get JW Image Rotator from Jeroen Wijering. Follow the instructions and return here and click the "search now" button again.

picture-18

Testing The Show

Now that you have uploaded the images and checked the slideshow technology is in place you should test out your slideshow to see if everything is working. This tests the slideshow, and if its working well, gives us some key code that we will need for custom_functions.php

The way we tested the slideshow was to create a test page, insert the slideshow, then preview the page.

I created a page by clicking on Pages/AddNew

pages_addnew

I then give the page the title of Gallery Test in the title bar, then I click and icon in the top row, right. You can see it here in the screen capture.

click_ngg

Once I click that button I get a dialog box that lets me select from the pull-down menu the slideshow I want to insert, and lets me determine how I want to display the images—in this case a slideshow.

ngg_popup

Once you have clicked insert you should see something like this showing up in your content area:

[nggallery id=5 ]

This is the code the NGG plugin uses to insert the slideshow. Now the code is in place I click publish, then I click preview to see the page and if the slideshow is working as I want it to. If its not you need to go back and double check your settings and that you have to get JW Image Rotator from Jeroen Wijering.

Assuming the slideshow test is working as you intended in your web browser, the next step is to look under the hood at the code being generated to display the slideshow. You will need to find this code, copy it, and then paste it into custom_functions.php to help build your new header. Fortunately I will show you my code here and you can copy/paste to make things work.

When you are looking at the webpage with the slideshow working as it should, you should "view the source code" to see the syntax that is making everything tick. One thing you may have noticed is that your slideshow is a different size than the header you want. Don't worry, we will change the size in the code.

What Is The Code?

The code you are looking for in the preview page source is this:

<div class="swfobject" id="so5_1" style="width:857px; height:200px;">
<p>The <a href="http://www.macromedia.com/go/getflashplayer" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.macromedia.com/go/getflashplayer');">Flash Player</a> and <a href="http://www.mozilla.com/firefox/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.mozilla.com/firefox/');">a browser with Javascript support</a> are needed..</p>
</div>
<script type="text/javascript" defer="defer">
var so5_1 = {
	params : {
		wmode : "opaque",
		allowfullscreen : "true"},
	flashvars : {
		file : "http://www.YOUR_DOMAIN.com/wp-content/plugins/nextgen-gallery/xml/imagerotator.php?gid=1",
		linkfromdisplay : "true",
		shownavigation : "false",
		showicons : "false",
		rotatetime : "6",
		transition : "fade",
		backcolor : "0x000000",
		frontcolor : "0xFFFFFF",
		lightcolor : "0xCC0000",
		width : "857",
		height : "200"},
	attr : {
		styleclass : "slideshow",
		name : "so5"},
	start : function() {
		swfobject.embedSWF("http://www.YOUR_DOMAIN.com/wp-content/uploads/imagerotator.swf", "so5_1", "857", "200", "7.0.0", false, this.flashvars, this.params , this.attr );
	}
}
so5_1.start();

</script>
<div class="ngg-clear"></div>
<div id="logotype">
<img src="http://www.YOUR_DOMAIN.com/wp-content/themes/thesis/custom/images/typeface.png" alt="">
</div>

Get your width and height

There are a few numbers you will want to change based on your design and your domain name. The first line of the code above is this:

<div class="swfobject" id="so5_1" style="width:857px; height:200px;">

You want to replace the width and height with the values of your banner graphics. You should know this from creating the graphics previously. There are 2 other places in the code above where you need to replace the width and height. One place is inside the flashvars declaration:

flashvars : {
	file : "http://www.YOUR_DOMAIN.com/wp-content/plugins/nextgen-gallery/xml/imagerotator.php?gid=1",
	linkfromdisplay : "true",
	shownavigation : "false",
	showicons : "false",
	rotatetime : "6",
	transition : "fade",
	backcolor : "0x000000",
	frontcolor : "0xFFFFFF",
	lightcolor : "0xCC0000",
	width : "857",
	height : "200"},

The last place is in starting the function here:

swfobject.embedSWF("http://www.YOUR_DOMAIN.com/wp-content/uploads/imagerotator.swf", "so5_1", "857", "200", "7.0.0", false, this.flashvars, this.params , this.attr );

NOTE: Be sure to change the domain to your domain name in the paths above.

So all together the code inside your custom_functions.php will look like this. We are first moving the main navigation below the header (this is optional for you) then inserting the banner:

/* MOVING NAV BELOW HEADER */

remove_action('thesis_hook_before_header', 'thesis_nav_menu');
add_action('thesis_hook_after_header', 'thesis_nav_menu');

/* Next-Gen Gallery into Header */

remove_action('thesis_hook_header', 'thesis_default_header');
function ngg_custom_header () { ?>

<div class="swfobject" id="so5_1" style="width:857px; height:200px;">
<p>The <a href="http://www.macromedia.com/go/getflashplayer" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.macromedia.com/go/getflashplayer');">Flash Player</a> and <a href="http://www.mozilla.com/firefox/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.mozilla.com/firefox/');">a browser with Javascript support</a> are needed..</p>
</div>
<script type="text/javascript" defer="defer">
var so5_1 = {
	params : {
		wmode : "opaque",
		allowfullscreen : "true"},
	flashvars : {
		file : "http://www.ojaigetaway.com/wp-content/plugins/nextgen-gallery/xml/imagerotator.php?gid=1",
		linkfromdisplay : "true",
		shownavigation : "false",
		showicons : "false",
		rotatetime : "6",
		transition : "fade",
		backcolor : "0x000000",
		frontcolor : "0xFFFFFF",
		lightcolor : "0xCC0000",
		width : "857",
		height : "200"},
	attr : {
		styleclass : "slideshow",
		name : "so5"},
	start : function() {
		swfobject.embedSWF("http://www.ojaigetaway.com/wp-content/uploads/imagerotator.swf", "so5_1", "857", "200", "7.0.0", false, this.flashvars, this.params , this.attr );
	}
}
so5_1.start();

</script>
<div class="ngg-clear"></div>
<div id="logotype">
<img src="http://www.ojaigetaway.com/wp-content/themes/thesis/custom/images/typeface.png" alt="">
</div>

<?php }

add_action('thesis_hook_header', 'ngg_custom_header');

CSS and Your Logo

Now that you have the rendering of your banner in place, the thing to do now is get your logo to appear on top and in the position you would like. The code we added to our custom.css file is this:

div#logotype {
	background-color: transparent;
	margin: 0;
	padding: 0;
	display: inline;
	z-index: 2;
	position: relative;
	top: -84px;
}

The key here is to position: relative; and to use negative top margin. This is what will get your logotype to appear on-top of the banner. Be sure to add the z-index in for good measure.

Be sure to save your custom_functions.php and custom.css file and upload via FTP and test, test test!

Wrap Up

This has been one looonnnnggg tutorial and if you have read to this point, you are both patient and persistent. You can see the banner that I have based this tutorial off of here at OjaiGetaway.com which is a web site in progress.

Do let me know if you have any questions about this process. I will help as best we can.

© BERT : MCMXCV — MMXXVI

Back to top Arrow