Jamie's Blog

The ramblings of a programmer with a little too much time on his hands

Tag: Employment (Page 1 of 2)

Where Have You Been [2014 edition]?

So I’ve not written since March 12th… almost 3 months ago. What’s happened since then?

I’ve moved 60 miles, gotten myself a new job and ran a 9 minute mile.

A New Job?

That’s right. I’m only a week into my probationary period at the minute (3 months will fly by, right?). I really like the company, and they seem like a cool bunch of people to work with. I wont name them, but they’re a cool company who have won a whole bunch of awards for what they do.

Psst. They came up with [Twitition] as well as a bunch of other things.

The work is a slight departure from what I’m used to. Actually, scratch that. It’s still software development, it’s just in a slightly different target environment from what I’m used to.

I’ve written a lot of applications that run on specific operating systems. A lot of what these guys do is on the web/cloud. It’s the languages I’m used to, but on a platform that I’m not. This means it becomes a neat challenge to me.

Plus I get to stretch my JavaScript wings a little. I’ve not used much JavaScript recently – aside from the main page of my site [LINK]. Which reminds me that I really should get around to buying an SSL certificate at some point.

I really like the job, the people, and the office. Not to mention the location.

A 9 Minute Mile?

Yup. I’m just as shocked as you are. At the time of writing this, it was last night. I ran a 9 minute mile (the app I used actually reported it as 8 minutes and 56 seconds), then let out a little (read: “really loud”) “YES!” but kept going.

My next mile was 9 minutes 59 seconds. Followed by a 10 minute 20 second mile – on account of having to cross a busy road and there being lots of traffic. My final mile, if I’d have pushed through to a full mile (but I’d gotten back to where I started from, and decided that I’d ran enough), would have been a 9 minute 37 second one.

Here’s a [LINK], so you can see for yourself. The strange thing is that it’s all uphill climbs around here. I set off running up hill, continued to run uphill, then returned by running up hill.

There’s not news other than those two. I’m still training, and I’m hoping to run a 10K at some point before August. 10K is just over 6 miles, and I can run 3.4 miles in 33 minutes and 40-something seconds (on a good day). I’ve just got to up my stamina and I’ll be finishing a 10K in an hour and change.

Let’s do this!

Folding and Libraries

Libraries

I was once asked what I considered an excellent question in an interview. One I managed to screw up completely.

Why do we used standard libraries in place of our own code?

The context for this question was this: I’d just completed a task were I had to, in pseudo-code, implement a function for combining strings. I think I ended up with something similar to this (again, this is pseudo-code):

[sourcecode language=”cpp”]
string CombineString (string firstString, string secondString) {
//create a new string with enough space for both strings to be copied
string combinedString = new string;
combinedString.malloc(firstString.GetLength() + secondString.getLength());
return combinedString = firstString + " " + secondString;
}
[/sourcecode]

Firstly, this wont work. Secondly, this isn’t what I wrote up on the whiteboard that day. This is just a naff example to give you some kind of context with which I was approaching the question.

Now then, the question itself is very simple to answer:

Standard libraries have, we assume, been through a rigorous testing procedure to make sure that they conform to the design documents perfectly, and to make sure that there aren’t any bugs. They are also very simple to implement, compared to designing a library yourself and having to teach the entire team how to use it. They save time, money, and improve productivity – assuming that they are the right libraries for the right task to begin with.

Simple, ne?

I forget what my answer ended up being, but I don’t remember saying much along those lines.

Folding

Most of the past few weeks has been taken up with building muscle/working out, watching The Soprano’s (I’ve never seen this before) and folding. Although, I’m implying that I’m the one whose done all the folding.

I’ve instructed my PC to use the spare cycles on 3 out of my 4 cpu cores and my gpu core to help understand the process of protein folding. A lot has been said about protein folding, and most of it can be found on The Wiki. Needless to say, I’m doing my part. I care for a lot of people, and the problems that CAN be linked to improper folding of proteins are huge.

