Monday, October 24, 2016

How do you release a software?

A software release life cycle is a channel of all the stages of product development. It starts with initial development and testing and ends with release of a software/product. This post talks about each of this step, based on the picture below.

Pre-alpha: 
Pre-alpha refers to all activities performed during the software project before formal testing. These activities can include requirements analysis, software design, software development, and unit testing. In typical open source development, there are several types of pre-alpha versions. Milestone versions include specific sets of functions and are released as soon as the functionality is complete.
Alpha:
Alpha is the first letter in Greek alphabet and it is the first phrase to begin software testing. Alpha software can be unstable but by the end of this phrase, no more feature will be added to the software. So, alphaware is usually said to be feature complete.
Beta:
Beta is the second letter in Greek alphabet and it is a process to reduce error and increase stability of the software. The delivery of betaware is the first time that the software will be available to the public.
Release Candidate:
After the completion of beta phrase, a software will become release to candidate, unless significant problem occurs. This stage is referred as code complete, because all the features have been designed, coded and tested with no known significant bugs.
RTM:
This is the phrase when the product is ready to be released. The software is first released to hardware manufacturers for bundling. This process will help developers to work out all the products before general release to the public.
GA:
This is the phrase when the product is released to general public, after all the commercialization activities have been completed. The time between RTM and GA can be weeks to months, depending on the time taken to finish all the commercialization activities.
Production or live release:
Production or live release aka Gold: this is the phrase when the product has released.
--------------------------------------------------------------------------------------------------------------------------
Picture References:
1.https://en.wikipedia.org/wiki/Software_release_life_cycle
Writing References:
1. http://releaseboard.com/what-is-a-software-application-release-cycle.html
2. https://en.wikipedia.org/wiki/Software_release_life_cycle
3. http://www.brighthub.com/internet/web-development/articles/42592.aspx

--------------------------------------------------------------------------------------------------------------------------

Wednesday, October 19, 2016

How did google get started?


Google is coming to campus today and all the events are hosted in Jepson Hall.
While you can learn much about  Google’s hiring process, culture, job and/ internship opportunities, are you curious about how did Google get started?

Start:
Google started with two students Larry Page(at age 23) and Sergey Brin (at age 24), who were pursuing their Ph.D. at Stanford University. While they were collaborating on a search engine called BackRub in 1996, which was written in Java and Python and ran on several Sun Ultras and Intel Pentiums running Linux.

They achieved great success with the server and officially launched Google.com as a domain on September 15, 1997. The company was formally incorporated on September 4, 1998. The name Google was a word play on mathematical term "googol," which means ten raised to the power of a hundred (10^100). This term represented their mission to organize a seemingly infinite amount of information on the web.

Development and Today:
Instead of allowing pop-up advertisement in the search engine, Google only allows is single text ads. Even though the home page was still marked "Beta (development stage)," many articles already argued that Google provided better search results than its competitors. During the dot-com bubble, Google was also referred to as "the future of the Web", especially by stock market investors.

Over the next ten years, Google took a series of acquisitions and launched many applications including Google Group, Google Toolbar, Google News, Google Images and so much more. In 2004, Google had IPO of 19,605,052 shares of Class A common stock takes place on Wall Street. Opening price was $85 per share. It also owns websites including YouTube and Blogger. In August 2015, Google reorganized its interesting as a holding company named Alphabet Inc. 

--------------------------------------------------------------------------------------------------------------------------
Picture References:
1.https://www.google.com/search?q=google&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiB5_nPkOfPAhVIHT4KHQQuBMMQ_AUICygE&biw=1249&bih=589#imgdii=7IKHjqDTO__xIM%3A%3B7IKHjqDTO__xIM%3A%3B2stnn3dUTo2FjM%3A&imgrc=7IKHjqDTO__xIM%3AICygE&biw=1280&bih=628#imgrc=mRJiumYp6_53fM%3A
2.https://www.google.com/search?q=Larry+Page+23+and+Sergey+Brin+24&source=lnms&tbm=isch&sa=X&ved=0ahUKEwji746UkefPAhXKWz4KHefRCCIQ_AUICSgC&biw=1249&bih=585#imgrc=hXyZDfTlNsffUM%3A
Writing References:
1. https://www.google.com/about/company/history/
2. http://www.steegle.com/about/google-101-facts/1-11-how-it-all-began
3. https://en.wikipedia.org/wiki/History_of_Google

--------------------------------------------------------------------------------------------------------------------------

