Showing posts with label life. Show all posts
Showing posts with label life. Show all posts

Monday, 1 July 2024

Operational Embarassment

Today I bring you a story, a true story, from my very own past.  You may have seen the "broken feet" link on this very page, so yeah I broke both my ankles at the same time falling off a roof.

Fast forward just under two years and I need an operation as the joint are going bad.

On the day of the operation I am handed a lovely double hospital gown and the lady checks who, what and why I am there... The surgeon see's me and puts a big big black arrow on my right leg and I am shown into the pre-op waiting room to just wait.

I am the first case, but they want to pre-op everyone, and slowly the waiting room fills with men in the same garb.

No-one speaks.... No-one.

This is quite strange with us blokes, and to be honest I find it a little freaky, as I'm sat there with my big black felt arrow on my ankle I just joke... "Bet we can guess what I'm having done".

ALL OF THEM, and there's like six guys now, all stony faced.  They don't look at me, they don't look at one another.... Nothing, nada, zip.

What the heck?

So I'm up first, off I go, limping out and am taken to theatre.

I am a quirky case, as not only am I first, but I am to be awake during the procedure, I get an epidural and then a tourniquet is applied and I get to watch them work on my ankle in this freezing cold room.

An hour or so later I'm in resus, first in, first out... I am surrounded by empty bays.  Slowly as the morning wears on and my leg starts to awaken in cramping pins and needles the first of the other guys is brought through... No idea what procedure he's had.

Then another.

Then another.

Until all six bays around me are full and I'm not allowed a drink, some toast and encouraged to rub some life into my leg.

I am very clearly the only patient in this state, the others are all coming around from general anesthetics.

My surgeon pops to see me, he's very happy, I'm very happy and sure enough in the next hour I get up and for the first time since the original accident I'm not in pain in my ankle!

These other guys then start to awaken, and they don't want the nurses helping them, the female nurses, they're all deadly coy and a bit embarrassed, as I'm up and about moving my leg and getting it wrapped and a cast applied.

 "Sorry"

This voice comes across the ward.

 "Sorry for ignoring you earlier, you were just breaking the ice"

And we have a chat..... And then he drops me into the most embarrassment ever....

 For you see... he... and seemingly all the other men in the ward... have all had dick operations.

 Yes, that's right... In a room full of men about to have their john-thomas tucked or worse I made a joke about "Guess what I'm having done".

I wanted the floor to open up and swallow me.

Everyone then promptly burst into laughter at the look on my face.

A couple were having later life circumcisions due to tight foreskins, one was having a lump removed, one was just have it biopsied or something... but all dick ops...

That's why they were silent and jealous of me with my big black felt marker arrow marking me out as the luckiest bastard in that room with the least to worry about.

I think about this today, my big black felt arrow, never have I been more relieved after hearing their procedure stories.  Though they went a little pale when I said "Oh I was awake during the op and watched".

Wednesday, 10 February 2021

My Desktop PC History

My PC history and I literally mean PC's, so we're talking after my Atari ST, this is a list of the machines I've owned and used in order and a little bit about what I did with them.

486-SX-25 (1994)

The first PC I used was built by a company based in Baseford in Nottingham, it was at college and was equipped with an Intel 80486SX, it ran at 25Mhz, ran DOS 6.2 and a netware network layer.  It had 4MB of ram and basically was very much locked down, that was until we figured out how to quit out of the netware login screen (repeatedly CTRL+C whilst hitting enter fast).  The college had loads of these machines of this specification, the three main IT labs of course but then there were two more directly outside one of the lab doors, another in the head of Chemistry's office and a bunch in the library.

I primarily programmed in Turbo Pascal on these machines, I remember playing about with writing my first games on this in EGA graphics mode.

486-SX2-50 (1994)

My first home PC, it was from Watford Electronics and had their own ISA riser connecting to a dual speed CD-ROM, I remember Encarta amazed me, as well as working out how to just play CD's whilst programming.  I of course did my college work on the machine, and I remember my brother did his too.

The machine came with 4MB of RAM and a 200MB hard drive... MEGABYTE... I remember windows 3.1 ate into the disk significantly.

But DOOM came into view, now at the time I had no idea really what SX meant, but it had effects on DOOM's speed.  One of them was the maths.

I actually programmed around the limitations of t he SX chip without realising it and this came back to save me (or curse me) later.

Later we got Dark Forces and another 4MB of RAM, giving us a total of 8MB in this machine as I went to Uni.

But basically the SX had no floating point unit, it had only integer mathematics as well as a bunch of other operations being missing.  It was basically a DX chip which had failed QA and had come part of it disabled, but this was a "2" which meant it ran twice as fast as the machines at college.  And that speed difference was reflected in my little home brew games suddenly running twice as fast.

This remained my main and only PC going to Uni, but in my second year of Uni, sharing this machine with my A-Level studying brother I needed my own and these "Pentium" machines had been released.

Pentium-100 (1996)

The power of the penium, with the EDO ram SIMM's was so massive compared to the 486, and this was the first machine I started to program in C on.  Indeed, it was also the first machine I wrote Java on and even played with Linux.  But I never loved this machine.

Running at 100Mhz, it was blisteringly fast to me, but I was still using DOS 6.22 and Windows 3.1 for the most part.

I should have, it was the first machine I bought with my own hard earned money, I did keep it until my final year at uni, but by then I had started to build my own machines.... But I'd also been to work in IT.

HP Pentium-166 (1998)

This was a machine at work, it was mainly a windows 95 platform for me to work with, I soon had Windows 95 at home too, so things balanced up.  All I used this for was some very basic database work, which the prior incumbent in my job had left (and which was awful).

Compaq Pentium-II 233 (1998)

