Thursday, 19 April 2018

My Ultimate Upgrade

Its that time, I have been maxing out my machine repeatedly, I had two options upgrade or build new.

Money determined that an upgrade is all I can afford, between the server rebuild earlier in the year, building myself a new rack-mount table and just generally being skint my budget was low, super low, like £200.

Lets go over what the machine is....

I'm running an Intel Core i7 950 3.0ghz.  This is a four core (eight thread) chip, it cost the earth when I bought it as an early adopter of the newly released Core i7 series.  My upgrade comes in the form of an Intel Xeon X5670, clocked slightly slower I do plan to overclock the chip, but it lifts me to 6 cores (12 threads).  There's also a whopping increase in L3 cache, I see this as the last and only upgrade path for this machine.

The motherboard hosting this is a very trusty Asus P6X58-e, I've loved every minute of this board, and hope that applying the overclock will be as easy as everything else working with it.

As I am overclocking however, it's going to be a full tear down of the machine, a full clean, replacing the heatsink pads & compounds throughout and cleaning it all up.  This will be the first time I'll have taken the motherboard out of it's residential case since I built the machine.

For RAM I've been very happily running 6 x 2GB Corsair XMS3 DDR3 at 1333mhz, actually underclocking the memory as it's 1600mhz rated, but running it any faster than 1333mhz I ran into heat issues and instability.

With the rebuild however, I've bought second hand sticks of the Corsair XMS3 DDR3 but 4GB sticks, since I want to retain triple channel functionality I want six matching rated sticks, however, the number of sellers with matching sets is hard to find, there's lots of XMS3 about, but you get a speed spectrum from 1600mhz to 2000mhz stick, I've gotten some listed as different versions too, so I'm hoping everything will be okay and I can homogenise the sticks I have.

The power supply remains the Corsair I have had a while, but I am going to try and clean it out.

Brian over at TechYesCity on YouTube, often recommends using WD40 to coat parts and keep them working longer, I may have to check this on my secondary Core 2 Duo machine to see if it works before going for it on this my main machine.

The final upgrade is to sort out and replace the filters with something high micron rated, HEPA filter pads across the bottom.

Sunday, 15 April 2018

World War Rat Pt 2

We found one huge dead rat, maggots the lot - killed by eating bait I believe - another dead dedicated one in a nest.  A second nest full of skeletons and a third nest about a foot down below a slab...

I have removed and destroyed the shed, set up a new gravel rocky bed, put chicken wire in all the access routes to the area, filled in the slabbed areas with soil and gravel, then set up a new plastic storage bin.

I began this mammoth task at about 10am, and finished about an hour ago... I'm knackered.

Can't wait to get to work tomorrow, for a rest.

THIS IS WAR! On rats....

I think life mocks me at times, today I've taken delivery of a couple of things to review... The Victor Electronic Rat Killer Trap and a bunch of bait...
And, I literally went to groom the guinea pigs and since this morning, I stepped into the shed and there was an immediate god awful smell.  The smell of rat.

But this isn't life mocking me... 

No, the mocking comes from the fact that the bloody test model rat trap doesn't work, and then I put the blocks of bait (which only come in a plastic bag) on top of the cage for an hour whilst I cooked tea... And when I returned the blocks and bag were gone, replaced with a set of six fat shiny fresh rat shits!

So tomorrow it's WAR!

The guinea pigs and rabbit are being taken out of the shed, all the storage bins (which are large plastic and covered with heavy lids) will come out, everything will be swept and the whole shed will be torn down and chopped up.

All the paving slabs are coming out and being stacked... and I'm digging out about 14 inches around the weather-board layer of the concrete fencing and I'm putting in a layer of chicken wire and back filling with pea gravel.

It's war, war war.... We're sure the things are attracted by the open den our pet Rabbit has, she has the run of the shed at night, with a saw dust den and food... They must be getting in to drink her water and eat her hard feed.

