Tuesday, 26 February 2013

Music to Code To...

I've been a little busy still being ill, and working hard, I'm also deep digesting (this means reading really slowly) the final book of Wheel of Time, I've been a fan of the whole series and I am digesting this last book as little golden morsels.

However, like my previous, failed, effort to find a sweetie to enjoy whilst coding, I have started to play music more whilst coding.  I've always played music, but sort of a regular rotation of stuff so I can ignore it and let the tunes flow.

But from time to time I find new things to add, and I found this one today...

Now, I missed this totally when it came out, but its just my sort of thing... and I'm sad to see it won a Grammy and is over 13 years old... sad because I knew nothing about it... hey ho... Adding it to my ipod now.

Tuesday, 19 February 2013

Course, Duplication and Effective Management

I suppose this is just a rant from my side of the desk, so move along if you're not interested, last month I enrolled on a course with Coursera.  I thought I'd take a look at them and settled on something I'm comfortable with from real-world experience, computing - and programming.

The course kicked off, and its a little scrappy, the lecturer's videos are a little off, his coding style is terrible and he makes annoying, obvious mistakes that he has to go back to correct time and again (in his code) and it breaks up the flow of his presentation.

But, I lived with this and did three weeks worth, I even started what was mooted as the programming assignment for the following week (now) a head of time, and had a semi-working solution to the program he kept saying he wanted us to write, we are after all doing a course about programming and programming languages....

So, I was shocked, and appalled when the first assignment was set, and it was basically NOT to code anything, but to create a series of scripts for a third party application - not even scripts for an interpreter - scripts for a third party application to generate code for me first... And I peeled the onion back a little here, and I looked at it, and I went back to re-read the introduction and carefully decided it was all shite.

The course information said that there was no new languages or rubbish to learn, there was just C++ or Java to write, and you know I believed it... First assignment, regular expressions and shite for this third party tool, and then it struck me why, the reason was they could mark the automated output from this tool more easily automatically than they could look at real code, by real people learning properly.

I understand this, the man hours needed to read, or even just compare real code solutions would be immense... But... That's what the course requires to prove learning, to prove useful, to be of real applicable use in the work place.

So, I un-enrolled, if they ask why, I'll be honest with them and critical of the lecturer to a certain extent.  But this fact that I quit it, the reasoning, annoys me.  Because at my work place I am the ONLY member of staff in our Software Development department with a Software related degree, I hold a bachelors in Software Engineering... And I often brow beat people into understanding that my interest is more than just getting the mortgage paid, I trained to do this kind of work, and I enjoy it... Yet I was oft told by higher management "That's all very academic, but how practical is it"... and you know what, from my point of view academia was really useful and a direct input into my work... But if this course was anything to go by... my bosses may have had a point, academia has less and less in relation to the real world with each iteration.

What about duplication?  Well, another item of trouble which came up at work today was that we have a limited amount of bandwidth - either over 3G or on a DVD - to distribute system and content updates to clients.  So I was amazed, dumb founded and truely staring like a dog being shown a card trick when I was informed that the updates sent out duplicate files over and over and over...

So, say you have a new application which uses the "background.png", instead of it checking whether the background.png already added to the update is the same, it just adds the same file again.. and again and again each time a new part of the system uses a file, it puts another copy into the update.  At one point I saw a section of files of around 80mb being duplicated 4 times in 10 folder... that's 3200mb... 3.2GB!... pretty much the whole DVD, just on a few graphics which really need sending just the once.

Now, this disturbed me, as I was pretty certain around three years ago I was given an introduction to the system and told that if "a.txt" is used in two places only one copy will go into an update and there will be metadata added to the file allowing the client side to extract the file and make two copies.  This is after all the beauty of digital distribution, if you need sixteen copies of a file you have in hand you can churn them out in less than seconds.

The reason however that these updates have to have multiple copies is so that "each update has at least once copy of the file when needed"... yes I get that, but why does one update need four copies of the same file in ten places?... Silence.

At this point I decided I was not going to be listened to, not going to break through the crust and obstinate selective ignorance being induced, because if they admitted the system was a bit daft, and not as intended all those years ago, then they'd have a hell of a lot of work to bring it up to spec.

The next issue I have is not about people managing me, it is more about my effectively managing my development time, I have over the last year evolved my development technique, I remember when I first learned to program sitting chipping away at a problem, and I could pretty much run the program through my minds eye in one large pulsing blob, this was of course Turbo Pascal and around 14,000 lines at a time.

However, the current project I'm working on alone is more than 250,000 lines of code, just for my part there must be well over 4,000,000 lines in the whole thing and I know many parts of it quite well, so that's valuable experience.

The trouble is, I've had to change how I try to conceptualise the code in my minds eye, either I will try to run just one function at a time - and I very aggressively try to functional-ize and divide my code down into smaller pieces to spread the challenge out over time.

I will use any and every tool in the workshop to get the job done, prototyping, process flow diagrams, SSADM, UML even just scribbles on a large piece of paper help.

All this is proving very effective in turning my time at my desk into useful development time, however, it leads to a rhythm in my working, I will sit with a pen, clicking, reading planning for quite a while and only then start to code.  And I think my sitting there doing all this pre-thought is looking like apathy.

Thursday, 14 February 2013

Been Ill

Sorry there have been no posts in order this week, I've been rather ill.

However, I'm back at my desk today on wards and I have a couple of projects brewing which might make for useful things for people wishing to spy on the kids and keep them safe whilst they browse the interwebs... So watch this space.

But other than that, I have just been settin gup a new google account for a customer so they can use it to receive mail directed from their website, this is all trivial stuff, but for some reason they'd rather pay me to do it for me... hey ho...

But I noted, the advert google had stuck into the inbox for me...

Why the hell have they decided that is a legitimate thing to do, call some random person to fix Outlook, and also why is there an advert like that, for Outlook, on google mail?... Pointless.

Monday, 4 February 2013

Toys in Space

Do toy makers know something the rest of us are not aware of?  I ask because I keep seeing projects like this:

And the registers own high altitude balllooning project, or this one from last year:

These people send these toys to tens of hundreds of meters and they come back down, seemingly unaffected by the old, the pressure or the speed... nor the impact!...

Why don't we make space craft as resiliant?... They need heat shields and alsorts of trixy gadgetry to get back to terrafirma.

Friday, 1 February 2013

Lorries and Compilers

Skat is a slag word for shit, and I bet that's just the word the drive used, in Polish or English... lol

In better news, our major project at work shipped, well my three portions of it did... The other guy, whom I've inadvertently mentioned was not doing his stuff, and not delivering much, and not being chased up about it... Is AWOL right now, with his portion of the project also AWOL... I'm glad its not me.

In other news I'm signed up to an online course in Compiler Design... I covered Compiler design very briefly in four lab sessions at university, where laughably the professor handed out a pre-printed stack of C code to each group of 2-3 people and said... "Find the Bug in that"... That was out introduction to compiler code, and that was all we did... Pretty poor, but my degree was conducted in the glory of the rising dot COM boom, everyone assumed (except me, who missed proper programming on the course) that web programming, databases and scripting would be the way.  We were one of the first courses to take to Java in the UK... Java 1.0 actually released whilst we were in our second year, but we'd used it before hand as a beta on the Sun machines in the lab.

Anyhow, long and the short of it, never had much of a grounding in compiler design, have had an interest in it all along, and touched on code generation from instructions in my CPU examples last year.  So, now I'm going to go back formally.

We'll be studying the "COOL" language, and producing an assembler for the MIPS CPU architecture .. I may end up porting this to my own CPU too, so watch this space.