Wednesday, 18 September 2019

1am Cavalry : A follow up

As a follow up to the horses being loose the other night, my wife and I were the ONLY people to go out and get them home, to corral them out of the street and back up the hill, to wake the yard owner and get her and her partner to help get them safe.... THE ONLY PEOPLE.

Yet, my wife has been stopped three times by people to tell her all about it... As though they were there.

Folks who were NOT there, who were NOT out helping, who do not even own horses, "Have you heard about the horses, they were up and down here".

One woman even said "Oh yes, I looked out and saw you were on it so knew they'd be safe"... Really, two people sorting out nine loose horses, you were a lot of help, jog on, love... Jog on.

The arrogance of these people, trying to feel involved, especially when they try to patronize that they know all about it and they're doing you a favour of involving you.... I think they feel that by telling you about their little world they're involved in the community, but their community is based on gossip and bullshit, there's nothing solid to it, nothing real about their little suburban folly.

It's a little bit sickening.  

You were not involved, watching out of the window does not make you part of the solution, it does not make you part of events, to be involved you have to get out and get doing.

Total idiots these people, total and utter idiots, and they've quite annoyed the both of us.

Tuesday, 17 September 2019

The 1am Cavalry

I'm having a hard time sleeping tonight, we ate late... And it's lucky I'm disturbed, as in a hazy half sleep laying here I could swear I heard horses hooves, then I definitely heard horse shoes on iron (once you've heard that sound you'd never forget it)... And then I heard something (or somethings large) on our gravel...

Oh yes, turned out to be something like 8 or the horses from our friend Julies at the top of the hill.

Strangely one of the horses in this pack I'd actually owned, Ted.  So he knew me and calmed right down, but it appeared the rest of them were not happy at being loose.  So, using Ted as a guide pony I let them lead off back up the hill... They had a few pit stops on the way, notably one of the gardens now totally lacks all the roses it had earlier in the evening.

But disaster did nearly strike as instead of finding the gate open for them to return through there was a closed locked gate, how the heck had they gotten out?  And more to the point how was I going to get them back in.

Luckily the wife arrived with a torch and kept them in a building site area at the top, not the best place but no-one, literally NO ONE else came to help, despite our seeing lights springing on, no-one came out to help, they just stared slacked jawed.

So with the wife holding them in a little, I went to get Julie up, she only lived a few doors down... She was mightily surprised and soon reinforcements to our make shift corralling arrived.

After they were back roughly in a safer place we paced back, they'd gotten out of their paddocks through two gates, two gates opened and left open by pedestrians....

DO PEDESTRIANS NOT KNOW HOW DANGEROUS IT IS TO LEAVE A COUNTRY GATE OPEN?

Eight, if not more beautiful horses could have been killed or worse passers by trampled or car drivers insured or themselves killed by stampeding panicked horses all through your taking a short cut rather than going through the allotted human sized, self closing, appointed foot path gate... Just because the large animal gate is 30 feet closer to where you want to be use the stiles, use the county council fitted weighted gates DO NOT open animal gates!

So, here I now am 2am and wired... I've been on a post-midnight mission...

I hope all the horses are back, and I hope they've not got cuts or grazes after going through the brambles and detritus in the builders yard.  I hope the lazy builder puts the wall he's taken down back.

And I hope at least on lazy pedestrian reads this and stops taking short cuts.

Friday, 13 September 2019

PC Overclock and Boot Issues

I've had a bit of a rough ride the last few days, my main workstation PC has been playing me up chronic.  The first signs of problems were a failure to post, then I had a VGA missing error in quick succession.  Power cycling at the wall I got a post but the drive order has been lost.

My immediate thought was perhaps the graphics card had worked loose, I ensured it was seated and rebooted, all seemed fine.

However, getting into windows I immediately felt a sort of sluggish feeling, taking a look around I quickly saw the problem I'd lost my overclock...

To remind you the machine is sporting a Xeon X5670 overclocked to 4.0ghz, but it was running at a stock 2.53ghz, and I could really really tell.

So, back to the BIOS and I suspected I'd lost the overclock and the drive settings because of a flaky motherboard manual.

Swapping the battery out and reapplying the overclock and everything seems fine, I've even reset which drive to boot from as I'm not booting from an M.2 PCIe NVME.


But it has been a trying time, and it's really set me back... Watch this space for a 6 core, 12 thread potential replacement...

Saturday, 31 August 2019

World of Warships : Code Give Away

Hey readers, sorry I've been absent so long... To make up for things, for my five readers who use these codes there's free stuff on WarGamings World of Warships.... The code can only be used once and only one per account, so once you've used one you've used all you can.

Find me in-game on the EU server as "Xelous" for some Coop battles.


Codes for Existing Accounts:

HEBCT-VN2E8-G4K6X

HEBCU-XSBPF-M64PC

Existing players can redeem your codes via the Wargaming.net shop.

Codes for new players opening an account:

HEWCB-H48ZV-PVGFY

HEWC9-TRFAK-5R9M8

HEWCU-5YEYS-A395Z

If you want to sign up for a World of Warships account, click the link below where you'll get some bonuses and so will I... https://warships.net/Xelous

Monday, 15 July 2019

Willful Ignorance (C++ Templates)

I had a moment last week where I was a little down on my C++, you see I'm a very old programmer, by programmer standards, and my experience with C++ stems from a time before templates, this may amaze and delight in equal measure as template use is so ubiquitous today, however I've been using find & replace style boiler-plate code in the form of both macros and code-gen for literally decades.

Templates however have not been my go to option, because of that weight of experience.  I actually find picking apart heavy template code quite hard going at times (I think a lot of us do).

But I was down as a valued colleague (Hi D if you read this, you know it's you) described this approach of mine as "willful ignorance".  And he was right, I have to put my hands up and admit he's right.

As such I took a look over my old state machine repo on github and realised there was a bunch of boiler plate stuff I was doing with both macros, or not doing at all, which could easily be made to leverage templates.

Watch this space...

Thursday, 27 June 2019

C++: make_unique friendship

I've previously posted about adding a friendship to the shared_ptr base class to allow a public static function containing a "make_shared" to access private constructors....

Well, here's the partial move I've started to make in my own code bases to do the same with a unique_ptr.

#include <iostream>
#include <memory>

class Item;
using ItemPtr = std::unique_ptr<Item>;
class Item
{
public:
    static ItemPtr Create()
    {
        return std::make_unique<Item>();
    }

    const int& Get() const
    {
        return value;
    }

private:
    friend std::unique_ptr<Item> std::make_unique<Item>();

    Item()
        : value(42)
    {
    }

    int value;
};

int main ()
{
auto i = Item::Crete();
std::cout << i->Get() << std::endl;
}

The secret sauce here is the friend, making the "make_unique" function a friend allows it to access the private constructor.

We could water-tight the "Item" class here by deleting the other constructors...

Item() = delete;
Item(const Item&) = delete;
Item(Item&&) = delete;
Item& operator=(const Item&) = delete;
Item& operator=(Item&&) = delete;

This way we stop any assignment to the type or construction except through the static "Create" function.

Nothing truly amazing here, but I challenge you all now to go add a parameter to the constructor... const int& incomingValue... perhaps and add it to the "Create" and try to set "value" to 100 instead of 42.

The template deduction for the type becomes a total mine-fiend, as the compiler wants to marry  up the "Type&& ..." underlying the parameters rather than treating it as a pure standard forward.