Friday, 25 November 2016

Training Is In Full Swing.

Training Is In Full Swing.

Weeks 3 & 4 of QA Training.

View towards Anchorage: https://flic.kr/p/HGUZn3

Enterprise Architecture

Looking back on the first two weeks: EA was one of the least fun things I have ever done. We spent two weeks learning acronyms and buzzwords, filling out tables in word documents, preparing for tasks which we hadn't been taught how to do properly yet, and being told we were wrong. 

The whole course could have been done in one week if we'd had just cut out all the messing about and just learnt the content (of which there wasn't very much). But no, we had develop our "soft skills" (which we got no individual feedback on, it was just generic group feedback) and waste time conducting things like "facilitated workshops" which are literally the least efficient and least effective way of getting anything done that I have ever seen.

It is no surprise that about seven guys in our intake left during the first two weeks - it wasn't fun and we are not getting paid for it. Let's hope the course improves from here...

Not Learning Java

Week 3 and we are finally doing what we signed up to do (and what we were so grilled about at our assessment days!) programming in Java...

Oh but actually you didn't need to know anything about Java, or programming in general, as we got taught it again from scratch anyway.

So why did I sit that technical Java exam and technical interview on OOP in my assessment day?

Instead of being taught how to actually program to a professional standard (you know, like you might expect a professional IT consultant to be able to do?), I ended up spending the whole week programming a battleships game - which I already had the skills to do.

To end the week we then had to sit yet another technical Java exam, in which we had to answer questions about topics we hadn't even been shown during our one week of Java. It's a good thing I spent a week before my assessment day studying Java - because I feel genuinely sorry for the guys who were invited here without Java experience: we were not really taught anything.

Continuous Integration And DevOps

We are now in Week 4 and currently doing the "Continuous Integration and DevOps" course. Whatever DevOps is. Actually, I do have some understanding of what DevOps is now, but up until this point the term had just been thrown around casually by our trainers, and others in the company, and we were just expected to know what it meant.

Anyway, learning more about the development cycle post-code-writing (as well as setting up and configuring Linux systems) is something new to almost everyone in the room and people actually seem to be enjoying this course!

Although, it would be nice to have a physical Linux machine rather than having to build a virtual machine which uses the Ubuntu OS and do all our Linux stuff on there... It's kinda hard to install stuff when your VM doesn't acknowledge the shared folder you declared when you build it...


Our Specialisations 

We were also told what our specialisations could be this week. This is very exciting news as the next forty+ years of our lives will be defined by whichever technology we get trained in.

We will be trained in one of two areas:
  • Microsoft things: C#, .NET, and some other tools.
  • DevOps, whatever that is.
I am honestly not sure which I would prefer. The question is: "Which of these fields will be more in-demand in 10 years time?". 

It's difficult to say but today is the day we find out which one we're getting trained, so I guess we will just have to wait and see what happens. I'm sure both specialisations are great fields to be trained in. 

Outside Of Training

In other news, I have successfully set up something of a lunch-time board game club. Last week we played Ninja Camp, and this week we are playing Gloom (with the Unquiet Dead Expansion).

One of the other guys also brought in Exploding Kittens which is always good fun.

Thursday, 17 November 2016

A Brief Introduction To Processing.

A Brief Introduction To Processing.

Technical Blog 1.

https://processing.org/exhibition/
For my technical blog posts, I will be writing about the programming language Processing, which is the language which first got me interested in programming when I used it to visualise some of the mathematics I would studying during my degree.

In this post we will learn about the history of Processing, before getting stuck into writing a "Hello World!" program, and doing a bit on animation.

But first of all: what is Processing?

What Is Processing?

I say that Processing is a language, but really Processing is a framework for creative coding. Processing is a highly visual language: created specifically for visual design, and it is this feature which makes Processing particularly interesting, and particularly beginner friendly to even those who have never done any programming at all.

Processing is traditionally written in "Java", although other projects such as p5.js and Processing.py allow for Processing code to be written in JavaScript and Python respectively. It is also possible to create Android apps in Processing.

