As this semester comes to a close, so will my blog. This past semester has been an enlightening experience for me when it comes to the world of blogging. During these weeks I have learned a lot of valuable information when it comes to writing a blog, though I am sure there is much more I could learn.
The first thing I learned about that I think turned out to be the most important about blog writing I learned all semester is the importance of the topic. A topic for a blog must be something that first interests the author. If the author isn't interested in the topic, then the blog is doomed to fail from the beginning. In many cases author won't want to post anything on the blog and the majority of anything that is posted on the blog will lack quality of content. As a result, any readers that may find the blog will soon move on in search of better content. The topic must of course also be something that interests other people so that the blog will have a chance of attracting readers.
The topic not only needs to be something that interests the author and readers but it must be something that can be written about week after week. This point impacted my blog in a negative way. The first couple of weeks went okay but after that coming up with new content related to programming that would also appeal to a general audience became difficult to do.
The second thing I learned is that just like anything else in life, procrastination can seriously affect the quality of work. This semester I found myself procrastinating until hours before the deadline for our class to have our blog posts online. In some cases I managed to surprise even myself with how good the post that I created in a few hours sounded, but in many cases the quality of the posts just weren't there.
During this blogging experience I did learn some positive things about writing, largely in a blog setting. One thing I learned about writing blogs is just because the "Publish" button is clicked, the writing has not been forever set in stone, never to be edited. If a something in the post needs to be clarified or added, editing is not only acceptable but in many cases a good thing.
Knowing what I know now, if I were dropped back into the first day of class I would make a few changes to both my blog itself and how I went about maintaining the blog. The first thing I would do is find a broader subject still relating to computers. I think a better topic would be one that either has a lot of information already related to it or topic which has a lot of developments in it. I would also make sure to not wait until hours before the posting deadline to start writing a post. I would instead begin writing a post, a day or two ahead of time.
Wednesday, April 24, 2013
Wednesday, April 10, 2013
History of Computers (Part 2)
A few weeks ago, I wrote a blog post about the history of computers from the first machine truely considered a computer through a machine called "Colossus". To read that post, click here. This post will cover the history from where I left off through the modern computer.
In 1942, development of the ENIAC (Electrical and Numerical Integrator And Calculator) began. The funding for research and development of the ENIAC was largely provided by the U.S. military. The military needed a machine that could calculate the information needed for artillery-firing tables. These tables were used to communicate to soldiers in the field how to adjust the settings on the artillery in order to be accurate under varying conditions. Development was led by John Mauchly and John Presper Eckert. The ENIAC took about a year to design, once designed it took about 18 months and $500,000 to build it. In today's money that is almost $6.5 million.
After the ENIAC came a period where no real developments were being made in the world of computers. That is until the 1960's came around and the mainframe computer was born. Mainframe computers used technology from the Atansoff-Berry Computer, the Colossus and the ENIAC. Mainframe computers were largely used only by large organizations due to their high cost and large amount of space they took up. At this point in history there were no personal computers in use.
After this the components to make computers began to get smaller and cheaper to manufacture. This lead to the rise of the personal computer.
In 1942, development of the ENIAC (Electrical and Numerical Integrator And Calculator) began. The funding for research and development of the ENIAC was largely provided by the U.S. military. The military needed a machine that could calculate the information needed for artillery-firing tables. These tables were used to communicate to soldiers in the field how to adjust the settings on the artillery in order to be accurate under varying conditions. Development was led by John Mauchly and John Presper Eckert. The ENIAC took about a year to design, once designed it took about 18 months and $500,000 to build it. In today's money that is almost $6.5 million.
ENIAC
After the ENIAC came a period where no real developments were being made in the world of computers. That is until the 1960's came around and the mainframe computer was born. Mainframe computers used technology from the Atansoff-Berry Computer, the Colossus and the ENIAC. Mainframe computers were largely used only by large organizations due to their high cost and large amount of space they took up. At this point in history there were no personal computers in use.
After this the components to make computers began to get smaller and cheaper to manufacture. This lead to the rise of the personal computer.
Works Cited:
Abdelmoumin, Ghada A. "CSC 110
Class." Personal interview. Aug. 2012.
Bellis, Mary. "The History of the ENIAC Computer." About.com Inventors. About, n.d. Web. 10 Apr. 2013. <http://inventors.about.com/od/estartinventions/a/Eniac.htm>.
Wednesday, February 27, 2013
Brief History on Computers
A
computer is defined by Dictionary.com as "… an electronic device designed
to accept data, perform prescribed mathematical and logical operations at high
speed, and display the results of these operations." While there have been
many machines since early history that have helped humans perform these
operations, it has only been recently in terms of human history that computers
have existed. Computers as we know them today were not born overnight but
through many different computers that with the innovations made to them
improved computers as a whole.
One of
the first recorded machines that fit this description was the Hollerith Machine
which was made around 1890. It was invented by Dr. Herman Hollerith for use by
the Census Bureau who up until this point in history had performed the census
by hand every 10 years. The main problem that the Census Bureau ran into was
there were far too many people to be counted by hand; the Hollerith Machine
solved this problem. It accepted the responses from the census questionnaire in
the form of punch cards. When there was a hole in the punch card it would make
an electrical signal in order to make the needed calculations. After inventing
the Hollerith Machine, Hollerith went on to form the Tabulation Machine Company
which went on to become the modern day company, IBM. (Abdelmoumin)
(Hollerith Machine)
The next
machine, the Atanasoff-Berry Computer (ABC) is considered to be the first
computer in the modern sense. It was conceived during the winter of 1937-1938
by Dr. John Vincent Atanasoff of Iowa State College. It wasn't until 1939, when
funding was secured, that construction on the computer by Atanasoff and a
graduate student Clifford Berry began and it lasted through 1942. This computer
gave birth to many concepts still used in computers today. Some of these
concepts are binary arithmetic and separate memory and computer functions. It
weighed more than 700 pounds, and
contained about a mile of wiring. (Atanasoff-Berry Computer)
(Atanasoff-Berry Computer)
After the
Atanasoff-Berry Computer came Colossus, regarded as the first programmable
computer. It came to be during World War II as a tool for breaking the large
number of top secret high-level communications that were encrypted and then
sent using the Germans Lorenz Machine, code named by British code breakers as “Tunny.”.
Colossus Mark I was completed, moved to its permanent location, and operational
by February of 1944. In June of 1944 the Colossus Mark II, an improved version
of the Colossus Mark I, was complete. It operated five times faster than the
Mark I. The Colossus was the first computer to be able to do boolean
calculations which are calculations that return either true or false. The
Colossus was also the first programmable computer, although it was not
programmable in the sense of computers today. Today, computers are programmed
through software, the applications which are installed on the computer. The
Colossus was programmed through the use of switches and plug panels, which are
types of hardware. Examples of hardware that may be more familiar include a
keyboard or a mouse. (Colossus)
Next week
I will continue with the history of computers from after Colossus through
modern times
Works Cited:
Abdelmoumin, Ghada A. "CSC 110 Class." Personal
interview. Aug. 2012.
"Atanasoff--Berry
Computer." Atanasoff--Berry
Computer. N.p., n.d. Web. 27 Feb. 2013.
http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Atanasoff–Berry_Computer.html>.
"Colossus." Colossus. N.p., 2004. Web. 27 Feb.
2013. http://users.telenet.be/d.rijmenants/en/colossus.htm>.
"Computer." Dictionary.com. Dictionary.com, n.d.
Web. 27 Feb. 2013. <http://dictionary.reference.com/browse/computer?s=t>.
All images are from a Google image search.
Progress on my Program (2/27)
If you are new to my blog, during this semester I plan to create a program using the java programming language which will allow a user to store their passwords for easy access. In order for the program to function as I intend for it to, it needs to be able to interact with the user, store and at a later date recall records, and also have those records be encrypted to keep user data safe. Prior to this week I had figured out the code to be able to read records from a text file. I also figured out the code to be able to write a new entry to an existing text file. To see the blog where I show these two functions click here (Will open in a new window)
This week I have managed to get the remaining part of the write function working as I need it to. Last week using the write function I was able to add a new entry to the record that the program could access but I was not able to edit password that had already been entered into the program and saved. This week I managed to finally get that part to work and it sure was difficult. Below are a few screenshots that show this function working.
The first screenshot shows the my test file which contains entries and passwords to show how they would appear when this program is actually used. This is how the entries and passwords appeared before the program demonstrating the portion of write function I figured out this week. Below that is a screenshot of the command prompt showing me running this program. The reason that the password in the file is the exact same as the password as what the program says that it is plus a number is that there needs to be a way to distinguish passwords from each other even if they are the same. While demonstrating the program I change two password to show that using the code I don't have to reboot the program each time I want to change a different password And the final screenshot shows the program after I have run the program. Notice how the passwords under Entry1 and Entry3 have changed. That is due to the program working correctly.
This week I have managed to get the remaining part of the write function working as I need it to. Last week using the write function I was able to add a new entry to the record that the program could access but I was not able to edit password that had already been entered into the program and saved. This week I managed to finally get that part to work and it sure was difficult. Below are a few screenshots that show this function working.
The first screenshot shows the my test file which contains entries and passwords to show how they would appear when this program is actually used. This is how the entries and passwords appeared before the program demonstrating the portion of write function I figured out this week. Below that is a screenshot of the command prompt showing me running this program. The reason that the password in the file is the exact same as the password as what the program says that it is plus a number is that there needs to be a way to distinguish passwords from each other even if they are the same. While demonstrating the program I change two password to show that using the code I don't have to reboot the program each time I want to change a different password And the final screenshot shows the program after I have run the program. Notice how the passwords under Entry1 and Entry3 have changed. That is due to the program working correctly.
Wednesday, February 20, 2013
Progress on my Program(Part 2)
While I have been able to make two of the major functions of my program work very well there is still a fair amount for me to be working on before this program is complete. The first major thing that I need to work on is finding a solution to a problem that has arisen with my write function. While adding new entries to the end of the text file works perfectly, I run into the issue when I try and write anything to the middle of the file. One example of when the program would be doing this is when updating the password stored under an entry.
After I solve that issue the next two things will become my next concern. These are the delete function of the program and improving the overall user interface. With the interface I want to make it clearer to the user what commands need to be entered in order to cause certain results. It will also include making sure that the program runs smoothly without any unexpected errors appearing.
The final things that I will need to work on in the coming weeks won't be a focus of mine until I have the basic functions of my program coded(New entry, Edit entry, Delete entry and viewing an entry's password) and my current problem solved. These things that will be last to be worked out will be encrypting the entry names and passwords that are stored, and making the program be able to be started up from a desktop icon as opposed to typing code into the command prompt to achieve the same goal.
Progress on my Program(Part 1)
These past two weeks I have been working quite a bit on learning the java programming language and working on the code and interface for key parts of my program. I have also made a major decision regarding the final product that will be produced by the end of this semester.
The major decision I have made regarding my program is that I will not be coding a GUI into the program. My main reasoning behind this decision is the amount of time it will take, not only to further research how to make one but also the time it will take to design and then build the GUI. From the research that I have done thus far on the subject it is apparent to me that it will take quite a bit more research to find the information needed for me the be able to start making GUI's. The other problem with the research about GUI's is there may not even be the information I am looking for available to me. The other issue is the amount of time that will have to be put into first designing the layout of the GUI and then coding it. Due to the amount of time those two tasks will take, I don't think that I would be able to make significant progress on the GUI before the semester is over.
Instead of a GUI, I think that making the program command-line based would be much less time consuming and I am sure that it can be as effective and user friendly as a GUI. The only thing I need to make sure of is to make the commands available to the user very clear and make sure to check the final product thoroughly for any sections of the program which may not be as user friendly as I would like.
I have made quite a bit of progress in learning code that has helped with the coding of some of the main functions of my program. The functions that I have been able to write code for include reading a line of text from a document and being able to write records to a file.
The first thing that I learned how to do was have my program read a line a text from a text document and display the result on the screen. Below is a screenshot showing that I can indeed have a program read from a file. The text file that I have opened contains the text that the program is to read. In the command prompt window I also have open in this screenshot shows the result of the simple program I wrote to demonstrate that the code is functional. The main benefit to having this ability in my program is that it will allow the user to view their previously store passwords.
The major decision I have made regarding my program is that I will not be coding a GUI into the program. My main reasoning behind this decision is the amount of time it will take, not only to further research how to make one but also the time it will take to design and then build the GUI. From the research that I have done thus far on the subject it is apparent to me that it will take quite a bit more research to find the information needed for me the be able to start making GUI's. The other problem with the research about GUI's is there may not even be the information I am looking for available to me. The other issue is the amount of time that will have to be put into first designing the layout of the GUI and then coding it. Due to the amount of time those two tasks will take, I don't think that I would be able to make significant progress on the GUI before the semester is over.
Instead of a GUI, I think that making the program command-line based would be much less time consuming and I am sure that it can be as effective and user friendly as a GUI. The only thing I need to make sure of is to make the commands available to the user very clear and make sure to check the final product thoroughly for any sections of the program which may not be as user friendly as I would like.
I have made quite a bit of progress in learning code that has helped with the coding of some of the main functions of my program. The functions that I have been able to write code for include reading a line of text from a document and being able to write records to a file.
The first thing that I learned how to do was have my program read a line a text from a text document and display the result on the screen. Below is a screenshot showing that I can indeed have a program read from a file. The text file that I have opened contains the text that the program is to read. In the command prompt window I also have open in this screenshot shows the result of the simple program I wrote to demonstrate that the code is functional. The main benefit to having this ability in my program is that it will allow the user to view their previously store passwords.
The next function that I was able to learn how to do was take a line that the user enters into a program and store that line in a text file. This function will make it so that when the user goes to add a new entry into the program, their entry and password are stored and are therefore able to be accessed at a later date. Below are three pictures showing this function working properly. The first picture is of the text file before the write function is used to edit the file. The second picture is of the command prompt, first instructing a user to input the text they want written to the file, then telling the user that the text they entered has been written to file. The final picture is of the text file after the function has been used on it, as you can see the text that was entered into the program via the command prompt has been added to the text in the text file
Wednesday, February 6, 2013
Basic Information on GUI's
A basic GUI must contain at least three kinds of objects.
The first of these are components
which define an element which interacts with the user directly either by
getting information from the user or displaying some for the user. A few
examples of this would be a text field or a scroll button. A special type of
component is a container which is used to hold other type of components. You
can think of it as the window that is displayed when you run a program. The
next type of object that is needed for the most basic of GUI’s is an event is an object that represents some
occurrence such as pressing a mouse button or entering text. The final object
that is needed for a basic GUI is a listener which is an object that waits for
an event to happen; when it does the listener reacts to it.
When programming a GUI the relationship between these three
objects must be thought of. Even a button must be planned out so that the
programmer knows exactly what will occur when that button is clicked. Behind
each component that is added to the GUI there needs to be at least one event
and one listener in order for that component to be useful. The programmer must
define the event that will signal interaction with the component and also what
the program is to do upon interaction so that the listener can wait for the
interaction to occur. Once the interaction happens the listener then tells the
component that is has been interacted with so that the interaction can cause a
response by the program.
Rader,Cyndi.“Java GUI Basics” Web.6 Feb. 2013
Components of my Program
There are going to be four main sections of my program that
will allow it to run well and be user-friendly. The first will be the JAR file
which will serve both as the storage device for all the necessary files to be
used by the program. It will also be used to cause the program to start running
on its own without the help of any other programs.
The next section will be the GUI(Graphical User Interface)
which will allow the user to use the program with much more ease than a command
line based program would be. I will have one main section of the GUI which will
display a listing of all the labels that have been entered into the program. On
the top will be a bar with buttons to create a new entry, edit an entry, delete
an entry, and any additional functions that will be needed for a user to use
the program.
The next two sections will work together; they are parts of
the code that will store any new information provided by the user and then also
encrypt it to make the information more secure. The part of the code that
stores the information provided by the user will not be individually visible to
the user but will work together with the GUI in order to make information
stored by the user available not only right after the user hits the “save”
button but also every time that the user opens the program up. The second part,
the code that will encrypt any information provided by the user, will not be
visible to the user but will play an important role in keepings the user’s
information safe.
In some of my coming posts I will be discussing the makeup of
each of these parts for when I create them for my program.
Wednesday, January 30, 2013
Some Programming Definitions
The following are a few terms that I will be using quite a bit in coming posts. In order to have a better understanding of what I am talking about, here are a few of the terms and what they are. If I use additional terms in the future I will update this post with the new definition.
JAR
When building a program using the java programming language
probably the most important thing for the program to run is the JAR File. JAR
stands for Java Archive and the file is used to store all the information
needed for a program to run. In many cases it the JAR file is also used as an
executable file to begin having a program run. But in some instances a JAR file
can just be used to transfer components needed by a Java applet, or application.(Oracle)
GUI
A Graphical User Interface or GUI as it is commonly referred to is another very important part of any program in general. What a GUI does is it allows a user to interact with the program using visual icons as opposed to line of code appearing on a screen.("GUI Definition") One of the main benefits of having a GUI compared to a command line interface for any program or operating system is that the amount of prior computer experience required by the user to use the program. For programs with only a command line interface the user needs to have quite a bit of experience dealing with command lines. A GUI on the other hand requires very little knowledge of computers or experience dealing with them.
Encryption
Collins English Dictionary defines encrypt as “to put into a coded form”(Dictionary.com). When put into the context of information on a computer, encrypting data takes and makes it more secure by changing the data into a seemingly random jumble of code. In this form the data is completely useless to anybody or any sort of program. In order for it to become useful again is if the person or program has the key that was used to encrypt the data, if this is available it can then be used to decrypt to information back to a useable form.
Works Cited
Oracle.“Java Achieve Files” Web.30 Jan. 2013
“GUI Definition” 1 Oct. 2004. Web. 30 Jan. 2013 Dictionary.com. “Encrypt” Web. 30 Jan 2013
Wednesday, January 23, 2013
The Birth of a Program
This week I am beginning the process of building my program.
For a professional programmer either working for a company or independently the
first step to of the process is determining what the end product of the program
is to do. In most cases a basic description of this is provided by the person
or company who the program is being made for, it is then the programmer’s job
to ask questions to understand exactly what the boss/client wants. After
meeting with the boss or client, the next step is to take everything that was
learned from the meeting and break the program down into individual modules,
parts of the program. One thing I learned last week during my software design
class that really shows how important understanding the needs of the program is
that analyzing what is needed out of the program alone should take up about 35%
of the time spent making the whole program. Another 30% should be spent just
designing the program and how it will work. The remaining 35% should be spent
implementing the analysis and design, coding the program, testing the program,
if needed debugging any problems that arise and maintaining and updating the
code. It is critical that ample time be allocated to analyze what is needed and
design a program that fits the needs.
Since I am not making this program for anyone specific I
began this week with trying to figure out what I want the program to be able to
do. After ruling a few ideas out either for being far too difficult for me to
have a chance of finishing in 16 weeks or so simple that I could have to
program completely finished in a few days I thought of a program that with my
current experience will be a challenge to complete in 16-weeks but I think
could be possible to do.
The program will allow a user to enter and store a password
and give the entry a label, for example a user might store their password to
their Amazon.com account, so they might label it as Amazon. Once a user saves
an entry, that one and any added in the future, will be accessible via an entry
library which will display all the labels.
All of the information inputted by the user will be encrypted for
security and then stored. If the user wants, a password to secure access to the
entire library can be applied.
One other feature of the program I am considering including
in it would be a way so that when a user clicks on an entry they can press a
button that would open their internet browser to the login page for the site
their password is used on. If I were to do that I would need to have a way for
users to input the URL of the login screen for websites that aren’t included in
the program.
Tuesday, January 22, 2013
Welcome to my Blog
Hi I’m Cameron,
Over this next semester I will be
taking a program through as many stages of development as I can with the time
available. As I go through this process I’ll have to be learning a lot of the
code that will be used in the program because in the past, I have never made a
program to this scale. I will begin by deciding on the main goals of the
program, what I want it to be able to do when it is completed. The next step
will be to break the program into modules, each of while will be responsible
for a specific part of the program. After that will come a lot research to find
out how to form these modules using the Java programming language. Once my
research is complete I will begin using Java to write the code for the program.
Following that will be the testing and if necessary, debugging. Each week I
will try and highlight my progress, what decisions I have made and why.
Subscribe to:
Posts (Atom)