My PC is still running very efficiently. I’ve got to hand it to the guys over at Stanford, they know how to write a really good piece of distributed code. I’m still able to browse the Internet, watch videos, and even play games. Excellent coding guys.

Watching

I know that The Soprano’s ended back in [goes to check] 2007, but it takes me a while to get into American TV shows, mainly because there’s that much out there. I don’t want to waste my time and (more importantly) money on something that I’m not going to enjoy. I’ve got to say that I’m enjoying The Soprano’s very much, though. I’ve only just started season 2, but it’s drawn me in already.

Plans For The Weekend

Well, that’s this short update done. I’m hoping to get some coding done over the holiday weekend (4 day weekend!!!), and whatever I get done is getting posted on here. Maybe I’ll come up with something interesting. Probably not, though.

Well, have fun.

J

FizzBuzz

Edit (19/01/2013)

I have edited this post on the above date. However, the only change that I have made is that I am now hosting the source code (found at the end of this post) on GitHub. This means, that if I need to make a change to the code, I do not have to edit this post again – as it will pull the latest version of it from the relevant page on GitHub whenever it is accessed by a reader.

Firstly, I realise that I’m not the best developer in the world. I can, certainly, hold my end up in C++; read a lot of C and understand it; work my way through a C# listing with confidence; understand enough of an assembly listing to VERY vaguely get what it’s doing.

Secondly, I’ve been using twitter and the blog-o-sphere for a few weeks now, to try and figure out what’s missing from my virtual tool kit (if you like) of developer skills. So far, the answer has been a resounding “Experience is better than a degree”

For instance, Gaven Woolery over at #AltDevBlogADay mentions that (and I’m paraphrasing):

In this age, with the relative ease of access to both online and offline tutorials/books/whatever, and the relatively un-homogeneous structure of Computer Science degrees in most Higher Education facilities, what’s the point of going to [University] for 4 years, and racking up a large debt, when you can just learn all of that at home?

Here’s a link to the original article : Link

This all is beginning to make sense to me. Don’t get me wrong, I thoroughly enjoyed my studies at University. But there where a few modules (known as classes to some) that were better studied at home, or in the labs than sat in a lecture theatre. Then again, there were modules that required that level of theoretical understanding.

I like to think of Computer Science being a perfect marriage between both vocational and non-vocational training.

This leads me onto something that Richard Banks blogged about in the middle of 2009: Some “Developers” Just Can’t Develop. Basically, his argument is for testing new recruits DURING the interview process. Something I have taken part in for some (not all) of my interviews.

I remember during one interview, in the middle of a question even, the interviewer got up and asked me to write some code “it can be in any language you want, even psuedo code,” to copy two strings

Because of my experience, I can certainly see what Richard is talking about. The cost of hiring the wrong person can be crippling. That being said, he links to a post from early 2007 (a year before I graduated, for those who want to know) by Jeff Atwood called “Why Can’t Programmers.. Program?”

The main thrust of Jeff’s post is to promote the idea of using a standardised test during interview processes to find out if the candidate is “good enough.” That being a completely subjective term (some companies require different skills from their employees, especially graduates), he even goes on to say:

Like me, the author [of, yet another post] is having trouble with the fact that 199 out of 200 applicants for every programming job can’t write code at all. I repeat: they can’t write any code whatsoever.

The post Jeff refers to mentions a test that is used by some professionals to see if a candidate can solve “simple” tasks.

FizzBuzz

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Fain enough, that’s quite easy. One for loop and three checks. Easy.

Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes. Want to know something scary? The majority of comp sci graduates can’t. I’ve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.

What!? How is that possible?

I really hope that the teaching of programming has improved since 2007, otherwise graduates haven’t got a chance of getting that juicy development role they tell themselves they deserve.

In fact, I think it has improved. At least, my experience of the teaching of programming seems to have been quite an amazing one and I’ll prove it to you.