Friday, October 14, 2016

Javacode, Java Virtual Machine, and machine code


Have you every wondered when you program with Java, why do you always have to compile your code? What does the ".class" file mean? Well, the answer is that your computer does not read English words, and the compiler takes your code and translate into machine-level code. This process is more complicated for Java. Your code is first translated into bytecode and then executed by JVM (Java Virtual Machine), and finally processed by the computer, as shown in the picture above.

Bytecode
Bytecode is the output from a Java compiler and is a form of instruction set designed for efficient execution by a software interpreter. It is composed of numeric codes, constants, and references (normally numeric addresses). Each bytecode is has one, or in some cases two bytes that represent the instruction (opcode), along with zero or more bytes for passing parameters. Below is an example of the bytecode:

Java Virtual Machine
JVM (Java Virtual Machine) is a virtual machine that executes bytecode outputted by Java compiler and enabled the computer to run the program. Java is powerful, because once a program is compiled, it can be run on any platform without having to be rewritten or recompiled. A Java virtual machine can interpret the bytecode one instruction at a time or interpret the bytecode with just-in-time compiler.

Machine code:
While humans understand languages, computer's CPU (central processing unit) only understand machine language, aka machine code, which is the most elemental language of computers, comprising a long sequence of zeros and ones.  Each machine code gives CPU an instruction to perform a simple operation or to store data in RAM. 
--------------------------------------------------------------------------------------------------------------------------
Picture References:
1.https://www.google.com/search?q=java+virtual+machine&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiW_ZSk5trPAhUGVT4KHd2UBfgQ_AUICygE&biw=1280&bih=628#imgrc=mRJiumYp6_53fM%3A
2.https://en.wikipedia.org/wiki/Java_virtual_machine#/media/File:JvmSpec7.png
3.https://en.wikipedia.org/wiki/Java_bytecode
Writing References:
1. http://durofy.com/10-major-differences-between-c-and-java/
2. https://en.wikipedia.org/wiki/Java_virtual_machine
3. https://en.wikipedia.org/wiki/Machine_code
4. https://en.wikipedia.org/wiki/Java_bytecode
5. http://www.theserverside.com/definition/Java-virtual-machine-JVM
--------------------------------------------------------------------------------------------------------------------------

Monday, October 3, 2016

Alan Turning - Turning Machine


Alan Turning is often described as the father of computer science. He was an influential computer scientist, mathematician, logician, cryptanalyst and theoretical biologist. His work laid foundation for algorithm and computation with Turning Machine.

This blog post explores the idea of Turning Machine, which is a hypothetical machine but can simulate any complicated computer algorithm.

Turning machine is an abstract model that consists of an infinitely-long tape which acts like the memory in a typical computer or any other storage devices. It is consisted of four parts:

  1. A tape that is divided into cells, one next to the other;
  2. A head that can read and write symbols on the tape;
  3. A state register that stores the state of the Turning machine;
  4. A finite table of instructions.
The machine is a 3-symbol machine, which means that it can only process the symbols 0, 1 and " "(blank). The picture below is an simplified example of the Turning machine. The squares on the tape are usually blank at the start and can be written with symbols.
The machine has a head, that is positioned over one of the squares at a time and the head can perform three basic operations:

  1. Read the symbol on the square under the head;
  2. Edit the symbol by writing a new symbol or erasing it;
  3. Move the tape left or right by one square so that the machine can read and edit the symbol on a neighboring square.
--------------------------------------------------------------------------------------------------------------------------
Picture References:
1.https://www.google.com/search?q=alan+turing&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiQxLfqqr_PAhWI5SYKHQmuDXsQ_AUICCgB&biw=1280&bih=627&dpr=2#imgrc=_JwUeA8tUcu3AM%3A
2.http://www.express.co.uk/news/uk/553128/Alan-Turing-Notebook-crack-the-Enigma-Code-auction-1-million
Writing References:
1. https://www.theguardian.com/science/2015/apr/13/alan-turings-notebook-sells-for-more-than-1m-at-new-york-auction
2. https://en.wikipedia.org/wiki/Alan_Turing
3. https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/one.html
4. https://en.wikipedia.org/wiki/Turing_machine
--------------------------------------------------------------------------------------------------------------------------
The picture above shows the Turning's original handwriting detailing his work on the foundations of mathematical notation and computer science. The notebook was sold for  for $1,025,000 (£698,000) in a sale of fine books and manuscripts at Bonhams auction house.