Another work machine and at 200Mhz, it seemed like the things of legend, but this was a compaq deskpro to which all the analysts and myself upgraded, with  massive 17" CRT monitors, they were really nice machines.

I did a bunch of Pascal programming on it, a bunch of Cobol and some database work (I think it was in FoxPro).

Pentium-III 300 (1999)

Returning to Uni for my final year I built this machine myself, I remember this was a slot-1 processor, and I put a whopping 32MB of RAM into it.  I wrote my dissertation on it and networked it to my older Pentium 100.

Voodoo3-2000 AGP.... Which I only sold in 2013 on ebay, at a profit.

Cyrix-150 (1999)

This was actually my pentium 100, but I found the Cyrix chip for sale for only £10 at maplins so bought it and stuck it in the old PC, to find it was a massive performance improvement when compiling and running both C and Java.

Celeron-III 450 (1999)

This was a machine I actually built for a customer, I spent a bit of time making PC's and making money doing so in the late 90's.  And this was one which stuck out to me because it was such a nice performing machine, it included a graphics card (I think it was a Voodoo3-3000).

The build was with a gigabyte motherboard using slot-1, but the processor was socket 370, buying it and using a daughter board was cheaper than buying a socket 370 motherboard, and performed no differently.  It actually made adding the cooler so much easier.

Pentium III 500 (2000)

I bought this after uni, just a new chip, with 128MB of RAM as I set off away from uni.  I just played a lot of games on this machine, dabbled with Java, but I didn't have the compiler suite we used at work to my programming was mostly all in the office.

Pentium III 500 (2001)

This was the office machine I had at the time, I'd had one before, but don't recall it, this one however was by the local computer firm in Redditch and I remember it was a 500mhz Pentium III.

GeForce... At some point at home in 2001/2 I got the first GeForce card at home and started to babble with OpenGL on Linux.

Pentium III 1ghz (2003)

Another office machine, this was a bod standard HP I think, the job here was C++ programming, but coming from a pure Borland using history (all the way from college to now) I was suddenly not in a Borland using shop and... well... I didn't stay at this job very long.

Pentium IV - 1.5ghz (2004)

A prescott Pentium 4... at the high speed of 1.5ghz, this was my first hyper threaded machine, it was built from the ground up for gaming... so it had 1.5GB of RAM (the most I could afford)... the dual thread pentium 4, overclocked to 2ghz on air.

A pair of GeForce 8800GTX in SLi.

I bought it to run Battlefield 1942 really well, and was really very good.  I also played national league Day of Defeat and started my dual obsessions with World of Warcraft and Eve-Online on this machine.

Core 2 Duo 3ghz - Wolfdale - 2.3ghz

I built this machine for my father, he didn't appreciate it at the time.

Core 2 Quad Q6600 - 3ghz (2007)

This was my main driver for years, and the machine I first put into the Cosmos 1000 case.  It had various RAM, disk, graphics configurations until the last iteration being a GeForce 260 GTX (squared) so this was two GeForce 260's on the same card in SLi together.... It was really good.

I spent time coding for Lordz Game Studio on this machine, as well as playing lots and lots of games.

Core i7-920 (2012)

Yeah, we're at Core i7.... the best I could accord for the i7 release set and it went into the same case as the Q6600 was in.  This machine was a main-stay until I actually swapped out the Core I7 (4 cores 8 threads) for a Xeon which was 6 cores and 12 threads... I did that in like 2016... so I've had 12 threads at home for a long old time.

Ryzen 5 3600X (2018) -> Ryzen 9 3900X

Team Red.... Aside from the cyrix I've always, always been Intel... Ryzen turned my head, and the 6c12t 2600 was the first I could get my hands on.  But the motherboard was purchased with upgrades in mind and the same machine now has a Ryzen 9 3900X 12c24t.

It was a mchine built around the 64GB of RAM, dual m2 NVMe and a stack of 4TB disks, all in a corsair obsidian case.

Sunday, 15 November 2020

Anything Good out of Covid? My Nails, maybe?

Yes, I've got something... Something trivial to most of you, but which has plagued me all my life.

My nails...

I'm sure a fair few of you out there do the same and I know it's terrible to watch, but when I'm sat programming and take a moment to think about something or just sat bored I chew my nails.  Really quite badly.

I'll gnaw at the nail itself, pulling around to tear off the quick, I'll eat into the skin too, I'll bit and suck and peel until my fingers bleed.

I've tried everything, no more chew stuff, I've put plastic caps on them, I've kept elasto-plasting all my finger tips.  But in forty two years it has never worked.

However, with covid I've an actual reason to NOT chew my nails, going out and touching things in stores or street furniture (like the button on the pedestrian crossing) I don't want to then stick my finger in my mouth; and I really would have before!  I am disgusting I know.

So to combat this, I wash my hands when coming in, I wash them through the day too whenever I've been out and about; which not often, but enough to make me think.

At my desk I've also taken to having a set of nail scissors too, so whenever I feel the urge, I can instead cut my nails.

I'm no expert at cutting my nails, I remember my mother doing it when I was a kid, her having me sit next to her, loop my arm under hers and she'd cut them, the scissors felt cold and alien under my nails... and I didn't like it, it scared me, someone else with a very sharp thing at my very sensitive finger tips.  And worse still she'd cut the nail and the fleshy pad underneath, it'd bleed... so I'd suck them....

Forty two years is a big habit to crack though.  However, I've done a fortnight now, in the new lockdown.  My finger nails were positively long last week, so I cut them, and I've just cut them again now.  I find it very strange to see my finger nails with actual white excess nail sticking out, as I'd have chewed th

Saturday, 24 October 2020

Stupid Things I've Been Told

Throughout my life I've had moments where people simply nay-say what I've told them... This became a very real trope (until I took up a marshal art and became very good at it) in my life and lead to a loss of confidence on my part, today lets take a look at some of them which I still remember:


