Tuesday 12 November 2013

Facebook

What is Facebook?

            Facebook is an online social networking service. It was named after the “facebook” some American University students are given at the beginning of the academic year which contains photos and personal information.

Founders

Facebook was founded by:


  • ·         Mark Zuckerburg
  • ·         Eduardo Saverin
  • ·         Andrew McCollum
  • ·         Dustin Moskovitz
  • ·         Chris Hughes


 How it all started: a Brief History of Facebook

Before Mark Zuckerburg attempted to write the Facebook we know and love today, he created a site called FaceMash on October 28, 2003. He was, then, still a sophomore at Harvard University. To create this “hot or not” site, Zuckerburg hacked into Harvard’s server to retrieve private dormitory ID photos. It was not long until he moved on to an even bigger project.
In February 2004, Facebook, then called “the facebook”, was founded by Mark Zuckerburg and fellow Harvard University students Eduardo Saverin, Andrew McCollum, Dustin Moskovitz and Chris Hughes. The popularity of “The facebook” increased rapidly among Harvard students since it was created. In fact, within 24 hours 1200 students signed up.
The site soon extended to other universities in Boston, and then, all US universities. After August 2005, when the site bought the domain “facebook.com” for $200,000, students from universities worldwide began signing up. The next month even US high school students could join as well.
Since September 2006, anyone (worldwide) with an e-mail address could sign up and millions have joined. Facebook’s popularity is ever increasing and the company is continuously developing by creating and updating the site and Facebook-related apps.


 Services offered by Facebook

Facebook is one of the largest social networking websites. It assists in the wide spread building of businesses through advertisements of the services and products. Facebook offers a great way to build among its customers by offering four main services:
·         Facebook Deluxe
·         Facebook Advanced
·         Facebook Basic
·         Facebook Kick start

FACEBOOK DELUXE
            Facebook Deluxe is for persons or businesses who have large following, several store fronts in different geographical location and are in need of constant monitoring of their page. The deluxe package offers individualized content, posting, interaction, monitoring, rapid response times and management.

FACEBOOK ADVANCED
            Facebook Advanced allows the user to be totally hands-off. It takes advantage of the social delivered team to completely manage an individual’s Facebook interaction including writing, custom content, posting, interaction and monitoring seven days a week.

FACEBOOK BASIC
            Facebook Basic is for individuals who can handle interactions and monitoring. The Facebook team launches or improve your page and provide custom content and consistent delivery of the content.



FACEBOOK KICKSTART
            Facebook Kick start offers the setup of a Facebook business page and two (2) hours of virtual training with a second Media Specialist.


Revenue

HOW DOES FACEBOOK MAKE MONEY?

Facebook earns most of its revenue from advertising. To give you an idea of just how much that is, see the table below.
Revenues
(estimated, in millions 
US$)
Year
Revenue
Growth
2006
$52
2007
$150
188%
2008
$280
87%
2009
$775
177%
2010
$2,000
158%
2011
$4,270
114%



Facebook Finance

The total net worth can be summarized as:

-     --  Total assets
  US$ 15.10 billion (2012)
-     --  Total equity
  US$ 11.75 billion (2012)


-       Stock Price (2013)
At the time of writing, Facebook’s stock prick is around $46 a share.

Life Working At Facebook.

As anyone would expect a social network company is one of the most interesting places to work. It can be considered as doing what you love. Facebook hires trailblazers, hackers and pioneers. It is stated that the company employs individuals who can solve challenging problems, make a real impact, build something big and embraces the concepts of working fast, being open and taking risks. The concept of fast for Facebook truly means fast. For instance, it was reported that engineers must have codes live within one week of starting. Interestingly enough, it has been said, that unlike most companies, the main communication among employees of Facebook (at work) is via Facebook.

New Innovations

The newest invention to the Facebook world is the Smartphone App development. The new Facebook Messenger App introduces enhanced speed, function and design. The app is available on Androids to start. The updated Facebook app for Blackberry and Android also makes big promises. The announcement of the upgrade advertises improved data use. Facebook works on enhancing its users’ experience and we can only expect greater competency in the future.
                                     