Taking that basic task, I created a solution with 17 lines (including white space) in, roughly, 3 minutes (damned keyboard’s too stiff) that solves this problem; and it goes a little something like this:

I usually have extra newlines in there for formatting and clarity. But I think it looks just as good without them.

There you have it.  A solution to a simple problem in less time then a “self-proclaimed senior programmer” and, dare I say it, an elegant solution, too?

J

Supposed Recent Flagelation Monkey

Recently

Over the past week or so I’ve been reading a story written by a friend of mine. I’m sure I’ve mentioned this before.

It’s a really good piece of fiction set in the Star Wars universe, shortly after the battle of Hoth. It follows a small band of survivors from the battle as they try to make their way to safety across the ice ball. It also details what happened once the Imperial forces had taken over the Rebel command centre on Hoth, too.

For those unsure, the battle of Hoth took place during the first 30-40 minutes of Star Wars Episode V: The Empire Strikes Back.

Another thing that had happened recently, is that I’ve been bitten by the programming bug.

Ever since graduating, I’ve occasionally had to battle a very intense need to program something, anything. I’ve been writing lots of silly little programs that do very little, and take seconds to compute. I’m thinking of putting more than a  few of them up on my website, but that’ll have to wait until the weekend at least.

One of the (many, many) reasons – aside from being a programmer, of course – I’ve been bitten by this bug, is  because my contract of employment is due to run out in 7 weeks time and that means I’ll be unemployed again. So, I’ve taken this time to air out my programming skills and start earning some major kudos by coming up with as many program ideas as I can.

Side note: “Program” as in to program a computer – is is “Program” or “Programme”? I can never remember

I really want to, finally, get into a games programming role somewhere, and bolstering my portfolio of work with some working titles (even if they are naff) will help me to apply to those jobs.

You see, much like a graphic artist, programmers need a portfolio of work to show off. The final program itself doesn’t really matter, it’s the steps that the programmer has been through to create that program, and the “elegance” of the code.

For instance:

[sourcecode language=”cpp”]
/* famous "hello world" code */
using namespace std;
int main () {
char ch;
cout << "Hello world" << endl;
cin >> ch;
return 0;
}
[/sourcecode]

Is not very elegant as a first time programmer might not know what lines 4 and 6 do. However:

[sourcecode language=”cpp”]
/* famous "hello world" code */
// this code uses a char type called ch
// to hold the input returned by the user
// in an effort to stop the program from
// executing too quickly for the user to
// see it
using namespace std;
int main () {
char ch; //here we create a char
cout << "Hello world" << endl;
cin >> ch; //here we use the char to
//temporarily halt the program
return 0;
}
[/sourcecode]

Makes a lot more sense, as the program’s function is explained to the reader.

Anyway, there are volumes and volumes on code elegance, and I shan’t repeat what they say verbatim.

What Else?

That’s pretty much all that I’ve been up to, to be completely honest. Although, I did purchase the components for a PC upgrade last week. When it was delivered, I checked the invoice details with the items I was sent and it turns out that the company had sent me the wrong ram. This means that my PC has sat idle, without ram throughout the entire weekend. Which is why I haven’t been able to upload any of the code I’ve written recently

That’s about it, really. that’s all I’ve been doing since I last posted.

I’ve another post lined up for later on today/at some point tomorrow, though.

Stay tuned.

Conflicting Emotions

Note: this post was delayed by one day on account of my Internet connection going down

Happy Returns?

Today was my 25th birthday. One quarter of a century has past since I was born. One score and five years ago, I came forth into this world.

All right, enough of that

I looked in the mirror today, and felt a wave of emotions come crashing over me.

First I was happy, excited even. I don’t usually get excited about birthdays, much less my own. So this was strange. Maybe I was just happy and had brushed my teeth extra hard, providing me with a fluoride rush (is there such a thing?).

