Sunday 30 October 2016

The seventh week at QA began with me completing a couple of tasks using a software known as Docker. These tasks included installing Docker, creating a Jenkins container from the local directory, and then creating a Dockerfile.

Installing Docker and Jenkins were very simple tasks. Obtaining Jenkins in the local directory was done with the pull command. The task was then completed simply by running the Jenkins container and checking that the software had properly installed.

After these introductory tasks, I was then assigned a project that involved creating various Dockerfiles and launching them simultaneously with the use of a docker-compose file. At first I found that the Dockerfiles were harder to write than the Puppet modules I had written before, but as I got used to the syntax and the different commands, I quickly grasped what to do and completed the project at the end of the eighth week.

The tasks for the project included making Dockerfiles that installed different software. The software that needed to be installed included Jenkins, Jira, Nexus, Urbancode Deploy, and Zabbix. Zabbix needed both a server and an agent to be installed. Most of the software was simple to install and a couple even just needed an archive to be downloaded and an installer file run.

I ran into many problems while completing the project, but most of these were simple mistakes that were fixed in a matter of minutes once I noticed the problem. The main software that was difficult to install was Urbancode Deploy. This could have been simply due to the fact that I had never used it before, and everyone had problems installing this specific software.

Friday 21 October 2016

This week will have a main focus on the quantum suicide thought experiment, and how it differs in both of the main quantum mechanical interpretations.

Quantum suicide is essentially the Schrodinger's cat experiment, from the point of view of the cat. For this experiment we will define an event as a chance that the atom has at decaying. Assuming that there is a 50% chance for the atom to decay, then from the Copenhagen point of view, after the second event, there is a 75% chance that the atom has decayed, and so the longer the cat stays in the box, the lower the chance it has of surviving the next event.

However, in the many-worlds interpretation, the universe splits after each decay and each subsequent decay still has a 50% decay rate. Events in this interpretation are thus not dependent on previous events like they are in the Copenhagen interpretation. This leads to the cat always having a 50% survival rate for the next decay, no matter how many decays have occurred before.

Friday 14 October 2016

At the beginning of the fifth week at QA, I found out that I was to be doing DevOps. I started the path of DevOps with a task that involved me going through a set of tasks from a program called Puppet Quest. Puppet Quest is a guide to Puppet and was very helpful in learning the software. Puppet is a software that runs modules hosted on a master, these modules are run on agents, and perform various tasks, such as installing software.
After I had gone through all of the tasks in Puppet Quest, I have to make a module in Puppet that installs Java onto an agent machine. Puppet runs by using blocks of code to perform various tasks, such as executing a command, or checking a file is in place. Using those two types of block, I was able to get Java to install on the agent machine. First checking that the .tar file was in the shared directory and then copying it to the place where it was going to be unpacked using a file block. Command lines to unpack the .tar file were then implemented using exec blocks. Once the module was completed, it was pushed to an agent machine which ran the module and installed Java.
The next task was to create two agents, one which would install Java and one which would install Java and Maven. The Maven module was very similar to the Java module, but did not need command lines for the compiler. Getting the agents to install a unique set of modules was fairly easy. All that needed to be done was to edit a site.pp file to include the names of each node (agent) along with which modules were to be installed.

In the middle of the fifth week, we started a group project on Puppet which was to last until the end of the sixth week. The first aim of the project was to install several software through modules using Puppet. These modules ranged from being very quick and easy, such as Git, to being fairly long and arduous, such as Nexus. The process needed to be automated as much as possible, and my group managed to get it so that when all the files are in place, you only need to double click one file to set up the master and the amount of agents specified in the vagrantfile, and install all of the modules on the agents. The next part of the project was to install and use Puppet Enterprise and use that to install the modules. This took a while to complete and there were a few problems, but we eventually managed to get this working, although we could not find a way to get Puppet Enterprise to automatically accept certificate requests from the agents. The following task was to set up MCollective. This was an easy task as most of the things needed were already installed with Puppet Enterprise. The final task for the project was to set up Zabbix. This took a while, but there were not too many problems with it. My group set up a Zabbix server and agents, and provided access to the server through the web GUI. The last thing to be done in the sixth week is to give a presentation on the project.

Tuesday 4 October 2016

In the last technical blog, I discussed some basic concepts of quantum mechanics. This time, I shall expand on the Schrodinger equation and introduce the many-worlds interpretation.

As I mentioned in the last post, the Schrodinger equation is one of the main equations used in quantum mechanics. It is used to describe a particle in full detail. However, as the equation is a wave equation, this leads to the particles becoming probabilistic in nature. The modulus of the wavefunction gives the probability for a particle to have the characteristics described in the solution. Leading on from this, it is easy to deduce that there are many solutions to the Schrodinger equation, an example of this being the many possible solutions to the Schrodinger equation for a hydrogen atom, each solution represents the electron in a different energy level.

The many-worlds interpretation describes the probabilities as the universe 'splitting' into many different paths. For each quantum event in which there is a choice to be made, the universe splits into a number of paths equal to the number of possible outcomes. Each path is real and is completely separate, no longer interacting with each other after the split. Each of these worlds branches off orthoganally to all other worlds, making travel between them impossible. I find an easy way to visualise this is to think of a line, constrained to one dimension. You then add another line at a right angle to this line, and while traveling in the direction of the first line, you cannot travel down the second line. The same would happen with a third line, this time added in the third dimension, and the process continues for however many lines you need.

Schrodinger came up with a thought experiment to explain quantum mechanics. Known as Schrodinger's Cat, the experiment is set up as a cat in a box, with a vial of poison and a radioactive atom. The vial of poison is set up to break when the atom decays, the box is closed, and the cat is quiet. The idea is that the observer has no idea what is going on inside the box, the cat could be either alive, or dead. The wavefunction for the cat then has two solutions, known as eigenstates, one for each possible state. The Copenhagen interpretation states that cat is a wavefunction while not observed, and is thus neither dead nor alive, but that once observed, the wavefunction 'collapses' and the cat obtains a definitive state. The many-worlds interpretation states that the cat is a superposition of universes in which some it is dead, and some it is alive, thus the cat is both dead and alive. As time passes, the atom has extra chances to decay, at each of these chances, the universe splits into two, one world where the atom has decayed and the cat died, and the other where the cat has survived for another chance. Both of these interpretations show that the longer the cat stays in the box, the less chance of survival it has. However, things get a bit different when viewed from the point of view of the cat, and so in the next post, we shall delve into quantum suicide and see how.