But we live near a water course between a quite pungent stables and equally pungent, at times, dairy farm.  Rats are par for the course, however, this is clearly getting out of hand.  Willing, in day light, to climb onto a surface to eat a whole bag of 15 bait blocks.  It at least tells me they're not getting that much sustenance from the rabbit's bowl, they were hungry for the bait.

The guinea pigs are unaffected they're in a closed stack of cages, but clearly the rats have climbed onto the top of the stack at least once.

It's all coming out, I know what I'll find more of the damn tunnels I found before under the paving slabs, but this time it is going to be the whole shed.

WAR!

Saturday, 7 April 2018

Geoffery Barnes (Bans) Spammed Me

This is a post about the worst beginner programming post I've ever read...

I've been hounded by someone, I'll call them "LN" they have mailed me and told me that they really like one of my articles from June 2012... Checking my clock, I've posted a whole host of other stuff since.  However, they seem fixated on that pretty old post and strangely have mailed me that it makes perfect reading for "juniors as well as experienced programmers".

I'm really not sure what they're referring to in that month of posts I go from inappropriate references to Ghost Busters, to peoples awful toilet habits to talking about the English football team and shit... Yes, I have a post titled "Hyperdefecation".

In essence this emailer is full of utter crap, so what are they trying to do?  Well they've references another blog I do frequent "coding horrors", but again their comment is off the mark...

Then they ask me to look at their 3000+ word post, except this article is not written by "LN" it's written by one Geoffrey Barnes... And good old Geoff is very quick to reply to comments on his article, he loves his article... He maybe loves it enough to start hassling folks through e-mail, or even setting up mail spam bots to hassle folks with this supposed programming experience? Maybe...

The problem with this?  Well, he's hassled me... The article isn't very good, and I'm going to review it... Right now... So, get a cuppa, take a seat, and lets digest the glorious fail that is:


Because, yes folks, it's not actually very insightful and draws from some very dubious sources...

For example, it quickly attempts to establish weight for the arguments to come, with the statement:

"according the U.S. Bureau of Labor and Statistics, in the United States"

