Posts

Showing posts with the label Coding

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...

Technology CV's and Me

I've a small gripe with technology recruiters, if any of you out there are reading this (which since I just cast my CV around, you should be). And this is their penchant for skills lists... I have a very minimalist CV, one page of A4, it covers the primary software languages I like (C++, C, C#) makes mention of my favourite working styles (Agile/Scrum) and it has my history and pertinent academic background. That's all... Minimal, just me, my page one shot done. Anymore and it never, ever, gets me anywhere.  It apparently comes across as "hey look at me" attempts to garner and keep attention with the right buzz words, which I myself despise.  Or it comes over as not having a lot to talk about in the interview, as everything you want to know might very well be in this tome of a CV, and I myself reading them find that I want to ask every question I can in the interview stage, so having it all there you disengage, hurting both your interest in the candidate and their cha...

The Best and the Worst : Working with Genius Programmers

A long time ago, in an office far away from where I now sit, I once worked with a chap I still refer to as the best programmer I've ever met. This was a guy who could take the whole code base, in Delphi, home and over a single weekend re-write it in Java. This was a guy who I saw, from scratch, write a C controller for an embedded PIC to capture an image from a supposedly incompatible TTL driven camera and then an analyzer for the captured images which would detect and show motion, making for our common employer their best ever selling product a cheap security motion detection system, which didn't rely on relatively expensive high resolution cameras. It was awe inspiring as a newly graduated programmer, whom had a huge background in DOS programming, but whom had never worked in Enterprise level development before. I sat next to what I still regard as near genius. This very same chap was also the worst programmer I've ever worked with. Because he was so highly functioning he...

C++ : Pass-By-Reference Or Die

Image
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 t...

Start C++?

I've been writing C++11 or better code, well since 2010, as I started doing so with the TR1 as was.  We're nearing eight years since then, and it starts to show. So, where would I recommend starting to learn modern C++?  Well, if you've never programmed before, don't start by learning C or C++, go learn Pascal, or Python , or something else which is more friendly.  I started out in Pascal, for a good three years, before I started to work in C and later moved into C++ (in 1998) so if 20 years of C++ teach me anything, it's don't try to learn if as your first language. Once you have a concept of how to program, then start to learn C++, and I would recommend finding someone - hopefully like me - and asking them.  An hours chat with them, to help swap what you know with what they know, is a good start. Saving any such friends, YouTube, watch CPPCon, BoostCon, watch talks about programming C++ but most importantly get a development environment and cut some code, if y...

C++ : Trust the STL

Image
One sore lesson to teach some developers is when to trust the compiler, once you've gotten that across you have to start teaching folks to stop re-inventing the wheel. If someone has already implemented a file handler, or a serial port abstraction, or a wrapper for some obscure feature, you need to evaluate that offering... To evaluate whether a library is worth using, firstly see if it works, then see how many folks actually use it, the more that use it then the more likely bugs will be flushed out and the whole thing has been tested. Leveraging this kind of mature code within your projects assists in bootstrapping the startup phase of new projects. Boost is a note worthy example of what I'm talking about here, many software shops (at least the ones I know) resist using open-source or third party libraries, they prefer to stick to in-house developed niche implementations until the very last moment, this of course slows development and completely symies innovation. Boost howeve...

Story Time - My First Serious Program

Image
Having a basic knowledge of Commodore Basic v2.0 I took to my A-Levels in 1994 and started to learn Pascal, both "Turbo Pascal" on DOS and "Personal Pascal" on my Atari ST. One of the first things I did, as most kids do is start to write a game, it was a 2D grid style war-game, 28x28 tiles to a map and maps stitched together, it was very roughly based on a table top game I had which itself was a dice & splice of the Guadalcanal Campaign of World War 2... Anyway, I had jungle, and grass, Desert and beaches, water and the tanks, and troop counters moved around, you could air-drop paratroopers into spots when you had earned enough points, and I last worked on it in around 1995 when I started to add Sound Blaster driven 16bit effects into it. But, I also needed tools, I was working on DOS, with no Windows - I didn't get Windows 3.1 until later that year - and at college the compiler only ran in DOS, to stop the compiler and loads Windows, then execute a GUI tool...

C++ Multiboxing : World of Warcraft

Image
I'm a huge fan of the early World of Warcraft games, I make no secret of this, and spent far far too long playing the game when it came out.  I enjoyed the game into Burning Crusade and enjoyed PVP during Wrath of the Litchking, but I think somewhere along the way there Blizzard lost their mind. And way back in 2010, on the then in vogue talk show " Shut Up We're Talking ", I predicted where I thought things would go, and that looks pretty much to be where the game has gone, it's been dumbed down, and the MMORPG inflation on damage and stats has become insipid throughout. As such, I crave a Vanilla experience, and wish Blizzard would allow the free usage of the Vanilla assets (mainly extracted client data) for all the server emulations out there - Nostalrius and Felmyst come to mind. Until that happens however, I'm stuck exploring the old game myself, alone... Yes, I still have the original client DVD's I purchased in my battlechest and armed with CMangos,...

Development : My Top Three Testing Tips

I've said before, and I'll say again, I'm not a fan of Test Driven Development, tests and test frameworks have their place, but they should not; in my opinion; be the driving force behind a projects development stream - even if it does give managers above the dev team a warm fuzzy sense of security, or if it allows blame to be appropriated later, you're a team, work as a team and use tests on a per-developer basis as a tool not as a business rule. *cough* I do go off topic at the start of posts don't I... *heerrhum*, right... Top Three Automated Testing Tips... From my years of experience... 1. Do not test items which are tested by masses of other developers... I'm talking about when you're using a frame work of library, ensure you are using it correctly certainly, do this at training or with your coding standard, but then do not labour the point by re-testing... Lets take a good example of this, the C++ Standard Library. The Standard Library contains many ...