July 4, 2020

Code Fever 19

From our CTO
Code Fever 19

I got it. I got it bad.

I code. I code a lot. This lockdown has only made it worse. Much worse.

Lately, I code so much that I don’t know where I end and Minima begins or where Minima ends and I begin… It’s all just one big mash-up.

First thought in the morning. Last thought at night. Every spare moment in between. When I wake up at night — I just hope it doesn’t kick off… or that’s it. Rest of the night gone. Sleep gone. Staring. Thinking. Drilling. Wide Awake.

Addicted to Love !? LOL… you should try ‘Addicted to Code’. It’s not healthy. It won’t make you happy. It puts a strain on your relationships.

My wife, my kids, my mum, my friends… my C.O.D.E.

And yet… Here I am. Praying for this moment to last. Livin’ on the music so fine. Borne on the wind. Makin’ it mine…

When you are feverish you’re not thinking straight. You’re thinking at right angles to orthogonal planes perpendicular to a logic maze. You can’t see the wood for the trees. Can’t see the completely bloody obvious.

Had a moment last week. A good moment, tinged with sadness.

Minima is a Protocol. Device agnostic. Language agnostic. Currently, the main implementation, the main ‘Program’, that runs Minima is written in Java. By Me. I run it on my big bad desktop computer. It hums along. Purrs like a kitten. If it ever coughs, hiccups, stutters, or starts out of place, I instantly dive in and fix it. It gets all my attention. I daren’t admit it — but it gets all my love. Digital. Surgical. Obsessive.

But isn’t Minima ‘The Mobile Blockchain’ !?… Yep — that it is. Which is why Java is so nice, as Android IS Java. The code runs unedited. Just copy-paste to the Android project, build, run, boom. ( iPhone shmy-Phone… We’ll get to you and your 15% market share later — J2OBJC )

Since I sit in front of my computer 10 hrs a day… ( some days more, some less ) I don’t really ever TEST it on my phone. Not for long periods. Don’t get the chance. I just run my automatic ‘compile-to-phone’ script, see that it compiles, boot it up, check it runs without crashing, and then back to the warm digital embrace of the mega-version running on my big bad computer.

Uurrgghhh… You doofus… You blind fool… CAN’T YOU SEE !?

While you were having your well-oiled wrestling sessions with ‘java -jar minima.jar’ ( how I start it on my desktop… ) the ACTUAL Minima, the phone version, has been sitting in the corner.. unused, untested, unoptimized… unloved.

Unforgivable. :(

Yes — the members of my team obviously have a play, and report back diligently and informatively… but it’s not the same as ME having a play. Not the same as ME spotting every skipped beat, every little tick, and tock that’s out of place.

Not the same as ‘THE CREATOR’ having a play. V’Ger knows it. Minima knows it. I know it.

I saw her out of the corner of my eye, middle of last week. Sitting all alone. Went over, on a whim… booted her up… tried to have a play.

ALMOST unusable. Slow, glitchy, jittery, staggered, messy… and crashes too..!

Oh, it compiles, it runs, it just about gets by… but all the things that took less than a second on ‘ma-bringa’ take 10–20 seconds, or more, on Android. All the tiny memory requirements on ‘the beast’ are not quite so tiny on a restrictive low memory device like a phone. All the smoothness and power I had come to expect from my ‘creation’ — gone.

So busy patting yourself on the back — you let the prize out of your sight!

Two slaps and a stern talking-to later, in I dived. Hunt the bugs, chase the lags, fix the holes, tweak the algos, smooth the launch — optimize, refactor, reset… tap tap tap tap tap. It was like working on a completely different version of Minima. Everything is so similar and yet so different. Everything was working — just not the way I thought it did.

…3 days later. 3 days of my undivided attention. 3 days of my love. That’s all it took.

Night and Day.

The previous 20-second block processing now took sub 1 second. The 1.8MB initial data packet that was crunched so slowly was now 64KB most of the time. The recursive tree traversal loops that were crashing with memory overflow errors… fixed, replaced by simple stack-based algorithms. Funnily enough, you can’t really even notice these optimizations on my desktop version… but on the Mobile version !? On THE version… HAHAHHAHA!!

The best / worst bit of all this… It’s SO MUCH more rewarding to use the mobile version. To use the version most if not all people will eventually be using. Everything runs fine on my uber-bastard hard-core machine… but when it runs right on a restrictive device !? On my truly awful two-year-old cheap Chinese Android phone ( can’t stop myself ) !?

Feels AWESOME.

It’s not finished. Not by a long shot. So much more I can do. So many more tweaks, snippets, classes, and functions that I can revise, rewrite, rewire. The little voice in my head droning endlessly on… ‘If this is what you did in 3 DAYS!… Imagine 3 weeks!.. or 3 months!… NOW GET ON WITH IT’…

And so… I’ve had to have ‘the chat’ with my desktop. I’ve had to explain that it will always be special to me… but there’s a new version in town. One that needs me more.

I’ll still code on ‘the beast’. We’ll still get to dance. Me and My Precious. But from now on — Spartacus Rex fights for the Mobile version.

Code Fever, Code Fever. We know how to do it.