English (1991)    AMBULATE

I used the work "ambulate" in a sentence, I was 12 or 13.  My mother immediately said "There's no such word", and I said "there is, it means to walk, and it's where the word Ambulance comes from"... She flat refused to accept this and really made me unsure; she was wrong, she has been wrong about many things, but this was one of the earliest times I actively recall her being dead wrong.  Her response also made me second guess myself, so much so that I sat and read the dictionary, other kids at school ribbed me about this for years after, but I read the dictionary.  I was right, ambulate is a word, it does mean to walk.


Engineering (1985)    METAL SPARKS

My Dad was in the door way of my Grandfathers garage, angle grinding part of the front of the family car, and there were metal sparks flying all over the place, to the left of the closed wooden door was a fabric cover over some garden furniture.  The sparks were flying and landing on this dry fabric.  And I said "that's going to catch fire".... I was 7 years old and I could see this cascade of burning sparks would set light to the fabric if it carried on.  My Dad turned to me and said "don't be stupid, there's nothing in a spark".  As though it was a zero weight particle an ethereal nothing, of course, we all know that a spark is a red hot but admittedly tiny fragment of metal, not only could it have set light to the fabric, but it could also have gotten into someones eye... But, I was seven, I was clearly wrong... No, no I wasn't.


Electronics (1992)    CD PLAYER

I was sat in the library with a selection of the annoying, ignorant, bully children who were my class mates, when one of the boys Richard ventured something about CD's, about their spinning... of course CD's spin, we all know this, that's why they're round and the lazer is set to slide back and forth.  Richard wasn't known as a braniac, but he was right.  Immediately a boy called Zahid took the utter and total michael out of Richard, really horrible child this Zahid was and he was one of a bunch of morons in my class... Martin, Martin, Paul and Zahid were a group of utter moronic and bullies; each with their own insecurities; and they took it out most days on me, but this day they dragged this poor Richard lad into it, who looked quite abashed, I decided to stick up for him... Well, never had I been so quickly and thoroughly insulted by a moron who knew nothing but how to ride his mouth.  Zahid, I hope your now very bald head knows just how wrong you were, and what a moron you looked flat arguing that CD's don't spin, because they do.


Computing (1984)    TYPING

Sat before the first BBC Micro that the school had bought and the teacher was trying to explain LOGO to us, he was leaning over the computer typing one handed upside down, and I could tell what he was trying to type... For I had had a computer at home for the last year, and I'd been typing in simple BASIC programs, so this LOGO thing looked very rudimentary even to my six or seven year old mind.  So I offered to do the typing for him, he was copying off of a sheet, he'd have been able to tell the class the command and then see me type it in and the turtle robot (or just the screen) complete the command.  And better yet, I'd have been so much quicker making the class feel far more interactive.  This teacher, Mr Allison, turned his eyes down on me like I was a dirty stinking urchin (which I likely was) who not only couldn't understand what he was doing, but it was far far beyond anything I could ever do with a computer; see we were a school intended to produce manual workers, no-one expected a kid from that school to end up being a programmer... I'd hazard a guess that a fair few are now, and I look back on that day thinking... Why did he say I couldn't possibly type?  When I could and can....


Computing (1993)    FLOPPY DISK FORMATS

I was always curious about computers and when my senior school created a "lab" with twenty Acorn A3000 computers I was eager to give these 2megabyte machines a whirl.  My machine at home was an Atari ST and it's floppy format was compatible with the Acorn machine (they both being nearly perfect compatible matches with MS DOS's format on the IBM PC).  But this lab was always closed, not always locked, but closed... But I started to let myself in; and one day I was caught in there, learning, programming and typing notes, by one of the teachers; I don't remember this guys name, he was never my actual teacher, but his lab was his coveted land and I think he was a little put out that I was there with two of his machines going doing different things at the same time, not just that, but I was doing things so much more quickly because I'd learned that the Acorn OS came with a RAM disk, and with 2MB of RAM I could assign 500-720K and basically copy the Floppy disk straight into RAM, work on it incredibly quickly, and then sync the data back to the disk... So I could do the work I was doing incredibly quickly.  He didn't like this, he didn't want to learn, he just wanted to make me look a fool.  So he asked me what the disks I was using were.  So I showed him, "You have an Acorn at home?"  No, I have an ST... Silence, he just stared at me, and he paced off to his desk and pulled a disk out his desk... "Go home and make me 10 copies of this".. and he handed me a box of blank disks... The disk was Lemmings... This teacher was literally giving me homework to commit copyright fraud... I didn't take that disk home, but I did return to his lab... turn on all the machines, and copy the disk once.. then with the two copies copied it on two more, then on the four machines I made the next four copies, and then I had the last two machines running the write of the disk as he walked back in... A mere ten minutes later.  "That should have taken you all night!".... Why... it's binary maths... 1 becomes 2... 2 becomes 4... 4 become 8.. here's your last two... "Aren't you the IT teacher?".... he just stared as I handed him his contraband and left the room.  I didn't like the man, but I was a black-belt in karate and knew who I was by then...

Friday, 16 October 2020

Phantom Recruiter Calls

This post actually got corrupted... and wasn't that funny, so I'm just nuking it.

Basically the guy called me, and I had NO idea who he was.... wasted my time, as did this post.

Sunday, 6 September 2020

Forgot to Ride a Bike... Or?

I'm totally confused.... For you see, they say once you've learned to ride a bike you never forget, and I've not forgot, not one bit... So what's the problem?  Well, the problem is that the bikes have changed!

No I'm not talking electric, no I'm not talking mountain or anything like that, I'm talking about the brakes.

You see, I'm right handed, therefore my primary braking hand is my right hand, in a car I brake with my right foot, on a bike I want to brake with my right hand, this is how it is, how it was and how it always should be.