Then came the sadness. For some reason my mind fixated on the fact that I was 25 years old (roughly 1/3 of my life expectancy – as I calculate it), and wanted desperately to list all of the things I had accomplished.

  1. Attained a degree in Computer Science
  2. Studied Japanese for five years

I was sure that there where other things, but couldn’t really list them.

Accomplishments

OK, so I hold a bachelors degree in Computer Science with a specialisation in video games development. That sounds quite impressive, if I do say so myself. However, I can’t seem to get a job doing anything even mildly related. I’ve put it down to the fact that we’re on our way out of a recession – one that started just as I graduated back in ’08. I seem afraid to admit that I might not be the best candidate for the job, though.

Maybe the reason I haven’t been successful is that I haven’t applied to any games companies directly, which means I haven’t had a need to build up a portfolio of games work that I can submit to them during the application process. I did have an interview for CodeMasters, but from the questions I was asked it was clear that they wanted someone with an MSc rather than a plain old BSc.

The other jobs I’ve been applying for have been Software Engineering ones. I’ve applied for them simply because the core techniques involved in Software Engineering and Gamed Development are the same, mainly the development models (Waterfall, RAD, Milestone, etc) . The only difference is that Games Developers are trying to squeeze every last drop of power out of the system using extremely low level programming languages like C or C++; whereas Software Engineering (especially the roles I’ve been going for) have been web development mixed with a lot of high level stuff like .NET and C#.

I can hold my end up using C# and .NET, and I appreciate that there are times when high level, managed code is essential, or even better at doing the job. But coming from a background of assembly, C and C++ I’m more comfortable in those languages.

The other main problem with Software Engineering roles is that there is a list of requirements as long as your arm that the applicant has to have. Things like:

C#, PHP, .NET, SQL, Ruby, CSS and Abab experience essential

And that’s for an entry level Software Engineer? Where is a fresh graduate going to gain experience in all of those languages? Seriously. Especially since one of those is a proprietary language and only available through an expensive licence.

Japanese Study

Yes, I’ve studied Japanese for five years. I can hold my own in a conversation – so long as the person(s) I’m talking to don’t mind being a little patient with me – and I can read my way through simple manga.

All this, and I’ve only had the chance to go once!? And for only a few weeks!?

I’d thought – once, a long time ago – that I could use some Japanese language training to help me get a job out there doing (surprise, surprise) video game development. But that seems to have gone the way of the Dodo, too.

Compromise?

I’d spend less time thinking about this kind of thing, if it weren’t for the fact that my current employment contract runs out in six weeks. There’s talk of keeping me on, by to be completely honest, I’m not sure if I want to do it.

As my good friend Leigh said, a few weeks back:

You feel like your stagnating…

And he hit the nail right on the head. I really do feel like I’m stagnating. I’m not using the skills and techniques I’ve studied over the years, and I feel that they’ve started to get a little rusty. I don’t feel like I have to time to brush up on them either, at the minute. On top of that, I feel like I’m stuck in this city – with no job prospects here, I really HAVE to move on, but can’t seem find the funds or employment that will allow me to do it.

Maybe I should just stop thinking about all this, and go with the flow; ride the waves, so to speak.

Maybe.

J

(Searchin’ Searching’) For So Long

As I’ve said previously to friends:

I think, very much like Scott Pilgrim, I’m over my mourning period. Time to get the hell on with my life.

The only thing that seems to be holding me back is the fact that I’m not in stable employment. Without stable employment, I can’t truly get out of the rut I’ve found myself in. The rut which seems to be affecting my state of mind.

Yeah, I’m fine with my hair falling out; yeah, I’m fine with being overweight (something that I can change quite easily, once I find the motivation); yeah, I’m fine with being a bit of a nerd/geek/polymath (delete as appropriate). But what I’m not fine with is that I can’t seem to find the motivation (or funds) to get out of my parents house for good.

