Wednesday, 28 November 2018

Sana-fracin-down-dirty GGRRRRRR

Smashed my phone whilst lifting the old dishwasher out... This house move just got a whole lot more expensive.

Budding Programmers.... Subscription to Learn

Harping back to my prior post about learning to program, when I spoke at my old Uni, I spoke to a lovely trio of ladies, whom wanted to be programmer/computer folks... And one thing struck me, was how narrow their knowledge was.

When they asked me how I got into programming and I explained that when I learned to program in the 1990's there was no github, indeed there was no internet, you could not just go and download a program or join an open source project.  If you wanted tool, and had no BBS dial up to find someone with something like it, you wrote your own.

I wrote code to record kills in games on the Atari ST, I wrote text editors for the ST and DOS (EGA graphics FTW), I write 2D painting programs for DOS.... I distinctly remember my college tutor seeing my using DOS interrupt 11 to control the mouse and his saying "you're the first person I've seen work that out"... I didn't work it out by trial and error though, I worked it out by reading, about the DOS platform, about BIOS, about my machine.

Today folks seem to know more about the bits they're interested in, than the whole machine, because they're not driven out of the comfort zone to explore and push the boundaries.  If today you're only interested in writing a neural network, you don't have to get your hands dirty with nodes or sigmoids or anything really, you can just get google to do the thinking for you, indeed they can even provide the solution.

So, I say folks, if you are of a technical bent, whenever you do a task, even if you use a pre-formed library, take time to explore what it does for you, look at your machine could it do things better.

A notable interview technique I've seen in action (and indeed practiced) is to give someone a multiple looping piece of code and ask them to edit it... It works single threaded, but could be multiples of times faster, I want to know if they think about threads and lambdas, and then I also want to know whether they think about the machine itself... Do they think about the number of cores, to optimise the number of threads being sprung up?  Do they think about cache hits and cash orientation of data (row verses column order)?....

And I want to know if tech folks read this, and they don't know about cache hits, or finding the number of physical processors, that they take heed and go look at and think about how to accomplish those points!

To that end I have a set of sites for such folks to subscribe to, along with my pages here of course...




And then look for conferences in the language you want to study... Lets say C++....


C++ Now (formerly BoostCon) 

Many folks pay to attend virtual ticket tours of game conventions, why not also take the time to follow the computer languages?...

Sunday, 25 November 2018

Scary Big Brother Moment

I have just ordered a mail redirection, as part of our move to the new house... And at the end the Royal Mail ask you a series of security questions to "confirm" your identity....

OH MY GOD

They are the most scary things to see, they were asking me questions about old addressed (totally unrelated to the addresses being redirected) they ask about current accounts opened sixteen years ago, they ask about my previous mortgages outstanding balance... Really scary things, and if you get the questions wrong they tell you, they know the answers.

This is the most scary thing... I could sit with a credit card, paying a fee (I admit) and putting in the personal data of other people I know and I could learn new secret private information about them, okay they asked me three four different previous addresses... Only one applied to me... But, if you cross referenced this you could build a big picture about people...

I'm honestly scared by something so mundane having access to so much private information.

Anyway, with the move now underway, expect more silent silence from me... Sorry

Saturday, 17 November 2018

Can you Learn to be a Programmer...

I was asked this very interesting question this week... "Can you learn to be a programmer?"... Lets be clear, the question is can you be a programmer, not can you learn to program.  I believe anyone can learn to use a programming language, to drive their computer to perform a task for them, after all computers are tools and everyone can learn to use any tool.

Be a person trying to write a batch script, create a spreadsheet to do their home accounts, throwing together some python to process a few text files or creating a whole compiled program of some kind, pretty much anyone can make themselves, with a book, a little internet searching and enough time, appear on that bell-curve of skill.

Does this therefore make everyone a programmer?  I think it most certainly does not.  I can pick up a saw and a hammer, I have in my time knocked out some dovetail joints and repaired the odd chest of draws, does that make me a carpenter?.. NOPE... And likewise, if that self same carpenter picked up their laptop and wrote a bit of C# to tally the number of planks they use they are not a programmer.  He has programmed, just as I have knocked some holes in wood, but one does not transgress nor deign to call oneself the other; it would be insulting to the skills in the craft inherent to each's own chose trade.

And there's the key phrase, chosen trade.  Anyone can program, but to be a programmer you've got to choose to apply yourself, either through some personal interest, a passion, experience and ability at the task.  You must strive to learn, to expand and to know your craft.

Very many folks come to try and be a programmer after learning simply to program, throwing a few lines of code together is not enough; certainly not in my mind it is not enough.

Why do I say this?  Well, I sat down this week with several lovely students at my old Alma Mater, and I was bereft to hear from Computer Studies and Systems and even Software Engineering Students that they hadn't really programmed anything before, they asked me "how do you get into programming", "what should I program to get better at it [programming]" and they indeed asked "can you learn to be a programmer".

I of course come from a different place in time, which they pointed out with their shock and awe, when I answered they should write programs to support what they are interested in, if they're interested in video film making, write a video encoder or player, if you like games, write some games, if you're not sure just write some programming tools you can use... Say you (like me) repeatedly have to created code to write our structured data (say XML) then write yourself a tool to generate that code in whatever language you need it (I have one written in Python, which generated XML loaders for C#, C++ and Python itself).  I did this because I needed a tool, specific to my needs.  But these students were a little shocked, they asked "why not just get it from github (or wherever)"... And they're right, you could most likely find exactly the solution you want from else where...But... Would you learn anything doing so?... No.

Folks, students if you are reading, you are there to learn, we are in the programming craft to learn, you will not learn without doing.  So, yes use whatever is at hand, get the jobs done, solve the problems of today, by using libraries or leveraging a package manager to get other resources into your projects.  But if you opt to use a library today (like I used tesseract recently to do some OCR for me) when you're done, take a moment, take stock, look what that library does, think how you might do it, try to implement your own even (variations on the same theme).

In this way you will learn more and experience more and feel more confident in your own skills.

Monday, 12 November 2018

RIP : Stan Lee

Stan's done and gone... Sad...


Tuesday, 6 November 2018

Hackers....

God I love this film...


Sunday, 4 November 2018

Server Crash... Bad Memory

I've spent about three hours checking and sorting out the machine which went down, and come-what may I found problem after problem, but not with any of the software.  If your software checks out then there's an obvious other place to look... Your hardware.

My first step was to remove the drives, specifically my ZFS devices.  No difference, everything still broke.

I then set about systematically removing one piece of hardware at a time, first my quad ethernet card, no difference, then I removed the added dual SATA card still broke...

Finally, I removed all the memory and inserted just one stick...

For the first time the firmware of the motherboard reported something had changed (at boot) it knew the memory has reduced from 8GB to 2GB.  But then the grub boot was really fast, it came up and into the system very quickly.

Now, I had been getting MySQL Error 2013 for nearly ever query or SQL dump, with 2GB of RAM this didn't happen, sudo and all the programs now work again... I can therefore only assume one of the other sticks of RAM is corrupt in some manner.


So with a clean boot...


I was able to start pulling the data out...


I ran the server on soak in memtest for an hour and still no problem, there was ONLY a problem after MySQLd had started and 8GB of RAM was installed... Time to bin some of these sticks.