This should be your rear brake, you brake with your rear wheel first, so you don't lock the front up and go over the handle bars.

It's simple safety and ergonomics, and sure as a kind I remember lefties swapping their brake handles.

But... but... we've bought a bike from France... From those duplicitous Francophiles at Decathlon... And the primary brake is the rear brake, but they put it on the left!!!!

They literally put it on backwards.

It does my nut in, that I have to crack the plastic on the molded handle and swap them over... And no, I can't just remove the wire and swap that, because the rear brake wire is a physically different material to the front!

It is infuriating.

Friday, 7 August 2020

Ten+ Years of Phoenix : A history of a Project

The Phoenix Story.... To be clear I'm not talking about the book:


No, I'm talking about a project I worked on for just shy of 10 years, which started off as the idea to really sort out the product line we were working on, software that did end up on thousands of machines in its time; was ported to at least five different hardware platforms; but which ultimately needed replacing almost before it hit the market.

Phoenix was conceived, I think, by my then boss... We'll call him "Mr B".  And it stemmed from frustration with the previous released to the public project, which was written in a bit of a shambling mess of bad C and only one chap knew how to work with it when I joined... It might have been a little bit of C++ (I remember the chap reading the first edition of the STL book)... And then a failed attempt to make a new system in Java, a bit of C++ and some SQL.... but mainly java connected to a marathon database.

Marathon you might ask, was an open source variant of DbaseIV and had been used by one of the "senior" software engineers in her prior role.  If you google for marathon database today you'll be hard pressed to find a link to it.  There's a reason for this.... It sucks.

But before we go into the technical's here, "Senior" software engineer.... lets call her "Mrs N", really was a bit of a number, when I joined as only the fifth permanent staff (and ironically I joined as a technical documentor not a programmer) she made out she was very senior and really made out that she knew everything.... She effervesced this air of knowing and knowledge, she very much talked the talk... But did not walk the walk.  It wasn't until many years later that I learned she had only been there two weeks longer than me, a mere ten days and that she wasn't a "senior" anything, she was leveraging herself to the management regularly to make herself sound indispensable... She wasn't.... Not at all.

Back to the technical's, this marathon database was to hold ALL the information about the system state, literally it was a state machine without the words "state" or "machine" being used.  The software created a connection to the marathon driver (I can't remember if it was ODBC or ADO) but the up shot was the system ran incredibly sluggishly.  Booting windows and then the software took upwards of 5 minutes, it was a real bane and a pain to work with.

Everything, and I mean everything, went through a stored procedure; which Mrs N wrote, if she'd not written it, then you were not going to get that data and if the result of the stored procedure was not what you expected then you had to submit a new request, she never really went back and fixed bugs, things were either the way she wanted them or you had to ask for more things... so there was massive bloat and creep in this code base almost from the get go.

Bless him Mr B started to try and do code review, he had an idea of trying scrum, but it wasn't scrum, he didn't make everyone be quiet and talk one at a time, quickly then move on.. No.... And I've touched on that shambles before.

With Mrs N ruling the roost Mr B quietly (and sometimes not so quietly) retreated to his office and he would hire folks.  And at some point he hired a contractor, Mr J....

Mr J in the short term was okay, he did his thing, he knew his stuff and he had good ideas, but he was hard to work with.  But he knew this new thing called C#.  And quietly in the bosses office, on his whiteboard was born "Phoenix".

The moment of Mr J presenting this to the boss he was moved onto this super secret mission to make the new new system in C#.

Which left a development vacuum.. Mr B needed someone to use in order to hide Mr J was not doing shitty java to marathon mouth to mouth.... I was thrown to the lion that was Mrs N.

Technical documents out the window, into that position they needed a programmer and I plugged away at that system helping the web developer do an integrated menu and control system, but we constantly battled Mrs N.

Mr J and Mr B however kicked off this C# and soon they had a state machine, an actual state machine by Mr B and an event passing system by Mr J... the special thing about this event passing system was that is worked cross-process, so you could stand up a C# application connect it to listen for a message... then stand up a completely separate C# application and it could send the message to the first... This allowed for a highly modular design with each part of the system mapped down to a state machine and a connection to the message bus.

It made perfect sense, it worked, it was better than using the slow assed database as the inter-process communication bus and importantly the events could be monitored, so you could introspect what was going on.

This was Phoenix... State Machine, Inter-processing Communication Messages, Highly modular.

I would assume at some point the plan was to make things like new features modular so a customer could buy a base configured machine and opt to allow it to do whatever other functions down the line, like add accepting credit cards or add printing a ticket, whatever.  Modularize it and add it on later, or critically remove it.

The problem?  Making this highly modular effectively meant everything was highly asynchronous, and there was no way to synchronise the ballet of messages going between applications, after a few versions even something as simple as booting the module executable's in the right order became a tiresome mess.

But, the initial versions went out to customers and they did buy them, and so the product lived on.... However, a highly async process stack, running on a single core Celeron processor... isn't particularly asynchronous, there's actually a huge amount of linear ordering going on all the time and massive amounts of process context switching.... So much so that in some configurations over half the 1GB of RAM was being hogged by just passing messages to systems which had yet to be woken by the windows scheduler and clear their backlog of events.

So it was after about six years a new piece of hardware hoved into view, it was a dual core box... Immediately the systems were out of order, things were going wrong, and it was a nightmare.

To be fair, the idea was sound, the implementation not so much and the language used, though flexible incurred (at that time) too high an overhead on the hardware.

Mr B struggled with this, and then he hired a new manager, a sub-manager to himself, to control testing.  Lets call him Mr P... Mr P initially had some good ideas, he used dot to create some process flow information, he tried to control contractor Mr J (who was not a permanent member of staff as he was the only person who knew anything about the message passing) and they were all wrangling to try and make this system work on newer and newer hardware, until one day it had to go onto a wholly other machine....

