Thursday 29 September 2016

The end of my second week at QA consisted of a project where I had to create a virtual machine using Vagrant. I had to configure the vagrantfile so that the virtual machine would automaticall install various programs. These programs included ones such as Java, Maven, Git, Jenkins, and Jira. It was fairly simple to set up the first four programs. Java and Maven simply needed the source file to be in the same directory as the vagrantfile, Git was downloaded and installed, and Jenkins was unpacked into a folder and ran from there. To allow the user to access Jenkins, I then had a line of code that copied the password to the desktop into a file that the user could then open and copy from. Jira first needed to be installed manually, then it created a file that recorded which options were chosen for installation. Using this file, I was then able to edit a few lines of code to enable the virtual machine to automatically install Jira using the settings that I had used previously. The file that it had generated needed to be placed in the same directory as the vagrantfile.

Although this was the main task of the project, there was also a bonus task of linking together Git, Jenkins, and Jira so that they would work together automatically. I was able to configure downloads for the plugins that would allow Jenkins to interact with the other two programs, but found it a bit more difficult to find ways to connect Git and Jira to each other, and back to Jenkins. I believe I would have needed to figure out a method to control a web browser in order to complete those final tasks. Unfortunately I did not have enough time to figure out how to complete this task, which is a shame, as I could have then set up Jenkins without the need to copy the password to the desktop.

The third and fourth weeks consisted of learning about Enterprise Architecture (EA). This consisted of creating many different types of documents, and going through various activities. This work was completed in groups. The aim of the course was to create an EA for a fictional company. To start with, we had interviews with some of the higher ups in the company, to figure out what was going wrong. We then moved on to interviewing members lower down, in order to gain more specific details that the more senior members did not know. Some of the documents that we created were a Business Model Canvass, a Terms of Reference, some Business Process Model and Notation diagrams, and a few others.

I unfortunately fell ill and missed the first half of the second week of EA, although this consisted of activities such as making and holding a workshop, creating User Stories and Use Cases, which are methods of explaining what goes on in a process, and various other tasks. The second half of this week ended with each team giving a presentation on what they had done, and a test on the EA course that we had just undergone.

At the end of the third week at QA, we were able to choose what specification we would like to go into, with the choices of Cloud, Mulesoft, DevOps, and Pega. As I had enjoyed learning about it previously, and it seemed the most interesting, I decided to choose DevOps. I believe we are to find out at the end of the fourth week or the beginning of the fifth in whether or not we were able to follow the path we would have liked to.

Wednesday 21 September 2016

Welcome to the first of four posts that are designed to develop an understanding of the many-worlds interpretation of quantum mechanics. Quantum mechanics is a vast subject in itself, and while the Copenhagen interpretation is taught most frequently, I personally find the many-worlds interpretation to be easier to understand and a more logical approach.

But before we delve into the specifics of quantum mechanics, we should first look at the connections to classical mechanics, namely decoherence, wave-particle duality, and the uncertainty principle.

Many people will be familiar with the concept of wave-particle duality, most commonly exhibited in the diffraction pattern of a beam of electrons when fired through a double slit. However, it is also present in light waves, which come in quanta of energy, known as photons. Many experiments have been carried out in order to determine whether light and electrons are definitively either a wave or a particle, but depending on the conditions, both answers can be achieved. Just look at the diffraction pattern for an electron, and it seems to be a wave, but look at which slit it goes through, and it behaves as a particle.

A key term in quantum mechanics is operators. Operators are simply a function that relates to a classical observable. For example, the position function in the x direction is given simply by x, but the momentum in the x direction has a partial differential in the equation. The uncertainty principle states that when two operators don't commute (it matters in which order they are applied), then these two observables must always have a product uncertainty of ħ/2. So position and momentum in the x direction would be an example of this, as it matters when a differential is applied. The most difficult thing to understand about this is that this uncertainty is a distinct property, and not a result of inaccuracies during measurement.