Saturday 2 November 2013

Multithreading


Introduction
            Multi-threading is the ability of a computer’s central processing unit to execute multiple threads in a single process. A thread is a building block for multithreaded systems or in simple terms a path taken by a process or application when executed. Operating systems or “OS”, as they are commonly called, foster the ability of multithreading in the modern world. This blog post is geared towards discussing concepts, advantages and disadvantages of multithreading.
            Before the concept of multi-threading can be understood fully, the main concept of a thread must be looked at briefly.


What is a Thread?  
            A thread is a basic unit of CPU utilization, that is, the smallest sequence of a program that can be executed independently while sharing the process’ resources (such as memory). Processes on the other hand, do not share resources. Therefore, a thread is generally referred to as a light-weight process contained by heavy-weight processes. Threads consist of a program counter, a processor state (including the current instruction pointer), a stack for running in user mode and a stack for running in kernel mode and a set of registers.
           


        Threads are divided into two main types: User threads and Kernel threads. User threads are threads used by application programmers, whereas, kernel threads are managed by the operating system. The relationship between user threads and kernel threads can be identified by their models: one-by-one, many-to-one and many-to-many.
These models are shown in the diagrams below.




Whats is Multithreading?
            Multithreading is the ability of an operating system to simultaneously execute the processing of multiple threads controlled by a single process within the same address space.
            Mutithreading is a way of providing a user with a high level of response since a single thread can run while other threads await instructions. For example; Multithreaded programing in Java have the ability for one subprogram or process to display an animation on the screen while other subprograms build the next sequence of animations to be displayed. Also multithreaded operating systems have the ability to log file changes, index data and manage windows at the same time as background tasks.
            In multithreading, a parent process contains all threads. Each thread within the parent process handles a separate transaction, algorithm or message. They share the resources and memory allocated to the parent process including the computing units, the CPU caches and the translation lookaside buffer (TLB). This makes it less costly to generate multiple threads.
            When executed on a multiprocessor, multiple threads can run in parallel across multiple processors as only one process may be executed on one processor. Hence, it is safe to say that multithreading takes advantage of a single core by using parallelism of both thread-level and instruction-level.
                                                                                                

Multithreaded Process vs Single threaded Process








Why Multithreading?
Let us now weigh the advantages and disadvatages of multithreading to see how beneficial multithreading can be.

Advantages of Multithreading

Ø  Inproved responsiveness: is faster communication between threads; and a process can be running even if some threads within the process are stalled, working on a lengthy task, or awaiting user interaction while a single-threaded application cannot respond to user input until it is done a particular task.
Ø  Faster application and more efficient processing:  multithreading takes advantage of a single core by using parallelism of both thread-level and instruction-level.
Ø  Simultaneous acess to to multiple applications
Ø  Reduced numbers of required servers
Ø  More efficient programming:
1. Threads are easier to create than processes: this is so because they do not require a separate address space.
2. There is greater control in module programming and the timing of application-related events.

Disadvantages of Multithreading
Ø  Difficulty of managing conconcurrency: threads may interfere with each other when sharing hardware resources (e.g.) caches or translation lookaside buffers (TLBs).
Ø  Extensive Programming
Ø  Debugging

Multithreading using multiple cores






FAQ’s of Multithreading

Question
        Why is multithreading important if I already have a computer with several cores?
Answer
        Processes are even faster: The multithreading process on a computer with a single processr allows a user to continue using a program even while another thread is doing some lengthy procedure but only one thread executes at a time. On the hand with a multiprocessor system, more than one processor may be running different threads in the same process. Hence, the execution of your program becomes significantly faster.
Question
        What is the difference between a thread and a process?
Answer
         A thread is the smallest sequence of a program that can be executed independently while sharing the process’ resources. It includes a processor context: which consists of a program counter, a processor state (including the current instruction/stack pointer), a stack for running in user mode and a stack for running in kernel mode and a set of registers.  Threads are executed sequentially with the ability to be interrupted so that another thread can be executed.
A process is a collection of threads and the necessary resources including memory, open files, windows and devices. It has a private memory address space in which the process's code and data are stored.