None of the hardware interaction stuff was abstracted, so it was written all over, but still not abstracted... you could boot the old hardware layer or the new... or even both and make it eat its own tail.

And then there were lay offs... a bunch of the folks working for Mr P went, a bunch of the testers went, and there was a big reshuffle.... I got to work right in front of Mr B... and started to try and bend his ear, to push him in new directions and not rely on Mr J so much... There's a story in that to tell.

However, things became really interesting at the turn of the final year of the whole team being on the project, a new piece of hardware was yet again acquired and the company wanted Phoenix to run on it.

I set about making that happen, and I just ignored Mr P, and Mr J and Mr B.... I made the new hardware version and fixed a huge swathe of problems with booting and data at the same time.  I couldn't disentangle from the death embrace of the message passing and multi-process context switching, but I made things better.*

* One of the things I did was find that the C# file exists check was about 10x slower than doing it as a call to "fstat", so I made a dll with just a call to fstat exposed, loaded that DLL into C# and that made the code massively faster at boot.  I then found all the C# "image.load" functions were really slow, but the equivalent from GDI+ were much quicker, add them to the DLL and voila C# went faster.

So when at the end of Q1 the team was basically told, we're letting you all go, we need one person to keep the project tided over, they picked me... I'd demonstrated a breadth of knowledge, fixed so many problems and hey one can't easily fall out with oneself.

Looking back I think the decision to keep me shocked a lot of people who thought themselves indispensable, but the proof was in the following few months.

Where the fault rate went down from the 20% range, to 18%, then 7% and finally to sub 1% range.  We were on more machines than ever, but we'd cleaned up the code base, the three testers we had went over the systems in a methodical manner.  I instigated a policy of cleaning up the code as I went, removing inter-process communications, reducing the number of vertical slices you had to hop over to get to the functionality you required and I also wrote tooling... Event viewers.... State machine inter-process visualizers, even a GUI designer.

All to turn the human element into a tooled touch of the code, control how it's used.

That didn't ever mean the testers and operations manager (Mr D) was dettered from playing with the system, far from it... But things were better.

The Phoenix project had a legacy though, the structure and controls... The message passing, the installation process, the IPC and the state machine were all a little wonky in their quirky little ways.

So it was in 2014 I restarted my own personal effort to write a new system, at home, alone, in C++.  That was Bluebird and it has a whole other story to tell.

Wednesday, 8 July 2020

Waste Management or Disposal

This is fine, the BBC have released this film to highlight to us mere tax paying mortals the problem affecting the environment... Personally, I loath when I see any waste discarded, fly tipping being my personal bug bear in Nottinghamshire (a land-locked county).


Good, great we all know...

But realistically what can we do about this?.... Well, we, or at least I certainly, pay my council for refuse collection services, they come each fortnight and take my waste away.  Any excess I store, compact and take to the local household waste site run by Biffa.

These are council services, they are firms whom have tended to the council to responsibly collect, manage and dispose of my waste on their behalf, and I as a customer of the council expect it to have been done responsibly.

Maybe, I should contact the council for an audit trail of where my waste goes, but I'm pretty sure the council would say "they collect it, and they dispose of it".. and way back when in the mists of the negotiations for that lowest rate possible waste collection service there was a plan probably waved about in front of a Councillor or clerk and it was accepted as the planned disposal method.

And across the whole country there will be similar, if not identical, sets ups with each and every council, from London to Llandudno, from Nottingham to Norfolk, everywhere in the UK the waste is collected and managed by councils.

So this piece of journalism by the BBC, though informative and ghastly, is really pointing the stick at the wrong folks, we can't opt out of council waste collection, one can't selectively only pay for part of the services afforded by our council tax.  If we could then one would be able to opt in and out of anything, chaos would reign.

The responsibility to dispose of this waste therefore, rather than it end up in the ecosystems of our planet, is that of the collecting agent, they took our money for it, we put our trust that its being fulfilled, and if not perhaps those councils need to be brought to account, rather than this kind of video make me feel guilt.


For I do feel guilt.


But there's very little practical steps I can take to dispose of my waste through any other channels, or companies.  I can't incinerate it myself, I can't bury it anywhere myself, I can't recycle things myself, they are large industrial tasks which is why I pay my fee and clearly hope for the best.

But the best isn't good enough.  Councils of the United Kingdom, sort this one out.

Saturday, 20 June 2020

The Hot Water Pipe Balls Up

The worst mistake I ever made as a kid.... Was flood the house.

Yeah, so... my parents had a new central heating system put in, all the floor boards up job, British Gas did the work... and for some unknown reason they left all the floor boards up when the finished the job.

To this day, I don't know why they left the job, with hot exposed pipes in the floor space.  But they did... Pinky Swear.

So, Saturday morning my Dad set about putting the floor boards back down, he embroiled me in this, despite my not really knowing one end of a hammer from the other, he put the first board in place and started to put the nails into the holes they had come out of and tamp them down.

He handed me the hammer and said to put in the two nails at my end.... I placed the nail in and hammered it once.... Handing the hammer back to my Dad and we crawled forward to the next joist.

And then I felt wet on my knee... Water was merrily flowing up out of the nail hole and across the wood... warm musky water... heating system water, fresh fernox.

OMG!!!

But my brain said "hey Dad, there's water coming out this wood"... which in retrospect is one of the most spectacular brain farts I can ever imagine, they were the words my brain delivered so my mouth spoke thus.

Panic!!!!

We pull the board up... to put a finger over the hole... but we can't... the hole is in the side of the pipe... the nail had gone down, turned about 60 degree's and gone into the side of the pipe... how it managed this I'll never know, unless I buy that house strip that floor board out and dissect that joist.

