2025-04-12

Consciousness part 3

So this one time, at band camp (i.e., work), we had a bunch of code written in Visual C++ 6.0.  (It wasn't even called Visual Studio back in the day!)

Most of the company had moved on to modern versions of C++ but I had this code to maintain.  My computer was running Windows XP and eventually I wasn't allowed to run that on my desktop.  So we cloned my desktop into a VM.  For a month at least I kept the desktop just-in-case.

Thus began my journey into the nature of consciousness.

SPOILERS FOR DOLLHOUSE

At the same time, Dollhouse was on TV.  I thought it was going to be good because Josh Whedon created it.

But it sucked.  I had decided during the third episode to give up on it because it was, up to that point, a not-interesting action show.  Who cares about the main characters?  They are all temporary anyway, with temporarily implanted skills.

The last minute of the third episode has Echo (Eliza Dushku) sort of wink at another doll as she starts to wake up in her doll state.  Okay!  Now we're getting somewhere!

As things evolve over the series, instead of pushing made up personalities into the dolls, the evil overlords get the idea to have their own consciousness backed up, so they can be restored into a doll.

If you watch Dollhouse, you can skip the first two episodes.  The third one is a good place to start.  

SO WHAT

Well, as the series evolves, it explores what it means to have backups of consciousness, and what it means to find out you're a backup and not the original, and such like things.

Meanwhile ... I'm thinking - my original PC, which I had grown to love, by which I mean, I knew how to do everything I wanted to do on it, was sort of a static backup and the new VM slowly evolved as I built and maintained code on it.

It seems like nothing, looking back on it, but I kept thinking, which is my real computer?

In modern times we pump out VMs like they are free candy, and we don't grow attached.  They come, they go, it's rare for one to be unique in some way, at least if you're running your company in a way where you can easily recreate what you have.

On the other hand ... suppose you are Google and you have the internet stored in RAM on a big pile of VMs.  The 'identity' of any particular VM is nothing - there is no attachment.  Individual VMs are crashing, probably dozens per minute, around the world, and quickly replaced.  But the memory of all those VMs together is kind of a living thing.  (Do they back it up?  Probably?  If so, could you do a restore in toto of the internet as it was in 1999?)

Now ChatGPT has announced that whereas it used to just remember a few facts about you (for instance, it knew from my questioning what kind of car I drive), it will now remember every conversation!  Does that make your version of it special?  Would you be sad if those memories were deleted!  I think, yes!

Eventually we turned off my desktop and I used just the VM.  I was sad to turn off the desktop.  For one thing, it had a better graphics driver than the VM!  The VM had a very simple emulator of an S3 graphics card.  But in every other way the VM was better - more resilient (it was backed up), easier to isolate (I mean, it was Windows XP, so minimize access to it for security reasons!), and very easy to upgrade in terms of performance, by swapping out the virtual hardware underneath.

And it still had the 'identity' I had so carefully crafted.

Eventually someone deleted my Windows XP VM and I was sad again.  My old workflows were gone.  Realistically - good riddance!  That didn't change my attachment though to a machine, virtual or otherwise, that I had bonded with.

In part 4 I'll talk about memory some more.

Claude, the junior programmer

I love AI for doing 'small' programming tasks.  I put 'small' in quotes because I don't know how to quantify 'small'.

My Spwnn spelling corrector was written by me.  And I've had a task on my mind to put a reverse proxy in front of my several Raspberry Pi computers that are running Spwnn so I could use one URL to run lots of queries, ideally in parallel, on my tiny Raspberry Pi datacenter.  And it's not that interesting in terms of tech so I've never gotten around to it.

Voila!  AI can write this for me!

So I prompt Claude.ai to write a program that will accept a query and forward in a load balanced way to some list of service providers.  I'd like it in Go.  First attempt worked!

Maybe, I thought, it could also load balance to my AWS instance running spawn.  Nope, IP addresses work but not URLs with DNS lookups and paths.

Thus started a back-and-forth where I tried to get Claude to write what I wanted.  It was simultaneously cool and illuminating watching Claude edit and hack on the code it had written.  It constantly made simple mistakes; and then it made some complicated mistakes.  I felt like I was correcting a junior programmer who just kept trying hack after hack to fix other hacks.

Ultimately I gave up.  Also Claude seems to have forgotten the whole chat session!  I can't find it my history.

I think the better solution going forward is to start from scratch each iteration until you have a prompt that produces what you want.  Unless your change is trivial, like "Don't import that module "io" you're not using", your AI programmer buddy will just start digging a deep hole of hackery when you ask it to modify its code too much.

Still, I liked the first solution, and it could even serve as an outline for me to add features.

People are 'vibe coding' and I think that works better for languages where there are more code examples online (i.e., Javascript!).