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.
Connor Melton QA
Sunday, 30 October 2016
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.
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.
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.
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.
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.
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!
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!
Subscribe to:
Posts (Atom)