So this hole in the pipe was well out of reach below the level of the joist in this cut, you could not put a finger in it... and the heating was on, this water was getting burning hot.

We wrapped towels around it, all sorts, i got scolded pretty badly by it... British Gas wouldn't come back, their home care insurance cover for this didn't cover us for our sticking a nail in the pipe, despite the argument that they pulled the bloody boards up why didn't they put them back down!!?!?!!

To this day I'll never understand why they were left like this.

But this all became my fault.

A plumber arrived about an hour later, he drained the system, cut the pipe, two compression joints and bosh fixed.

I never lived this down of course, this was over 35 years ago, but I still hear about it, and I've even written about it right here, so it plays on my mind.  Not for my ineptitude with a hammer... but for the physics of the thing, how did a nail, driven in straight as far as I could tell... How could it turn like this and stick into a pipe's side, it's lower radius of that side even from a straight above shot?

Pulling it out, the nail had a bend added a perfect bend, as though it had gone slightly into the joist and just turned.  The other nail was still straight and true...

Thursday, 18 June 2020

Brain Dead Boring Boomber Bastards Next Door

Its been over a month, so I've come to terms with something... Some people are just horrid.

We'll just dial back the clock, 1945.... VE Day... All four of my grandparents were serving in the war effort, Solider, Sailor, Nurse & Land Army Girl respectively.  It was their war, their life, and I respect that immensely.

I made a video to that effect a head of VE Day.


However, with the lockdown, my wife and I, being in at risk groups didn't plan on anything for a street party out front, not least as our neighbours, as already mentioned in these pages, are quite abhorrent people breaking the rules and putting themselves and others at risk, but we also had no idea there were any such plans a foot... After all, why risk it when we and all of them are in at risk categories?!?!....

So, we sat it out, rightfully and with respect, I do spend a lot of time with my mind cast back to the world wars and I don't think any of my neighbours, unless there's some secret military historian in their ranks, can touch my knowledge of the struggle and suffering inflicted.

It was therefore with some surprise that I've heard on the grape vine how "disgusted" our direct neighbours were of our "ignoring VE Day" and "disrespecting the spirit of the day".

These fools haven't dared say this to our face, these brain dead boring boomer bastards won't face me and say a word, and you know what... that makes them pretty horrid in my book.

Friday, 5 June 2020

Worst Idea in Development Ever

I'm casting back a long long way, over 15 years to be imprecise as I can, and talk about the worse idea in software development ever.... To perform a group code review once a week.

But before I can do that I need to talk about the good way to do this, code reviews should be non-intrusive for the majority of team members, they should be able to dip in and out, they should fit it into pieces of their day which are spare or otherwise dead time, and it should be use as a tool to not only review the code but introduce familiarity to other people's work & progress to everyone else.

So what was wrong 15 years ago?  Well, the important point about the good way of reviewing code was to actually be able to see the code.... When this new review process was introduced all those years ago... the code was on a machine, whilst we were all in a meeting room and the programmer stood up and verbally described the code to us.