Don’t get my wrong, I love living here – free food, free bed, folks on hand for companionship and advice – but I want to get out and see the world. I know that some of you will be crying out that I travelled all the way to Japan a few years back, whilst that is true, it’s my singular experience out of this country. I just want to get out of here.

I feel like I’m wasting away – not just myself but my life, too.

J

Episode MMXI – A New Hope

Revelations?

After my realisation that, at least for the moment, the JET programme and myself are not meant to be, I’ve resolved myself to looking at my other options for when my current work placement/contract runs out (in a less than a month).

I’d love to be able to step straight into a games development role, as that’s what I’m trained to do, but without a portfolio or any working ideas I’ll find it difficult. I could spend some time working on an idea (probably alongside a collaborator of mine), in fact, I’ll probably end up spending some time working on a shared idea with him after his dissertation is due.

I’m looking less seriously at standard software development roles, as the techniques, languages and structures used are as different as a Phillips recessed head screwdriver is to a Robertson screwdriver – in that, they both achieve a very similar task, except one (games dev) is designed for one very specific task, whereas the other (software dev) is designed for a general purpose task.

A real world (programming) example of this is XNA (used to develop video games for the Xbox 360) vs SQL (used to probe databases). Whilst XNA has libraries of functions available to allow it to do, pretty much, anything you want; whereas SQL is purely used to retrieve and format data from a database.

Another Option?

My other option is to jump back into education. A prospect that is looking even more tantalising by the second. My hope is to take a second undergraduate degree, in Japanese language.

Obviously, my potential barrier here would be the funding side of it. With the current lift on University fees, I could be looking at somewhere in the region of £9,000 per year of study. Most of the degree courses I’ve been looking at are 4 year courses, too – with a year out in Japan, either at a Japanese University or in industry. Luckily, the Universities I’ve been looking at are offering the degree course I want to study at around £3,300 per year. The sum total for tuition, therefore, will be in the region of £12,000 – doable, but I’d have to source it myself.

Obviously, if I applied I wouldn’t start studying until September of 2012 – assuming that the application process for 2011 entries is over. So, that gives me time to get some cash together for fees for the first year. I’d still have to look at the housing and food costs, but I could cover them by working while I study. I suppose it all depends on how much I’m entitled to via the bursary systems – if I’m entitled to anything.

There’s also the option of a scholarship, or part-funding from a scholarship entity. I’m going to be looking into that, too. Maybe the Japanese Embassy would help to fund students who were serious about studying Japanese. Maybe there are some scholarship entities out there that can help fund my study.

Even More Opportunities?

Of course, there is another option. During my web searches earlier, I happened on the Daiwa Anglo-Japanese Foundation; which is a charity set up to help build bridges between Japan and the UK, and guess what: They offer scholarships for 19 months of intensive study in Japan. I’ll be applying for this, too. But that’ll be in September of this year.

Looks like I’ll be waiting around a little longer, but at least I have some kind of clear vision in my mind as to where I want to be. I’m not much of a wishing person, but I was planning on doing this back in ’09, and really wish that I’d have done it then rather than my usual: procrastinate until it’s too late.

Anyway, this is a slightly happier J signing off.

またね。ジェイミーより。

Daiwa Anglo-Japanese Foundation

More Web Development

So, today I was sitting with a lovely gentleman at work who wanted a website developing; which is cool…

Kinda

Those of you who know me, and maybe a few of the more avid readers (‘Do I have any Internet stalkers yet? No? Shame‘) will know that I’m a software developer, and that I dabble in web development (see my website: www.taylorj.org.uk as an example). I’m not great at it, but I can hold my end up.

You do that around here, and you’ll get your temperature taken

Lt. Colonel Henry Blake

I’m not brilliant at CSS or flash, but I feel confident in HTML.

The Request

So, the request from this gentleman (who shall remain nameless) came off the back of the work I’d done (and am continuing to do) to advertise ARKH; which is where I work.