Fabulous, the US government... Except, the link does not go to the US Bureau of Labour and Statistics (yes, I'm English and spell Labour correctly) no the article goes to the "webopedia" website, think of a lower market wikipedia here with less over sight.

This page on webopedia does indeed have the above "fact", however it's attributed to "Hour of Code" not the US Government. And Hour of Code is part of "Computer Science Education Week" and it-itself does not state this, at least not clearly, anywhere... So that's article argument number one blown right out of the water, just by a little clicking.  I was at this point immediately put off this article which is trying to give itself false gravitas.

I persisted in reading however, clearly LN wanted to convey some message to me...  The very next paragraph then called out to me:

"most beginning computer programmers spend too much time deciding on which programming language to learn first to the point that much time is wasted choosing the programming language…"

This is what we call an oxymoron you are not a computer programmer until you can program, therefore you must have picked a language to be a computer programmer, so you can't as a computer programmer spend anytime to pick your first language... Does anyone get my drift here?  This is sloppy, poor writing, seemingly just to add another link to another "Loud Programmer" article, it's sham within sham right now.

"…time that could have been spent actually coding something useful."

I feel this about the time I've spent reading this article, but let me continue, because we're just getting warm.  And we actually have a valid point... I was hoping for the first of many... "the key point that helped me choose.... was to decide on the particular field I was interested in"... this is exactly right, this is the exact way you choose a programming language, just as you choose any other tool, you have to make sure the tool is fit for purpose, it's no good trying to be a system software engineer (like myself) in a language like Java, you can't write a near bare metal requirements demanding system in Java.  But you can write one in C or C++... So you chose that language to fit your purpose!  This however is not terribly insightful, it's common sense.

What's next in the article then?  Well they present this wonderful graph...




Which tells us the square root of fuck all... "Trends"... Okay... And the vertical axis... "Occurrences"... Right, where were these "Occurrences"..... Python, C++, HTML5 and C all get 6... Six ... What does this mean?  Its complete and utter gibberish nonsensical tosh.

Before the language points begin there's yet another ill thought out quote:

"Almost all major software including mobile applications, desktop applications and web applications have a web based back end, including your anti-virus software."

We're still not enlightened as to whom shat out this thought provoking turd, but lets pick through it... 


Everything has a "web back end", no... What most everything has is some form of remote server based resource, that is we must differentiate between "web" and "networked / intranetworked / internetworked", for you see long before there was an internet as we know it today there was "client-server" computing and before that there was time-sliced multiplexed computing with everyone sharing the same machine, so many writers in technology ignore this history they confuse and cloud their writing by simply jumping to "web", it's not the web, and I hate you saying it's the web, the "web" is perhaps what you view in your browser; that why they're called web-browsers; and yes the server your anti-virus talks to to update it's signatures could be connected to the web, but that does not mean it's back-end is on the web, nor does any of this tell you that almost all programs have web-back-ends at all, they have servers perhaps, but this is just a leap too far, and sets the tone for the following passage.

For the author takes to the high-road, talking about people bashing PHP, but he clearly loves PHP... Personally, I love the security loop-holes in old PHP and it has been superseded on the back-end by better technologies.  But when done right it has a use, and of course that use is in serving dynamic web content easily.  However, the author says it's "THE" (yes the capitols) the most popular programming language... This is in red, just to lend emphasis, clearly he really likes PHP... But then the points to back this argument up... "80% of the web is powered by the one programming languages, PHP"... Really?  Who said?  What stats, I can't find this statistic anywhere.  They also state Facebook is powered by PHP, this is not strictly true, it's written in XHP runs on HipHop for PHP on the back-end, but on the client-side is full of Javascript and I believe there's some Erlang in there.  The author though is set on his premeditated PHP kicker so none of this is mentioned.

"As a PHP Developer you have a large pool of web development projects"... yawn, all you have is web development, that's all you can use PHP for.  Is it useful?  Yes, is it the "BEST" for freelancing?  No, not really, would you get lots of work?  Sort of, but you need so so many supporting skills, HTML, JavaScript, CSS, not to mention some experience in setting up the back-end server services you require to actually run the PHP.  Is PHP a good place to start?  Hell no, the price of entry is HUGE, and you're going to see no return on this initial investment until you're very very good.

His next point?... JavaScript... Well I've already explained this is a huge helper in PHP, but it's a huge helper in any web development task you have, however, there's some huge leaps here... Angular JS and a whole host of other libraries are mentioned, but there's just no getting over the author has literally ignored the biggest draw to Javascript, it's cost of entry is zero, you literally write some code and run it in your browser... The problem?  They've utterly ignored HTML, you have to write javascript into an HTML document within which to load into your browser, without this basic understanding this most elementary concept no-one can make the choice to learn Javascript, like PHP it's an also ran with HTML, so your actual time to entry is quite large, cost zero, but time huge.

I do however agree with their comment "learning Javascript programming will simply make your life easier", yes it will.  But alone it won't make you a programmer.

We do get our first editorial cockup here, there's a "Note" here.  A note appears in text when it's optional to read, or you read it without it causing any impact on the flow of the topic at hand.

NOTE: Get milk tomorrow.

You continue your writing as though the reader has no idea about the content of the note, the author of this article however utterly and totally misses this point, and continues to converse with the reader immediately.

Also the content of this note, dubious, not backed up with any points of reference, it is (just as all my writing it) the opinion of the author, yet it's juxtaposition-ed to have this faux gravitas to the lay reader.

Python comes next, perhaps the first language even I would have to allow them to call a programming language for real, rather than a scripting language or presentation language (even if you do write python "scripts" rather than compile it down).  I like python, lots of people do... The author however has a bit of a fantasy splooge here though.  He says that python is the most popular technology on Stack Overflow... Or rather he rips off someone else's diagram saying this, lets look at this:


Unfortunately, again there's no source given for this statistical testicle, I however can present you with this page from stack overflow themselves, with the most recent developer survey where the % categories visited is listed thus:

Python is on there, it gets a whopping 32% but it's not first on the searches.  That's how you quote a reference Geoff.

So who's next?... C# and the .NET framework... It allows you to build web applications for the Microsoft Internet Server.  No, it doesn't, C# (as well as others) are languages which let you write programs which run on the .NET framework.  Which is (I'm ignoring Mono.NET) written by Microsoft to run on all their platforms, desktop, server, internet information services.  Microsoft created .NET as a virtual machine to run their .NET byte-code as a competitor to Java, in terms of market role the two are very similar, both have their own pro's and con's.  As we touched on at the start of the whole article they are yet another tool in your arsenal, however the author pretty much gets .NET all wrong, most least as he's suddenly talking in the present indicative about his not having ambition to learn this language, as he's never wanted to work in a big corp or Microsoft friendly environment.... Dear author, none of your writing thus far makes me want to employ you as a programmer, well at least not as anything other than a web programmer, and even then I'm not too sure from the page's simplistic presentation.

Next up?  Java.... Erg, Gets this totally wrong and is talking personally.  My biggest gripe is with the comment "API back end for most mission critical applications like banking".  I've interviewed for roles in back-end banking, they do not use Java, banking, trading, stock exchange.  Hell even home crypto-mining uses C++ or at a push C, and have done since the 1970's with little plans to change.  Mission critical is not Java's forte.

However, here's comes the authors hard on for web development once again, as he's talking about "Java programming for web development".  Utterly ignoring Java on the desktop but still failing to make the distinction between java as a service (e.g. Jakarta/Tomcat or WebSphere et al) and the classic applets.

What's the hate on Java?  Some crass commentary about not everyone getting on with it... Excuse me, were you not trying to introduce people to programming?  I've created articles about just that, with Java... and they're magnitudes better than this horrible article, check them out here.

To be honest I'm loosing the strength to go on, for next we have a passage on "Mobile Application Development"  there's another statistic mentioned, this time with a reference from Statista, which is a valid reference... Except the reference itself is second hand, the author is quoting a second-hand source as direct fact, it's not.  This is not correct writing, but on the statista reference page there's a "Show Source" link, where does this go?  What font of all knowledge does statista pull its facts?... Well we can't find out, the link goes to the "buy access to us", so their source is themselves?  And good-old Geoff has quoted this as a first hand source?

Who's next on the hit parade?... Swift... From Apple... It's easier to learn than Objective C... As a beginner programmer reading this article, this is yet more utter tosh, they have no point of references, Objective C... You may as well say Swift is easier to learn than Quantum Physics.

But as a beginner you follow a tutorial, so the tutorial for Swift maybe good and the tutorial for Objective C bad, alas I will never know, and nor will the reader of this article.

Moving swiftly on "Java for Android"... Same article smell, new day.  Java is Java right?  The android bit?... Well you're writing Java code to put through something like Buildozer to get an Android app.  I have so many issues with this whole bit that it could be it's own post here on my now longest blog post ever.

The major problem with this idea of writing just one language for Android demeans the android platform, since I've written Python and compiled it to run (with Kivy) on Android.  And Java is intrinsically cross-platform so has nothing directly related to Android.

So the red text greeting "in order to build Android applications you need some skills in Java" no, no you don't, you can write Python or HTML or Javascript and do lots with Android, Android is just an operating system like Windows.  My major problem with this?  This article is meant to be about encouraging beginner programmers, limiting their options is NOT a good move.

And now the biggest steamiest pile of shite?  C++... "C++ is the best programming language for developing computer games".... No, C++ is the one of the better ones for producing fast code, as it's closer to the metal of the computer than anything mentioned thus-far in this whole article, that's why game developers often opt to use C++ for their most low-level components such as developing the graphics engine.

Our Geoff here has a very narrow and limited experience with programming, he's clearly a web or game guy with nothing in between, because in mentioning C++ he's not mentioned C, between the two they've been used to write all the operating systems he's been using to write this very article, all the compilers to create the software he's been working with, the PHP, Java, Pearl, Javascript and python, all of those interpreters are written in one or the other.

There's in fact so much missing in his mention of C++ as to be an insult to programmers everywhere.

The last ticket point on this parade of in practicality?... C#... Again... What gives?  I'm only going to comment that it says... "C# is a dream choice... to learn a multi-purpose programming language"... Multi-purpose, that's games and web then... Thanks Geoff.

His conclusion... I want to rip my own arm off just to have something to smash his keyboard into splinters of plastic to save any poor fuckers from reading such twoddle ever again.

Does he give any tips on which language to pick?  Nope, does he give any clues as to resource to start from?  No!  Does he answer the question where to begin?  Yes...

Yes, he answers... with a Question...


"What is your best programming languages to learn for a beginner?"


We were reading your fucking article to get that answer you schmuck!  You just wasted everyone's time... And what the fuck is wrong with Coffee?



Addendum:  I've had a look through who our little Geoffrey is, seems he is "Loudprogrammer.net" and he has lots of other article... I took a look at one other... His list of influential programmers, and I noted next to Don Knuth he had a link for his boot... Which he used to sell for $22... But now gives away free, this book will show you how to become a $50 an hour earning programmer... in 7 steps... and he has a lovely quirky plaid jacket and glasses on in his picture... Except, on this page his name has changed to Geoffrey Bans... Not Barnes any more... If this guy can't consistently spell his name don't buy his book, don't read his articles.

Oh and when his spam bot bitch starts to nag mail you.... Blog about it, because this guy is a dick.

Friday, 6 April 2018

Is YouTube Advertising AI Imploding?

We've all see the adpocalypse and it's effect on our YouTube Channels; not only from advertisers pulling out of YouTube and google cutting us small fry video makers out of the monetisation features but also this new strange wave of advertisers.

Now, I have no objection to Udemy, but really do I have to see their advert every five minutes?  I have some objection to Polish government based advertising I've seen as well both pro and con sides of other political advertising.

However, today, YouTube has hit a new low for me, watching a video related to second hand server hardware, look at the advertisement plastered on the bottom of the page!


Yes you're not mistaken, this is a category in appropriate, audience in appropriate, utterly and totally in appropriate for YouTube advert for Mature Women who always want to fuck... Yes, that's the long and the short of it, or the schlong of it....

And I am utterly flabberghasted this is the bottom of the barrel from YouTube in their advertising campaign, if this is the depths of depravity they're willing to stoop to then one really can't help but feel they've totally lost their way.

It seems the YouTube evil AI has intrinsically linked server or home networking enthusiasts with wanting to date mature women who have no moral compass, because going to another page, here's ANOTHER example of the same advertiser...


I'm interested in whom is able to post this inappropriate advertising to YouTube, and I want to confront them with it, when they themselves are willing to censor and judge others, when they're willing to kick people off channels, and when they're seemingly not in control of their own systems; as any human would surely have spotted these are perhaps not the most wholesome things to advertise on a platform like YouTube you can understand why people currently have so much hate for YouTube's policies...

Clicking the think then where do we go?


The bottom of this page we can then find a company name:


Who are Bulova Invest Ltd and how do they get away with advertising this junk on YouTube?  Well, there's no contact or company information on the page beyond this copyright notice so lets take a look what a search turns up.


A post office box in the British Virgin Islands... Oh My... They have a whole gaggle of unsavoury sites... "upforit.com", "sexeronde", "fattychaser", "bediscreet", "yolovers" to name a few... And they go to some lengths to hide who they are, if you copy the above text (from the yellow screen shot) you will not get "Bulova Invest Ltd" you will actually copy the text "dtL tsevnl avoluB" obfuscating easy paper-trail checking & accountability.  It is just so seedy, so dodgy, its below bottom feeding.

So YouTube allowed out of control posting of any content, which had a lash back to loose advertisers, their reaction was to restrict those few inappropriate posters, but the social media cat was out of the bag so they lost mainstream advertisers, and so now they have more work to police a minor few for stupid video posts, less revenue, and hence are forced to take on inappropriate advertisers like this, it seems like the trip down the rabbit hole is only half complete... Is YouTube self imploding?

Its a farce, bad posters got rewarded to went off the rails, advertisers fell out of line, small video producers got "punished" for this really and now the advertising is inappropriate?!?!  Its a positive feedback loop in that YouTube AI to just really really turn me off of the platform, or perhaps worse still for their bottom-line, to reinstall an adblocker...

I've tried always to avoid blocking adverts, as a small producer myself I know how important those ads were, but now... I'm not going to have this kind of crap advertised in my face.

Monday, 26 March 2018

C++ : Pass-By-Reference Or Die

Before today's Post, I'm on a mission folks, to get 1000 subs on YouTube.  If only 5% of viewers here subscribed we've have met this target in one month...



I've just had group code review of one of my personal projects, and been rather surprised by the vitriol levelled at one of my practices.... Pass by Reference.

The reviewer, one of a group of peers, has had major issues with the project (my personal) insistance on passing by reference wherever possible, in C++ this takes the form of an additional ampersand on parameter definitions; maybe this was the chaps problem, he has to type an ampersand?

So his problem?  Well, without the actual code we'll simplify and use the Compiler Explorer (from Godbolt.org) and we'll take up their basic square function example, it starts up thus:

Giving the assembler:


On the right, and this chap had taken time to prepare a whole slide show of functions, usually simple, and present them at this code review, showing this kind of thing.  His point... Well the very same C++ but with a pass by reference:


Turns up more lines of assembler:


He's got me right, right, I'm taking more time, I'm slowing everything down, by my not taking a copy of everything and using less memory I'm slowing things down....

This is where the sort of power play turned, I allowed him to present everything, I never interjected, never spoke, I allowed him to speak to the whole group.  We've hired a venue for this, we're meeting live for the first time.  This has to be good.... A couple of the chaps who can already see the fault in the complainers logic were smirking, but we let him finish.

Triumphant, he has won the day, he will not carry the torch of coding standard gods...  WRONG.

I pulled over the presentation laptop, opened godbolt.org myself... Added the ampersand to the "num" and let it produce the above assembler... The chap was smirking completely from ear to ear, he knew he had me...

And then I typed three characters....

-O2

Yes, I told the compiler to optimize, and this happened...


Remarkably small code wouldn't you say?  I still haven't spoken, but I turn the laptop back to the presenter and just sit there.

There's a noticable snigger from those in the know, older-wiser heads then my own I hasten to add.  But this young chap is now looking from me to the screen to the overhead projection and back with a mix of fury and completely puzzlement, he'd checked everything, he's dotted every j and crossed every t, he had me down pat, he wanted to usurp me.

Except, he's never ever, been willing to listen, to learn or to experiment, "code runs, that'll do" is very much his style (and Kyle if you're reading, yes I'm talking about you) but getting code to run is not enough, understanding the code you've written is often only just enough, but getting it to run everywhere, the same way, that's an art.  Debug, Release, Optimised, Unoptimised, automatically profiled, link database and continune they're all subtly different.  Just listing one thing out, the only thing you've looked at; because it backs up your point of view; is not enough you have to look around and see the holistic picture.

And optimised without a pass-by-reference?


Spookily similar code in this case, but often times pass-by-reference is prefered, using const-correctness is prefered it communicates a meaning.

For instance in the "square" function above, how does the caller know that the parameter "num" is not altered in value?  How does the caller know it returns the new value only?  It could be returning an error status code and the parameter altered in value!  You don't know, but making the parameter const and a reference you start to communicate more firmly the intent of your code.