Yes, verbally describing what took all WEEK to do, neither conveyed to us what was being done not shows us how, we were unable to help debug or sense check the logic, and it gave zero oversight into how the code was built, was it efficient for example (we'll come back to that topic in a moment).

And of course the planned one hour meeting was excruciating to be in... and only one developer got to speak in the first session.

There were 6 staff programmers and we were augmented with 6 contract programmers, the "lead" if you could call her that programmer went first... and her presentation was on the hardware to database connection.

It used a Marathon database, which I've just googled and humorously I can't find any references to that product.  And the "lead" had been using it at her prior role on Java based programming, here in C we were a little perplexed by her approach.

For she presented that from the high-speed buttons and lights on the hardware, which had to flash fast and had to be responsive to touch, she had written a system which took the impulses and inserted the values into a "Buttons" database table.  And then another on a loop which polled "SELECT * FROM LIGHTS;" and pushed the "on" or "off" states of the resulting list (from left to right) to the hardware.

Of course was immediately obvious to all but the lead, the manager and her office buddy, would not fly and the three different members of the team, all infinitely more familiar with the hardware and the C language than this lead, pointed out that it would be slow and unresponsive.   That we were on a single core machine so you couldn't just ignore that the database driver would wonder off and do it's own thing, as well as be constantly interrupted by the processing of our system, and the system itself was to be host to third party software which we could not ourselves fully control, so they might run with a tight loop starving our system and especially starving (what was then) a low priority database driver service.

All in all it sounded a REALLY bad idea.

But, she'd already done the work.  The manager had already signed off on her idea in a series of closed doors conferences with her, and her lone office buddy made it clear he was on side.

It was 3 staffers verses 3 "senior" staffers.

It was fact, this was going to happen.


Which brings us to an obvious fault in this "Code Review" no-one could actually get anything changed, we were really there to be told of the fabulous innovation from behind the green curtain.  We could not divert, advise nor simply appreciate the good, bad or ugly in this system.

So it was revision one (of twelve) was issued and immediately a real piece of content (a game) was played on the system... This game already worked on the old system we were replacing, so its behaviour was well established.  And immediately all the lights started to behave badly, they would he updating visually, we could see, from left to right... rather than all coming on together and going off together.

This was puzzling the micro-controller sending the light signals was a 32bit register, you just set the binary representation, and the micro almost immediately lit or extinguished the bulb... Why was it showing this left to right behaviour?

The three of us whom had descented said "are you going through that lights query as a list and applying it left to right?".... "No" came the reply, but she soon disappeared and came back with version 2.

Which STILL turned the lights on left to right, but subtly so, we could see it and the experienced play tested protested it was, but to the uninitiated it was just about passable.  So it went into test proper.

And they reported the same, but opposite feel to the buttons, that they lagged from right to left, and lag they did.

To her credit the "lead" didn't dismiss them and went to actually play the machine, yes she'd not played it until now... and immediately version 3 was issued.

Again, as with the lights, the lag was still there, the left hand most button was the most laggy, and that would make sense if there was a loop which was working through their being updated from right to left for the buttons and left to right for the lights.

But she insisted that there was no loop.

And we had no oversight on the code, even though we had "reviewed" it.

The next morning we walked into find her already present, version 4 had gone down to test.  The tester had put a different game on, which did a different series of light patterns and reported "It doesn't look right at all" (except he'd not been as polite) spurring the new version.

One of the more vocal of our group went to the manager and said "this going through a database is the madness, no matter what she's actually doing in the code, it can't be fast enough to feel like the old direct to hardware system, we need to remove this layer and just go direct".... but the manager didn't want to upset the "lead" so persisted with the database thing.

Release 5, 6 and 7 went down later that day, then about lunch a machine was hoisted up the fire escape stairs and into the office wheeled all the way and plonked next to the lead, she was to debug this properly.

Release 8, 9 ad 10 went only to this machine next to her and the tester was duly dragged up and into the room to sit, painfully, next to her explaining how it should plan and indeed he insisted the old system be wheeled up and plonked right next to the new borked on.

The two boxes side by side it was immediately obvious the new database driven system was really Really REALLY slow compared to the old one.

"It's the database" voices said.


"It's the loop" others called out.



"There is no loop, and the database is fast!" She persisted.


None of us from the C side bought this, and still could not see the code (code revision control is a topic for another day).

Finally, it was Friday, version 10 had remained for all of Thursday, but Friday came and something had to be done.  The engineer responsible for the board, the actual micro-controller was brought in, and he immediately ran his test routine on the board showing the lagging and we saw it being solid behave correctly and work, despite the lass having decried her board was faulty.

The hardware engineer had a view none of us got, he could see the code, he sat beside her and with us all gathered around he blinked, looked at each of us and then looked at the code, then turned to the "lead" and said "you know you can just sent the unsigned 32 bit integer directly to that register, all in one go?"

She looked at him and asked what he meant.

"Well if you want to turn it all on, send zero"... if you want to turn them all on send 4,294,967,295‬"

She blinked and looked at the code and then back at him, "I don't follow".

The hardware engineer looked at all our eager faces, three of us knew what was coming.


"Well, you don't need to loop through each boolean and bit shift them one at a time into your register sending them one at a time, you can still loop and bit shift them all in if you like, but you can sent the command once, set the lights to the value in the register once".


Three of us left the room, the manager looked dumbfounded and a little thunder struck, her office pal was notably quiet.

Version 11 came out about an hour later and the hardware engineer went to leave, popping his head into the office of the 3 of us on the C side... "Why wasn't this picked up in review?"




* Throughout you've seen me put "lead" in air quotes, this is intentional, the lass was not a lead, not as we'd describe today, she was just the loudest voice in the split office, she was furthest from the manager and had this knack of making you feel like she had ALWAYS been there and always been in charge.

I strongly believed she had been at the company for years when I started.

It wasn't until years later that I discovered she had only been in her role two weeks longer than me, two weeks in which she had moved from direct hardware peek & poke to via database.


* Version 12 : Yes you guessed it, version 12 was to remove the database from the hardware interactions completely, an abstract layer was built holding a representation of the hardware in memory and that representation was twiddled from the database side and it's representation imposed on the hardware by directly poking.

Thursday, 28 May 2020

That Work Life Split Under Covid

With the lockdown and working from home I'm finally doing something I always thought I wanted to do, work from home.  I'd always had the niggling thought I could be more efficient and it would be really good to be able to work from home.  Oh my... Oh Me Oh My How wrong was I?!

The first elephant in the room, work-life-balance, I work in my home office, my home office where I write this blog and make silly videos and play and read... And... so when I've been in it 8+ hours a day, I don't want to look at it any more... I don't sit at my office desk craving to be home chomping on some private project, because I'm already at that home desk and the lines have been blurred.

Second, the family... Specifically (sorry love) the wife... She's no concept of being in the zone, as a programmer, when you're in the zone and been doing something niggly all day and everything is finally falling into place, no matter the time, you stick at it to get done... No, my wife can't comprehend this, she doesn't understand everytime she shouts "Come on now"... It's another 20 minutes because you just mentally ravaged my trail of thought... Put headphones on?... Yeah you don't know how loud my Mrs is.

Third, hours... I touched on it a little above, but there's no quantitative way to express what you're up to.  I feel, quite strongly, that if you're not producing something (like code) and being seen to, you're looking absent from the work place... You're at home, not right there doing your thing.  Recall, I'm quite used to sitting typing for hours on end with folks wondering quite why my keyboard is so loud.  I get a lot of feedback from that presence in the moment in the office.  Without that feedback, I'm feeling more than a little fraudulent, especially as when software engineering tends to do, things go awry and you're then asking for more time... I've literally had 2 weeks on a project, then a week off (yes, I had a week off at home) and then I returned and asked for another 2 weeks... and I'm pretty much about to ask for yet another... based on the original 2 week estimate I over egged this pudding... But I have been working frenetically, except I feel on the other side... they might not see it that way.

Fourth, being somewhere else, this might sound obvious, but I'd never appreciated it, rolling out of bed stretching, getting a coffee and walking a few steps into my chair always felt like bliss, when I did it of a weekend and got on with some project it always felt so right and clean.  Now, it's sullied, it's forced upon me, it's the norm... and to be honest, it's doing my head in.  I miss the commute, the hour to decompress either way.... I miss that moment where I get to just be in my own head, in my own space in the car on the tram or just walking.

Whether that last part of the pre-virus world ever returns, I could not say.

Friday, 15 May 2020

Goodbye Childhood Confidence

My best game of charades got crapped on... This is a grudge, a very old grudge, for this happened when I was 8... Yeah, I don't let go easily.

It was a life lesson, which put the nail on my opinion from experience that as a child adults can be dumb and remain so outside of their own specific fields of interests, and will miss no opportunity to knock a child's confidence.

What was this about?  Well, it came after a string of little things where adults put me down, my mother would not accept that "ambulate" is a word... And before you start to say "why didn't you just google it and show her?... well, there was no google, this was the 1980's.  There wasn't even a dictionary in the house!

She'd also in correctly corrected my mental arithmetic on numerous occasions, which set me on the path of a life not trusting my own number skills for life.

TL;DR; I'd had a load of adults putting me down...

Anyway, the story.... I go to school this day, you know school; where all the teaching staff encourage learning and being clever like.... Well... No.

On this day, we were all given over to full charge of the schools one teaching assistant, because the teacher herself felt very ill, the teaching assistant, who I will call Mrs C, had no idea what to do with us so we played charades.

Each child was asked to think of a TV show they had watched the night before and to come up with a sign or gesture for it without speaking and we each had to guess the show.  Recall there were only 4 TV Channels at this time, and most of us played out right after school or our tea, so pickings were slim.

Eastenders was signed by one girl pointing east and clapping the drum motif.

Coronation Street was signed by a boy making out a crown on his head and walking about a bit.


Things dried up a bit, "The Bill" was two lads walking around slowly flicking their heels a bit, we all thought they meant a dance show.

Then after a lot of silence, and I was a shy child, I decided to give it a go with the last show I was allowed to watch.

I stood and I performed a wave to everyone, waving and blowing a kiss across the room, then bent down and stroked an imaginary dog at my heels... A pet dog.... A wave goodbye and a pet dog.... A goodbye and a pet... 



I thought this quite clever, I remember watching the men in the show in their bunk room, never really paid any mention to the plot nor story, it was something on the TV and I knew that the words were "goodbye" in German and "pet" was added to affect a geordie accent.

And the teaching assistant, clearly knew what I meant and rather than be encouraging, as she had been to the other kids, who worked in pairs or made only strange motions to intimate their thoughts she shat all over mine.

Like proper shat on me from a great height.  "Don't be ridiculous, how was anyone going to get that?"

Was it my fault you lot can't speak English, or work backwards from "petting something" to "pet" to.. Oh the only show on one of the 4 measly channels last night has the word Pet in it, even if you don't know the funny foreign words because you're 8 English and this is the era before the Berlin wall came down and Germany was a distant ignored memory from old war films and Grandad's recollections of their not liking it up them.

I've never let this go... Not even now.

Sunday, 3 May 2020

It Finally Happened... Dead CPU

It's happened, happened in annoyingly mundane circumstances, but happened nonetheless... I've killed a CPU.

The first CPU I've ever ever killed, and I've toyed with and worked with CPU's since about 1994, juggling them and building systems, basically as soon as I was introduced to modular PC's at college I was playing about with them fitting parts and drives and replacing things in the great beige boxes.

So what was I doing to finally kill a CPU?

Well, before I explain, let us just lament the chip, it was my Core 2 Quad Q6600, a chip I paid release week prices for, which served me throughout my time playing Eve-Online and World of Warcraft, the chip on which so many gaming marathons in Day of Defeat was carried out and the first chip I really played about with understanding the out of order execution of the new Pentium architecture Intel had foisted upon us (and which I'd tried to ignore for many moons).

Late July 2006 it arrived, I installed a then whopping 1GB of RAM into it and Windows 98 was stuck on it until November when it received Windows Vista, and it worked a charm, equipped with a further 3GB of RAM to a total of 4GB.  Two GTX 8800 graphics cards in SLi it was a beast in it's day.

It led a long and fruitful life in gaming and productivity for me, and so last night 2nd May 2020, a full fourteen years of service later it has gone to silicon heaven.

How did it die?  Right, well, I've been setting up a CCTV system, the neighbours continue to be a source of perturbation for us.  So I had the Q6600 set up in a case with 4GB of RAM streaming to YouTube, however it ran so hot, like a really really hot.  So the plan was to take it out that cramped case, put it into a Bitfenix case with a large 775 cooler.

I get it on the bench, test boot, all fine, remove the ssd and stow it and get to work, all the power out and off, all the cables out the way, unscrew and lift the mobo out, I get my test bench PSU and test boot to the BIOS, all fine.  But I can hear a loud noise, like a whine... I figure it's the power supply, so swap to another power supply, and still hear the same noise... Ohhhhh... what the heck is that?

I reduce to the minimum RAM, and boot... Nothing, what happens is the fan spins a moment then off.... Spins, then off... Spins then off... Oh oh...

I changed the RAM, so change it back... same thing. spin, stop, spin stop... No post.

This whine is getting louder each time I turn on....

I have no idea what it is, I'm suspecting a capacitor or coin whine, I'm suspecting the power supply, not the board.

So, I remove the cooler, and swap a different socket 775 chip into the socket, boots to bios fine, no problem.... Oh oh.... I'm suspecting the CPU is bad.

A visual inspection, it looks fine... I trust the Q6600....

I put it back in, power on again and the whine reappears but instantly goes away, and I smell burning.

Power all off, pull the chip... and sure enough one of the underside surface mount components has gone, I can see its blistered and bubbled up... That CPU is dead, at least to me.

I have no idea what's cause this, I suspect it was age combined with being in this constrictive case and getting so very very hot.

I've decided to retire all my core 2 based machines, I have (well had) three... The Q6600, a X5472 and the wall mounted PC.... The wall mounted project is a little difficult to directly change, I may continue as it is, but the rest of them are to go, they're running too hot and too inefficiently, a now old sandybridge chip will be far more energy and performance efficient.