Learn | Explore | Share | Challenge Yourself | Enjoy | Make This World Beautiful Place To Live For Everyone|

Archive for the month “March, 2012”

Zuckerberg, The Hacker

As Facebook gears for IPO, filed on 1st feb, 2012 to raise $5 billion in an initial public offering. CEO Mark Zuckerberg offered a letter to potential investers. Values and mission statement of facebook are worth eyeing on. Money should be treated as side-effect not as the ultimate goal. When you strive for changing something or making an impact, everything else follows. This is what facebook, stands on.

Here is a snippet from the letter which i loved:

The Hacker’s Way

As part of building a strong company, we work hard at making Facebook the best place for great people to have a big impact on the world and learn from other great people. We have cultivated a unique culture and management approach that we call the Hacker Way.

The word “hacker” has an unfairly negative connotation from being portrayed in the media as people who break into computers. In reality, hacking just means building something quickly or testing the boundaries of what can be done. Like most things, it can be used for good or bad, but the vast majority of hackers I’ve met tend to be idealistic people who want to have a positive impact on the world.

The Hacker Way is an approach to building that involves continuous improvement and iteration. Hackers believe that something can always be better, and that nothing is ever complete. They just have to go fix it — often in the face of people who say it’s impossible or are content with the status quo.

Hackers try to build the best services over the long term by quickly releasing and learning from smaller iterations rather than trying to get everything right all at once. To support this, we have built a testing framework that at any given time can try out thousands of versions of Facebook. We have the words “Done is better than perfect” painted on our walls to remind ourselves to always keep shipping.

Hacking is also an inherently hands-on and active discipline. Instead of debating for days whether a new idea is possible or what the best way to build something is, hackers would rather just prototype something and see what works. There’s a hacker mantra that you’ll hear a lot around Facebook offices: “Code wins arguments.”

Hacker culture is also extremely open and meritocratic. Hackers believe that the best idea and implementation should always win — not the person who is best at lobbying for an idea or the person who manages the most people.

To encourage this approach, every few months we have a hackathon, where everyone builds prototypes for new ideas they have. At the end, the whole team gets together and looks at everything that has been built. Many of our most successful products came out of hackathons, including Timeline, chat, video, our mobile development framework and some of our most important infrastructure like the HipHop compiler.

To make sure all our engineers share this approach, we require all new engineers — even managers whose primary job will not be to write code — to go through a program called Bootcamp where they learn our codebase, our tools and our approach. There are a lot of folks in the industry who manage engineers and don’t want to code themselves, but the type of hands-on people we’re looking for are willing and able to go through Bootcamp.

To read full letter, download below doc:


Spooling, Buffering & Caching—What’s The Difference??

In computing, there are many terms which are closely related and we often know them individually but comparing them and telling the difference between them can be a pain. The same situation was faced by me and all other 32 students in the room during a lecture when our professor posed this question. Though we knew the terms but telling the difference was tough.

These terms are not mutually exclusive and their functions are frequently combined but they have intended difference.


  • Acronym of  “Simultaneous Peripheral Operation On-Line”.
  • Its a process of placing data  in temporary working  area for another  program to process.
  • E.g: Print spooling and Mail spools etc.
  • When there is a resource (like printer)  to be accessed by two or more processes(or devices), there spooling comes handy to schedule the tasks. Data from each process is put on the spool (print queue) and processed in FIFO(first in first out)  manner.
  • With spooling all process can access the resource without waiting.
  • After writing the data on spool, process can perform other tasks. And printing process operates seperately.
  • Without spooling, process would be tied up until the printing finished.
  • Spooling is useful for the devices which have differing data access rate. Used mainly when processes share some resource and needed to have synchronization.


  • Preloading data into a reserved area of memory (the buffer).
  • It temporarily stores input or output data in an attempt to better match the speeds of two devices such as a fast CPU and a slow disk drive.
  • Buffer may be used in between when moving data between two processes within a computer. Data is stored in buffer as it is retrieved from one processes or just before it is sent to another process.
  • With spooling, the disk is used as a very large buffer. Usually complete jobs are queued on disk to be completed later.
  • It is mostly used for input, output, and sometimes temporary storage of data either when transfer of data takes place or data that may be modified in a non-sequential manner.


  • Caching transparently stores data in component called Cache, so that future request for that data can be served faster.
  • A special high-speed storage mechanism. It can be either a reserved section of main memory or an independent high-speed storage device.
  • The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere.
  • E.g: Memory Caching, Disk Caching, Web Caching(used in browser), Database Caching etc.
  • A cache’s sole purpose is to reduce accesses to the underlying slower storage.


  1. All three enhances performance and makes system faster.
  2. Caching usually used as a buffer.
  3. Spooling is better than buffering ( Buffering overlaps input, output and processing of a single job whereas Spooling allows CPU to overlap
    the input of one job with the computation and output of other jobs).

Post Navigation