Most people who have heard the term quantum mechanics will have also heard of the Schrodinger equation. This equation is used to describe the physics of a quantum mechanical particle; it is essentially the quantum mechanical equivalent of Newton's Laws and conservation of energy. The Schrodinger equation comes in the form of a wave equation, and consists of a wavefunction, denoted by the Greek letter Phi, which precisely describes a particle, and a few operators. Operators describe a physical observable, everything has one, position, momentum, spin, energy, the list goes on and on. The Schrodinger equation employs two different energy operators. One side of the equation contains the Hamiltonian, denoted by H, which in turn consists of the Kinetic and Potential operators, which again consist of even more basic operators, moving down to just position. The other side contains an energy that depends only on time, denoted by E. A solution of the wavefunction that solves the equation is then found, and this describes the particle in varying degrees depending on the complexity of the Hamiltonian. The second equation here shows the expanded form of the time-independent Schrodinger equation. Time-independent simple means that we are assuming the energy to be constant over time.


Quantum decoherence is a theory that brings together many of the phenomena found through quantum mechanics. Put simply, it is an effect where many quantum particles in a system coalesce into an object that follows classical laws. Expanding on this slightly, when quanta collide with each other, they form an entangled state, and this reduces the amount of interference that they can experience, and so these quanta start to obey the classical laws of physics. This is showing that in fact, there are no classical laws, just quantum laws adapted to a large scale. This also explains the diffraction pattern of the electron, while passing through the slit to produce the pattern, there is no decoherence, and so the electrons are free to interfere with each other. Yet when a detector is placed nearby, the huge system of quantum particles affects the electrons in such a way that forces them to no longer interact with each other, thus displaying particle like properties[1]. So instead of the environment affecting the system, it is actually the system affecting the environment, with the electrons joining the system and so being in an environment that allows no interference.

1. Joos E. Decoherence Website [Internet]. 2012 [cited 21 September 2016]. Available from: http://www.decoherence.de/

Wednesday 14 September 2016

The first week and a half at QA Consulting has gone quite well. I have made new friends and learned new things.

The first week was focused mainly on Java, and while I had done projects in this language before, I only ran the program through the command prompt. Using and learning Eclipse was a new and fortuitous occurrence, for I was able to quickly adjust to the ease in which a class file could be compiled and ran. The syntax highlighting and auto-complete commands were also new and highly useful. With the help of these, I quickly re-learned what I already knew of Java and had the first four tasks done within the first day.

But then came the problem, although I had done work with Java before, I had not delved much into using multiple classes. While the concepts are familiar to me, the implementation was not. The topic was broached only briefly during my learning, and practiced a small amount, but not significantly. As such, I had some trouble with task 5, which involved creating multiple classes and objects which would all interact with each other.

After a couple of days of scouring the internet for information and examples, I became more accustomed to the use of objects, and when it was announced on Thursday that we were to have a test the following day, I felt confident that I could employ the use of these methods that the test was sure to contain.

And indeed, come Friday I was able to create a program that while inchoate, was functional to the point that I had made it. The only aspect that caused my final project to be incomplete and non-functioning was the lack of time permitted to the task. I worked with barely a pause and yet only achieved perhaps a 50% completion.

During the second week we started to learn about DevOps, in which I had no prior knowledge. To start with, we had to look up the uses of various software and create a Pipeline diagram for a generic system. We were then tasked with creating an Ubuntu system using a program called vagrant that assists in the installation. I found these tasks to be fairly easy.

The second day consisted of creating a CentOS virtual machine without the aid of any programs such as Vagrant. I found this task to be relatively simple and did not have much trouble with it. We then used the terminal to do a myriad of tasks, including making folders and files, and generating a new admin user.

The next day involved installing and running programs. This was a bit tricky as the files first had to be sent to the virtual machine, and then installed via the console, for which we used PuTTy. The programs were all new to me, but after some perseverance, googling, and asking my neighbours, I managed to finish all the tasks.

We have been told that on Thursday we are to start a project which will carry through to Friday, and that we get to finish at lunch time on said Friday!