Side note: If any of you get the chance to check out some of the work these guys [ARKH] do, I would heartily reccomend it. They are all awesome!

So I was chatting with this gent, trying to figure out how we could go about building a website for his stuff – to advertise the football team he manages. A team you should totally check out, by the way Spring Bank Tigers is what they’re called.

We ended up settling for a blog rather than a full blown website. This was due to the ease of adding content. There’s no real need to jump hip deep into HTML/CSS to add content to a blog. Sure there are things you might not be able to do, but for what he wanted to do a blog seemed more than perfect.

Just thought I’d let you guys know about that.

Also, I apologise for the blatant advertising.

J

Continual Development

As many of you will know, I’ve been having a few interviews as of late. The one thing that has come up from these interviews is that I have no training in SQL (Structured Query Language or Standard Query Language)

Pronounced: ESS-Queue-ELL

NOT: Sequel as most recruitment people think it’s pronounced

Anyway, since more than a few of the companies I’ve interviewed with have asked:

Have you experience with SQL?

I’ve had to answer in the negative, but try to assure them that I pick things up quickly. I’ve had enough of having to provide a negative answer in these situations, so I’ve started to learn SQL.

An Insomnia Cure?

I’ve bought a mobi (Kindle eBook) on SQL, and have been attempting to learn SQL from that. the only problem is that I keep losing consciousness. The reason:

SQL is boring!

At least SQL is exceptionally boring from a Procedural Programming point of view; mainly because it’s not a procedural language. Even so this is the first time I’ve ever read a book, and lost consciousness because the subject matter was THAT droll. Whenever my brain is active I can’t switch off, and when reading my brain is pretty active.

For those playing the home game, a procedural language is a computer programming language that the programmer uses to enter code using a defined set of procedures to attain a goal. An example would be brewing a cup of green tea:

  1. Get mug
  2. Fill kettle
  3. Boil water
  4. Add tea bag to mug
  5. When water has boiled, add to mug
  6. Leave to brew for 2-3 minutes
  7. Remove tea bag
  8. Enjoy

Whereas SQL is non-procedural; which means that you don’t tell it how to get the answer, just the answer you want. The DBMS (DataBase Management System) takes your answer request and reads through the database, finding you the answer when and where it can.

This is not to say that I don’t like all non-procedural languages. I enjoy the challenge involved in the construction and deployment of Prolog statements and functions. (If you value your sanity, you’ll avoid using Prolog wherever possible)

I think that my dislike from SQL must come from the extreme importance ‘experts’ place on it. I’ll agree that a £30k salary is worth defending, but not at the cost of (seemingly) inventing words in the middle of conversations just to justify your massive pay check.

Anyway, that’s a topic for a rant at another time

Have fun,

J

Funnnnding

There I am, at work, doing my daily grind – which really has become a daily grind, since I started completing my day’s worth of work 15 minutes after stepping in – when I hear something quite shocking.

No, it wasn’t the incident over in Korea. Which, I’ll grant you is one hell of a lot more shocking than what I’m about to tell you.

Apparently, the place where I work (that doesn’t seem grammatically correct, but I’ll leave it there) have had their funding pulled.

This is terrible news. It means that, effectively, we have to down size dramatically. Strangely enough, I’ll still have a job, but no where to go and do it.

I’m working for a Charitable organisation, you see. An organisation that relies on funding from both the public and private sector. Funding that, as I have mentioned, has been cut. A bunch of people were concerned about it last week, and they’ve received notification today, that the funding for the rest of the financial year (until April 2011) has been cut in half.

As I mentioned, this affects everyone who works there, except for me. Kind of.

My wages are paid by a third party, namely the Government. In theory, this means that I’ll continue to get paid, regardless of what happens. But it’s still quite disconcerting to know that the funding has been spliced in half.

Hopefully you’ll understand, dear readers, why I put off yesterday’s post.

J

Page 1 of 2