Wk 2 – Update 4
October 16, 2026 Leave a Comment
One More Way to Fail
Last night I ended my blog wondering what to do next.
Should thwe build an emulator for the Timex Sinclair 1000? Figure out how to record programs back from the computer to an iPhone? Or focus on improving the experience for the handful of people who actually own one of these ancient machines?
Before bed, I recorded an audio note to myself.
I kept coming back to the same question. Would this thing actually be useful to anyone?
I’d built a website that could deliver programs to a real Timex Sinclair 1000. I’d even built and played a game on it. But was there enough value here to justify inviting other people to create and share their own programs?
How would I know?
Maybe I should build and publish a few more programs myself.
Dogfooding, but something I was going to do anyway!
Experience what an actual contributor would experience. Not just test whether buttons worked, but whether the whole thing was worth doing.
That seemed like a pretty reasonable next step.
Fifteen little problems
It’s called Load Goblin. I should probably have a game with a goblin in it. Duh.
What about the classic sliding tile puzzle, the game of fifteen?
Fifteen numbered tiles in a four-by-four grid, with one empty space. Slide the tiles around until they’re all back in order.
Except instead of numbers, what if the tiles were pieces of our grumpy goblin’s face? Solve the puzzle, reveal the goblin.
Simple enough.
Well, no.
The first challenge was getting ChatGPT to stop showing me attractive pictures of a game that couldn’t possibly run on the Timex Sinclair 1000.
Thwe were designing for a computer with a 32-by-24-character display and a whopping 16K of expanded RAM. The AI kept producing beautiful mockups with graphics, proportions, and effects that weren’t realistic for the machine.
They looked great!
They were also useless.
The issue was ChatGPT would switch from Work mode to image creation mode when I talked about making a graphic. I had to work to reframe this through the context of the code itself.
Ani image conceptually drawn on graph paper, then migrated to code, then I finally felt comfortable that the game could actually be rendered using Sinclair block graphics.
Then I complicated matters.
What if thwe also had the traditional numbered version? And what if completing that version gradually revealed the goblin picture underneath?
Difficulty settings? Sure.
Some snarky messages from our goblin when you completed the puzzle? Obviously.
Eventually, thwe had several versions, a design that respected the machine’s limitations, and something that looked like a pretty decent little game.
Now to find out if it actually worked.
This is going to be great!
I was positively giddy.
Still riding the high from getting Brick Goblin working the previous night, I fully expected GOBLIN 15 to load on the first try.
I wasn’t worried about loading the program anymore. I’d solved that problem!
I was looking forward to playtesting the game and finding bugs.
I connected everything, hit Play, and watched my television fill with what looked like the cover of a never-released Bauhaus album.
Black squiggly lines everywhere.
Beautiful.
The audio finished, the screen cleared, and there it was.
[K]
Oh shit.
![[K]](http://www.istreeter.com/wp-content/uploads/2026/10/IMG_9249-768x1024-1.jpeg)
That terrifying little K prompt. The last thing I wanted to see.
Well, at least it was easy enough to type LOAD "" and try again.
Nope.
Maybe something was wrong with the new game. Let me try one of the programs that worked yesterday.
Nope.
Hello World? Surely Hello World!
Nope.
I had a working system last night. What the hell happened?
Then I remembered something.
Apple had been warning me about excessive headphone volume. Apparently, my iPhone thought I was trying to damage my hearing.


I wasn’t wearing headphones. I was trying to load software into a Timex Sinclair 1000.
Apparently Apple was trying to protect my computer’s EAR port from damage.
That gave thwe something to investigate.
Some things never change
Thwe started comparing versions of the website’s cassette player, looking for something that might have changed the audio playback.
One possibility was our spectrum analyzer.
Those bouncing bars that dance along with the music.
I loved those things when I was a kid. My friend Robb had a sweet Kenwood stereo component system, complete with a graphic equalizer. I remember watching those bars dance while hearing Pearl Jam’s debut album for the first time.
Fascinating.
I’d added something similar to Load Goblin. But thwe wondered whether reading the audio file to generate the visualization might somehow interfere with playback.
Not proven, but easy enough to eliminate.
Thwe turned it off by default. That also cleaned up the retro design a bit.
Meanwhile, I was digging around in my iPhone settings.
I found something called USB Audio Accessories. I wasn’t entirely sure what those settings did, but while ChatGPT was explaining them, I was already deleting things.
I suspect someday I’ll discover what I’d disabled when something else that used to work suddenly doesn’t.
Back to the basement.
Back to Bruce’s house, figuratively speaking, trying to find exactly the right volume setting to get a program to load.
Black squiggles.
White screen.
Nothing.
I waited.
And waited.
Well, at least this was a new way to fail.
I pulled the power cable to reset the computer.
Somewhere in all this, I found the original instruction sheet for The Cube Game, one of the cassette games that came with my Sinclair.


The instructions were every bit as confusing as the game itself.
X, Y, and Z axes. Three-dimensional cube rotations. Row movements. Counter-clockwise this, clockwise that.
I’d spent ten minutes trying to figure out what the hell I was doing in that game earlier in the week. Reading the instructions didn’t help much.
But there was some useful information about loading programs.
Right there on the first page:
LOAD TIME: 5 Min. 37 Sec.
And elsewhere, a warning that a 16K program could take ten minutes or longer to load.
Good to know.
Information that I would soon completely ignore.
A Crazy Ivan
I’d been going in circles trying to figure out why GOBLIN 15 wouldn’t load.
Was it the new code? The size of the file? Something in the cassette player? The iPhone? The machine itself?
Time to change direction.
Thwe were going to make an entirely new, tiny program. Something so simple that if it failed, I could stop blaming the complexity of GOBLIN 15.
And I knew just the program.
When I was a kid, I discovered that the Commodore 64 on display at the Kmart in Mount Pleasant, Michigan, could be programmed.
So I wrote a little BASIC program that printed “KMART SUCKS!” over and over again.
An early contribution to in-store retail media.Who knew where I’d end up…
Thwe recreated that masterpiece for the Sinclair.
The Timex didn’t even have an exclamation point, so the sentiment needed a little editorial compromise.
I loaded the WAV file onto my phone, connected everything, and pressed Play.
It worked!

Now we’re getting somewhere.
I went back and tried Brick Goblin.
That worked too!
I even got some playtesting in and found another bug. Apparently the ball could eat its way through the walls. Must be a bug introduced when we fixed the paddle movement trails.

Never enough playtesting.
Which reminds me, my younger brother Karl used to be a playtester for Sega Genesis games. They’d mail him prototype cartridges that he wasn’t allowed to play around his friends. He’d play the games and send them back with his thoughts.
I think Donald Duck QuackShot was one of them. Fantastic game.
Apparently, playtesting runs in the family.
But at least I knew the hardware could still load and run programs.
That narrowed things down considerably.
Or so I thought.
The incredible shrinking goblin
Maybe GOBLIN 15 was just too big.
Thwe had been adding features, graphics, and different ways to play. The program had gotten considerably larger than those tiny test programs.
What if thwe stripped it back to just the goblin picture puzzle?
Smaller program. Shorter WAV file. Faster loading.
Thwe made a new version.
It loaded!
And then crashed.

Excellent.
At least this was progress. Thwe had a specific error to investigate.
Thwe found a missing array declaration and prepared a correction, but I hadn’t tested that version yet.
I had also started gathering the WAV files from all our different builds so I could load them directly from my phone, rather than repeatedly uploading programs through the website.
Speaking of the website, I’d discovered that the program-upload workflow sucked.
So thwe changed it to a wizard-style experience, which I liked considerably better. I also wanted to extend the flow to include screenshots.
Thwe had added ZIP support as well, but I quickly realized that accepting arbitrary ZIP files was opening a security can of worms I didn’t want to deal with this week.
Out that went.
Meanwhile, I still hadn’t played GOBLIN 15.
I went back downstairs, determined to make this work.
Back to being twelve
By now my butt and legs were going numb.
I’m 54 years old, sitting on the floor in front of a Timex Sinclair 1000, just like I would have been doing when I was twelve.
There’s a perfectly good chair nearby.
And a beautiful oak coffee table that Tom, the guy I call Dad, made years ago.
Unfortunately, the table was still covered with the aftermath of a solo Four Against Darkness dungeon crawl I’d recently been playing.
Maybe I should clean that off and sit in a chair like an adult.
But there was something special about sitting right there on the floor, forty-some years later, doing essentially the same thing I did as a kid.
There was one big difference.
At the beginning of the night, I’d been so excited to press Play.
Now I was dreading it.
I decided to try one of the earlier, larger versions of GOBLIN 15 again, using the WAV file downloaded directly to my phone.
Play.
Black squiggles.
White screen.
Nothing.
Again.
I’d had enough. My bones had definitely had enough.
I got up and sat in the chair that had been beckoning me all night.
Maybe the problem was the way I was playing the WAV file directly from my phone. That was a shortcut I hadn’t really tested before. Maybe going through the Load Goblin website would work differently.
I started opening the site and filling out the forms for another test.
Then I looked up from my phone.
IT FUCKING LOADED!

Wait.
What?
There was GOBLIN 15, running on my actual Timex Sinclair 1000!
And not the small version.
This was the big one, the earlier version that included both the classic numbered puzzle and the goblin picture puzzle.
The same one I thought had failed.
Oh.
I’d pulled the power too soon.
Apparently, the computer had been doing something useful during that endless white screen after all.
I had just been too impatient to let it finish.
Remember those instructions that mentioned ten-minute loading times?
Yeah.
The universe has peculiar ways of revealing her mysteries.
The magic
I started with the classic numbered puzzle on Easy.

Moved the tiles around. Got everything back in order.
And then something happened that I wasn’t expecting.

The game slowly revealed our goblin image, tile by tile, followed by a little appropriately snarky message.

I hadn’t seen that image rendered on the actual computer yet.
It was magical.
I mean that.
I’d spent the last few days watching the Sinclair painstakingly render graphics, trying to understand its limitations, rejecting beautiful mockups that couldn’t possibly work, and figuring out how to squeeze this game into a ridiculously constrained machine.
And there it was.
I felt that familiar physical rush of energy.
Vindication!
It’s something I’ve felt many times in my career, and something I remember feeling as a kid. That jolt of satisfaction when you’ve been wrestling with a difficult problem and finally get it working.
It’s part of what drives developers, mathematicians, inventors, and people who enjoy making things.
You push through all the frustration and suddenly your brain rewards you with a wonderful blast of chemicals.
It’s addictive.
And apparently, after forty-some years, it still works on me.
I pressed R to play again, this time choosing the goblin picture puzzle.
Definitely harder without those numbers!
I solved it too, but I imagine harder setting would be practically impossible.
Then, because apparently I can’t help myself, I found something I wanted to fix.
When moving a tile, the game drew it in the new position before erasing it from the old one.
For a brief moment, there were two copies of the same tile on the screen.
That felt wrong.
Thwe talked about making the tiles actually animate as they slid around. But having watched this computer render graphics over the last few days, I knew that modern flair wasn’t going to work particularly well here.
What if thwe just erased the tile first, then drew it in the new position?
That would feel a little more like sliding without trying to force the computer to do something it wasn’t particularly good at.
Thwe made the change.
Another thing to test tomorrow.
Tomorrow is another day
I made one final cosmetic fix to the website, aligning the tab experience, and got things organized for a fresh round of testing.
I still had several versions of GOBLIN 15 to sort through. The smaller version needed another test. The tile movement change needed verification. And I was starting to think about how Load Goblin should handle different versions of the same program.
All interesting problems.
But I’d had enough for one night.
I started out trying to determine whether Load Goblin would be useful to someone who wanted to build and publish software for an old computer.
I ended up rediscovering something I hadn’t felt quite this way in decades.
I’d made a game. I’d loaded it onto a real Timex Sinclair 1000. I’d played it, completed it, discovered bugs, and asked for improvements.
And somewhere in there, I was twelve years old again.
So I stopped while I was ahead.
Tomorrow is another day.
Saturday is the reveal.
I can’t wait to show you what thwe have built!
Assuming I can resist pulling the plug…