A Brief History Of Processing

Processing was first invented by Ben Fry and Casey Reas in 2001 at MIT's Media Lab while the two were graduate students there. [1]

Processing was based on Java because Java Web Applets were hugely popular at the time and allowed for Processing sketches to be easily shared online. (Since Web Applets are now redundant, writing Processing code in JavaScript using p5.js is now the best way to share Processing projects.)

Since the beginnings of Processing, the  Processing community has exploded and now Processing is looked after by the Processing Foundation.[2] There are also communities online such as Open Processing and the Processing Forums themselves.

As well as Ben and Casey, Daniel Shiffman (among others) has also contributed a large amount to the Processing community, writing several books and continuing to develop a large collection of video tutorials on YouTube. [3]

"Hello World!" In Processing

Firstly, you'll need to download Processing and get the IDE up and running. It should look something like this:

Processing IDE
As I mentioned above, Processing is a highly visual language, and so a "Hello World!" program in Processing generally involves drawing a shape on the screen rather than printing a line of text to the console. For example try typing the following code into Processing and clicking the "Play" button in the top left to run the sketch:
void setup() {
size(400, 400);
background(255);
stroke(0);
fill(0);
rect(100, 100, 200, 200);
}
You should see a black square on a white background:



Although I said we were writing Java code, you will notice that we did not create a class, or a main method, or set any access modifiers, or choose if anything was static. Processing does all this in background for us, so all we have to do is call the "setup" method 
void setup() { 
 and type our code.

So what did our code actually do? Firstly, the setup method is a special in-built Processing method which is the first thing which runs when you press "Play" and start your sketch. Setup runs exactly once - which will become important a little later.

Next we specified the size of the window to be 400x400 pixels,
size(400, 400);
 declared the background to be white - 255 in grey-scale (the default background color is grey if you don't specify a colour) ,
background(255);
and then drew our shape by specifying the stroke (outline) colour, the fill (body) colour and telling Processing which shape we want and where we want it to be:
stroke(0);
fill(0);
rect(100, 100, 200, 200);

Again, the colours are in grey-scale so we get black. The rect function draws a rectangle with the top left corner at (100, 100) pixels from the top left of the window (or "canvas") with a size of 200 pixels wide and 200 pixels tall.

Animating Our "Hello World!" Program

Our black square is all well and good, but it isn't very exciting, so let's spice things up a bit by making it move. Animation is what Processing was designed to do.

Type the following into Processing and run the sketch:
int x = 0;
void setup() {
  size(400, 400);
}
void draw() {
  background(255);
  stroke(0);
  fill(0);
  rect(x, 100, 200, 200);
  x++;
}
You should see the rectangle we had before, but now it is moving across the screen from left to right!

We've just made use of Processing's "draw" method. This method runs after setup() has finished and loops once per frame until you close the window. The "setup draw" structure, together with the built in drawing functions, is what makes Processing what it is.

So what did we do in the above code?

Firstly, we created the global variable "x" in the usual Java way (but without worrying about access modifiers or static-ness) and initialise it at 0, this will be used to specify our rectangles x-coordinate.

Next, our setup method only needs to specify the size of the window, as everything else will be done in draw.

Now things get interesting. Inside draw, the first thing we do is set the background to white. This reset the canvas to plain white at the start of every frame - removing anything we drew in previous frames (you can try moving the background function back into setup and see what happens!).

After drawing the background, we draw a rectangle as we did before, but this time we use our global variable x instead of hard-coding a horizontal position.
rect(x, 100, 200, 200);
Finally, at the end of the draw loop, we increment the x value by 1. This means that the rectangle will be drawn 1 pixel to the right during the next run through the draw loop - creating the illusion of movement.


One Final Fun Example...

To finish off for this post, I will leave you with a fun little example utilizing some more inbuilt Processing functions.

This code should draw a randomly sized, randomly coloured circle at your mouse location each frame.
void setup() {
  size(400, 400);
  background(255);
}
void draw() {
  float r = random(255);
  float g = random(255);
  float b = random(255);
  float a = random(255);
  float diam = random(100);
  noStroke();
  fill(r, g, b, a);
  ellipse(mouseX, mouseY, diam, diam);
}
Have a look at the Processing reference page and try and work out what each line of this code is doing.

In my next technical post, we will be looking at some more advanced Processing concepts as well as using Processing to visualise some interesting mathematics.

References 

[1] https://processing.org/overview/
[2] https://processingfoundation.org/
[3] http://shiffman.net/

Thursday, 10 November 2016

First Steps Into Professional Life.

First Steps Into Professional Life.

Weeks 1 & 2 of QA Training.

Salford Quays: https://flic.kr/p/dD8R2r

Some Background

I never expected to become an IT consultant.

In fact whenever someone appeared on a daytime TV game show saying they were an "IT Consultant" I would consider it a life goal to never be like them.

During university the plan was always to do a PhD and continue academia. I was genuinely passionate about studying mathematics, I was achieving high grades in the vast majority of my modules and my lecturers were fully supportive and expecting me to do a PhD.

Unfortunately, when I applied for PhD's I was unable to secure funding. This came as somewhat of a shock.

The fact of the matter is; academic funding is closely tied to politics - and the political climate is not favourable to research in pure mathematics at the moment. There just wasn't enough funding available, and on top of this, the standard of candidates was unusually high this year.

This was a problem. I had never given any thought to what I wanted to do if a PhD wasn't possible.

Having finished university with no clear plan for the coming year, I had to sit down and think about what other career sectors I was interested in. After some thought I realised that the IT sector was more appealing than I first thought.

Getting Into IT

The main feature which attracted me to mathematics was the problem solving. I love the feeling of overcoming a difficult problem which I've been stuck on for some time - and the other place where I had found this feeling was in the world of programming.

My programming journey began quite late for someone who is now an IT professional. I had never been inspired to even try writing code until my Stochastic Processes lecturer showed us a simulation of one of the processes we were studying - and I suddenly became inspired to learn how to visualize the mathematics I was studying using code.

That example was written using Processing - a Java based language which I will be written much about in the coming weeks - and it is Processing which I have to thank for getting me in to programming.

Over the next year I did more and more in Processing, as well as learning Python. I eventually used both of these languages in my Final Year Project (which I had to do as part of the fourth year of my degree) to visualize an example of an abstract geometric object which I was studying for my project.

As well as programming as part of my final year project, I also started attending York Code Dojo - a programming meet up in York where programmers in the area got together to eat pizza and solve some interesting programming problems. These problems would be very different from anything seen in the daily life of a professional programmer, and designed to be approachable by all levels of programming ability.

These experiences very much helped to guide me towards the IT career path, and soon enough I was sending out CV's and applying for any job I thought I stood a chance of being any good at.


Route To QA

Having finished university and moved back home to Salford, I spend the majority of my summer applying for jobs, attending interviews and trying to improve my programming skills.

I was advised that front-end web development was a good area to get into as there are many jobs available and learning and showcasing your skills is particularly easy (just make a fancy portfolio website with a bunch of cool web games on it!). I put a lot of work into learning HTML, CSS and JavaScript and even completed the FreeCodeCamp Front-End Development Certificate. Doing all this, however, only made me realise how much I disliked web development (although making web games is kinda fun).

During the job hunting process I got a call from a recruiter at QA who described a career to me that sounded very appealing. I did a phone interview and was invited to an assessment day.

The presentation at the assessment day helped convince me that QA was a good choice to start my career, and after I got the call informing me that I had been selected to join QA I was relieved that the job hunting processes was finally over. I'd had enough of job applications and interviews.

And now here I am, sitting at a computer in QA, writing this blog...

Tuesday, 1 November 2016


TEST POST

public class TestPost {
    public static main void(String args[]) {
        System.out.println("Hello World!");
    } //close method
} //close class