History of Computer Systems - Why we are doing it that way


Published on

- by past and present facts, try to help new web professionals understand why web development is going that way: why queues, why caches, why REST, why NoSql, etc

- try to illustrate how and why old technologies were re-packed to help on web development

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

History of Computer Systems - Why we are doing it that way

  1. 1. History of Computer Systems Why we are doing it that way      from a modern web perspective lorieri@ google mail dot com
  2. 2. Agenda    0 - Goals, Who I am   Past      1 - First Computer   2 - Commercial Era   3 - Interpreters   4 - Integrated Circuits   5 - Multi-programming   6 - Networks   7 - Mainframes   8 - Personal Computers   9 - Some chaos 10 - Popularization 11 - Client/Server era 12 - Dynamic Web 13 - Physics chaos 14 – Parallelism now crucial Present   15 - Virtualization   16 - Actual situation   17 - Softwares   18 - I/O   19 - More Challenges   20 - SSD   21 - *aaS era   22 - New World Order   23 - Parallelization   24 - Acceptance   25 - Maintainability   26 - Languages   27 - ORM     Future      28 - Science   29 - Future
  3. 3. Goals <ul><li>  Internet development is not as easy as it was few years ago </li></ul>  - by past and present facts , try to help new web     professionals understand why web development     is going that way: why queues, why caches,     why REST, why NoSql, why processes, etc   - try to illustrate how and why old technologies     were re-packed to help on web development   - be famous and rich and people think I'm smart
  4. 4. Who I am not <ul><li>  - not a developer </li></ul><ul><li>  - not a scientist </li></ul><ul><li>  - not an english natural speaker </li></ul><ul><li>  - not an historian </li></ul><ul><li>  </li></ul>  I'm a just an &quot;old&quot; uncle, and sysadmin     -  &quot;introduction&quot; and &quot;First&quot; can mean &quot;become popular at some point&quot;       or &quot;it is now time to talk about it in the presentation&quot;     - &quot;Hacker&quot; here is Cracker, the bad guy     - Sequence of facts are not accurate
  5. 5. 1 - Beginning, First Electric Computer <ul><li>  - General-purpose computers </li></ul><ul><li>  - Low CPU power </li></ul><ul><li>  - Low Memory space </li></ul><ul><li>  - No Disc </li></ul><ul><li>  - Only Machine language </li></ul><ul><li>  - Low I/O </li></ul><ul><li>  - Low and expensive manpower, only scientists </li></ul><ul><li>   - Very expensive hardware, built in Laboratories </li></ul><ul><li>  - Only for government and institutions </li></ul><ul><li>  - Bugs: insects close to the hot hardware parts </li></ul><ul><li>  No network  </li></ul><ul><li>     </li></ul>
  6. 6. 2 - Commercial era, Business computers <ul><li>  </li></ul><ul><li>Business required:  Less cpu power and lots of storage to process data </li></ul><ul><li>  </li></ul><ul><li>  - From 1795's textile looms technology, punched cards were used as primary  </li></ul><ul><li>  medium for data entry, data storage and processing </li></ul><ul><li>- Expensive CPU time, regular programmers had no access to the computer </li></ul><ul><li>- Batch programming,  maximization of cpu time usage </li></ul><ul><li>- Easier tasks brought more manpower </li></ul><ul><li>  </li></ul><ul><li>- Costs dropped with commercial vendors </li></ul><ul><li>  </li></ul><ul><li>- Introduction of LEO, </li></ul><ul><li>  the first business computer, my name ;)  </li></ul>First &quot; Fad &quot; :       Batch's CPU utilization                     vs       Multi-programming's people productivity
  7. 7. Business and Science   Data Processing                     Calculation  
  8. 8. 3 - Interpreters <ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Language abstractions using interpreters to help on productivity </li></ul><ul><li>    1 - Load the interpreter from the cards </li></ul><ul><li>    2 - Load the Code from the cards </li></ul><ul><li>    3 - Execute Code in memory </li></ul><ul><li>    4 - Print results </li></ul><ul><li>    5 - Erase/Clean memory for next batch </li></ul><ul><li>  </li></ul><ul><li>- Introduction of tapes , you could load things in tape before processing </li></ul><ul><li>   </li></ul><ul><li>- Beginning of hardware abstraction layer ( System Calls ) </li></ul><ul><li>    (if you want to blame the guy who invented frameworks, he lived here) </li></ul><ul><li>- Students were the new manpower </li></ul>
  9. 9. from Tanenbaum's book from Tanenbaum's book
  10. 10. 4 - Integrated Circuit <ul><li>  </li></ul><ul><li>  Beginning of Moore's law : </li></ul><ul><li>   CPU power will grow exponentially over the time </li></ul><ul><li>  - Significant drop on the size of the components </li></ul><ul><li>  - Much more CPU POWER !!! </li></ul><ul><li>  - More memory space  </li></ul><ul><li>  - More storage space </li></ul><ul><li>  - I/O (data transfer speed) increased </li></ul><ul><li>  - Popularity brought more manpower </li></ul><ul><li>  - Costs and Prices dropped due manufacture lower cost </li></ul><ul><li>  </li></ul>
  11. 11. So what to do with so much power ?   - Now it was time to share CPU little pieces of time among multiple processes (Virtual multi-tasking)
  12. 12. 5 - Multi-programming <ul><li>  </li></ul><ul><li>  - Introduction of the &quot;THE Multiprogramming System&quot;, </li></ul><ul><li>   a multi-tasking Operating System </li></ul><ul><li>  </li></ul><ul><li>      - THE introduced bugs by separating memory spaces among </li></ul><ul><li>          non-experienced users/developers from the core system </li></ul><ul><li>  </li></ul><ul><li>      - THE introduced the execution levels , separating buggy </li></ul><ul><li>          high-level code from core low-level code </li></ul><ul><li>      - THE introduced memory swapping </li></ul><ul><li>  </li></ul><ul><li>  - Introduction of file system abstraction layer, pieces of  </li></ul><ul><li>   memory became persistent files </li></ul><ul><li>  </li></ul><ul><li>  - Introduction of Inter-Process Communication </li></ul><ul><li>  - Concepts of error handling <-------------- </li></ul>Not a fad anymore  
  13. 13. System Levels +Access Control +Bugs +Complexity   =HACKERS !!!
  14. 14. 6 - Networks <ul><li>  </li></ul><ul><li>  Multi-programming required multi terminals, and to glue   </li></ul><ul><li>   terminals and the Central Systems a network was required </li></ul><ul><li>  - More manpower of students </li></ul><ul><li>  - Popularity among universities </li></ul><ul><li>  - Brought more creativity and collaboration </li></ul><ul><li>  - More Hackers </li></ul><ul><li>  </li></ul><ul><li>  - More Bugs                                                    </li></ul>
  15. 15. 7 - Mainframes   Piles of CPUs in a huge and very             expensive machine to process                       large amount of data quickly   - Money and time was crucial:                               fault tolerant hardware   - Very few and slow wide area networks                       contributed to centralization   - Centralized costs of maintenance   - Beginning of Virtualization   - Introduction of hypervisors   - Very specialized manpower
  16. 16. 8 - Personal Computers <ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Terminals grew and became Personal Computers </li></ul><ul><li>  </li></ul><ul><li>  - Fits business basic needs </li></ul><ul><li>  - Games ! </li></ul><ul><li>  - Could be used to connect to central computers </li></ul><ul><li>  </li></ul><ul><li>  - No time-sharing, no multi-tasking </li></ul><ul><li>  </li></ul><ul><li>  - Introduction of DBM style key-value </li></ul><ul><li>   databases, to persist memory data on disc. </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  - Microsoft launched a popular cheap Operating </li></ul><ul><li>   System for small machines </li></ul>
  17. 17. 9 - Some chaos <ul><li>  </li></ul><ul><li>Network + bugs + popularization led to a hardware based security </li></ul><ul><li>    solution: the MMU </li></ul><ul><li>  </li></ul><ul><li>   MMU maps the memory to create/translate virtual memory </li></ul><ul><li>   addresses so a program can't steal spaces from each other </li></ul><ul><li>  </li></ul><ul><li>Btw, at that time, the law was: computers reduce duplications of data </li></ul><ul><li>and it saves resources. </li></ul><ul><li>  </li></ul><ul><li>Memory size still a fraction of storage size. </li></ul>
  18. 18. 10 - Popularization <ul><li>  </li></ul><ul><li>- More and better networks </li></ul><ul><li>- Memory and storage sizes increased </li></ul><ul><li>- More bugs and hackers </li></ul><ul><li>- Knowledge and manpower increased </li></ul><ul><li>- Lower prices !! </li></ul><ul><li>  </li></ul><ul><li>  Introduction of the Relational Databases (SQL) </li></ul><ul><li>  Introduction of the Free/Open Source Software </li></ul>
  19. 19. 11 - Client/Server era (latency era) <ul><li>  </li></ul><ul><li>  Small machines had enough power to centralize specific tasks </li></ul><ul><li>  - Part of the processing migrated from the central computer </li></ul><ul><li>   to the terminals </li></ul><ul><li>  - Mainframes started to disappear </li></ul><ul><li>  - Introduction of the router: INTERNET became reality </li></ul><ul><li>  - Small and static websites </li></ul><ul><li>  - Simpler machines = more vendors </li></ul><ul><li>  - Internet brought easy knowledge access </li></ul><ul><li>  </li></ul><ul><li>  - Manpower starts to be more expensive than CPU time, focus on productivity </li></ul>
  20. 20. Business   Mainframes                     Client/Server
  21. 21. 12 - Dynamic Content Internet <ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Shopping !! And Money !! </li></ul><ul><li>- Introduction of Virtual Hosts : 1 computer = many sites </li></ul><ul><li>- Introduction of PHP: simple programming for internet </li></ul><ul><li>      (Open-Run-Die)*million style = high scalability </li></ul><ul><li>  </li></ul><ul><li>- Introduction of RPC   = Remote Process Communication </li></ul><ul><li>- MMU concept to virtualize IPs: Ip Masq </li></ul><ul><li>- Manpower increased building millions of small and simple </li></ul><ul><li>internet systems </li></ul><ul><li>- More bugs, more hackers  </li></ul>
  22. 22. Shopping = Money Time is Money Time = High Availability Shopping = User Experience
  23. 23. People started to comment above previous messages in replied emails
  24. 24. 13 - Physics Chaos <ul><li>Death of Moore's laws </li></ul><ul><li>  - Necessity of more software innovation </li></ul><ul><li>  </li></ul><ul><li>  - Bigger Hard disks, but speed not increasing enough </li></ul><ul><li>   On the other hand, faster and cheaper memories !!! </li></ul><ul><li>  - Fancy and strange names for computer specialists: </li></ul><ul><li>   - Engineer </li></ul><ul><li>   - Architect </li></ul><ul><li>   - &quot;Operator&quot; replaced by &quot;System Administrator&quot; </li></ul><ul><li>  - Moore's law is also a Goal , and having a goal is great </li></ul>
  25. 25. 14 - Parallelism now crucial <ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Only way to increase CPU power </li></ul><ul><li>  </li></ul><ul><li>- Multi CPUs systems, multi core CPUs, multi threaded cores  </li></ul><ul><li>- Real multi-tasking !!! </li></ul><ul><li>- Many many bugs </li></ul><ul><li>- Cheaper memories everywhere as buffers and caches : </li></ul><ul><li>      - File systems buffers and caches </li></ul><ul><li>     - CPU cache </li></ul><ul><li>     - Hard Disc buffers and caches </li></ul><ul><li>     - Disc controllers buffers and caches </li></ul><ul><li>Amdahl's law : &quot;...if 95% of the program can be parallelized, the theoretical maximum speedup using parallel computing would be 20× ..., no matter </li></ul><ul><li>how many processors are used.&quot; </li></ul>
  26. 26. ... and after so long Windows learned how to use execution levels, virtual memory and decreased their system's crashes :)
  27. 27. 15 - Virtualization <ul><li>  </li></ul><ul><li>  - Multi-processing brought Virtualization to small machines </li></ul><ul><li>     - Lots of small/slow/old systems virtualized in a single machine </li></ul><ul><li>  - Easier to run tests and POC </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  But disc access speed that was slow, became even slower </li></ul><ul><li>  when divided for many virtual systems, regular computer </li></ul><ul><li>  has not same I/O latency as Mainframes </li></ul>
  28. 28. Business   Mainframes                     Client/Server
  29. 29. <ul><li>Mainframes had been working with parallelism, hardware caches, virtualization, multi-core, multi-cpus, </li></ul><ul><li>for 50 years. For same reasons. </li></ul><ul><li>(but with lower latency) </li></ul>
  30. 30. 16 - Actual situation <ul><li>Data size increasing tremendously, specially by social media and user </li></ul><ul><li>generated content, but: </li></ul><ul><li>  - CPU power not increasing enough </li></ul><ul><li>  </li></ul><ul><li>  - Storage and network bandwidth increasing, </li></ul><ul><li>      but latency decreasing in very low rates </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Meaning: Central database is now the bottleneck. </li></ul><ul><li>   bandwidth = total size of all operations by a given time </li></ul><ul><li>   latency = time taken of each operation </li></ul><ul><li>   Databases do ~ thousands small operations per second, </li></ul><ul><li>   not few big operations. Operations that you should not cache or buffer. </li></ul>
  31. 31. 17 - How software helped ? <ul><li>  - Separate the disc accesses ? </li></ul><ul><li>  - Fit everything in memory ? </li></ul><ul><li>  - Break the law and duplicate data to avoid disc accesses ? </li></ul>We did it all, by putting a network layer in everything and using more and more cheap machines (Federate)     - PHP (Open-Run-Die)*millions style required optimizations      - no cheap shared memory, no cheap communication, no cheap locking   - Data distribution and tasks distribution, more backend pieces .     Now you can set up a load balancing in minutes with few bucks Remember the IPC and RPC ? Evolved to be API ,         &quot;Inter-Application Communication&quot;     - Massive use of Soap and REST
  32. 32. 18 - Accesses even slower (I/O) <ul><li>  </li></ul><ul><li>More latency, resources are now outside the machines </li></ul><ul><li>  - Caches left the local machine to become dedicated systems </li></ul><ul><li>  </li></ul><ul><li>  - Buffers and some RPCs grew too, but high network and TCP </li></ul><ul><li>   overheads led to  Queues and Message Brokers </li></ul><ul><li>  - Slower response time led to Asynchronous approaches </li></ul><ul><li>  - Error handling is more important than ever </li></ul><ul><li>  Remember the DBM ? It left the machine too, got a network </li></ul><ul><li>  layer and became NoSql systems </li></ul><ul><li>  Remember the MMU ? Had a grandson called: </li></ul><ul><li>      Hash Partitioning (DHT - Distributed hash table) </li></ul><ul><li>  </li></ul><ul><li>  - Starting trade among consistency, availability and distribution ( CAP ) </li></ul>
  33. 33. http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf 1 ns = .000000001 seconds worse for multi-cpu and virtual machines how many hardware pieces between US and EU can fail ?
  34. 34. 19 - Much more challenges      <ul><li>  More complexity = more failures </li></ul><ul><li>        New (old) law: fault tolerance  </li></ul><ul><li>  - Complexity required more abstraction and led to a sea of Frameworks </li></ul>  Remember the system execution levels ?     They left the computers, became environments :         - Development Environment         - Testing Environment         - Staging Environment         - Production Environment   You can't just copy files around and rollbacks are not trivial anymore   Mixed technologies and complex environments brought to web deploys    automation , packaging and processes to keep control and minimize incidents   A big problem: access control is now world wide 
  35. 35. <ul><li>  </li></ul><ul><li>Having more environments before production is not bureaucracy, </li></ul><ul><li>is freedom </li></ul>
  36. 36. 20 - and the SSD ? <ul><li>  - At the beginning SSD was too buggy and had low lifetime </li></ul><ul><li>  - SSD was welcome, but to join the party , not to stop it. It </li></ul><ul><li>    also came too late. The  revolution  had started already,  </li></ul><ul><li>   software development was boring, the  revolution  brought  </li></ul><ul><li>   excitement and great challenges, impossible to go back </li></ul><ul><li>  </li></ul><ul><li>  - Still too expensive </li></ul><ul><li>  - Being used as huge buffers and caches, faster than </li></ul><ul><li>    networks, slower than RAM Memory </li></ul><ul><li>  </li></ul>
  37. 37. 21 - *aaS Era <ul><li>  </li></ul><ul><li>  *aaS = * as a Service </li></ul><ul><li>Remember the Mainframe ? Evolved to be the cloud </li></ul><ul><li>- Pay-per-use model, like electric and phone bills </li></ul><ul><li>- Service aaS: &quot;Gimme a login and password” </li></ul><ul><li>- Hardware aaS:   Remember the system call ? Became &quot;cloud call&quot; , </li></ul><ul><li>  and a resource can be an entire hardware instance. </li></ul><ul><li>  - resources waste help, no capacity plan for peaks </li></ul><ul><li>- Software (or Platform) aaS: Hardware abstraction, </li></ul><ul><li>    pay per API usage quota - Deploys becoming commodity </li></ul>
  38. 38. 22 - New World Order <ul><li>  </li></ul><ul><li>- Nightly updates even for SO, github, high frequency API changes </li></ul><ul><li>- Systems that were born to be distributed and event-driven  </li></ul><ul><li>   programming now on websites (Erlang, Nginx, NodeJS) </li></ul><ul><li>- Functional languages (stateless, easy to distribute) </li></ul><ul><li>- Use more and more the browser to store, to process and to cache   </li></ul><ul><li>  and now to store DATA!!! Mass usage of JSON communication </li></ul><ul><li>- Human beings communicating as IPC (Twitter) </li></ul><ul><li>- Plenty of devices , not only regular computers </li></ul><ul><li>- Opposite to Mainframe times, Data is larger than a single computer  </li></ul><ul><li>    can hope to process </li></ul><ul><li>            - Map-reduce for so many data processing </li></ul>
  39. 39. Message-passing and event-driven programming is exactly how the kernel has worked for 40 years
  40. 40. Y U NO PARALLELIZE EASILY !?!?!?!
  41. 41. 23 - Why web devs don't parallelize ? <ul><li>  </li></ul><ul><li>&quot;However, new technologies have always been dif- ficult to use at introduction, but have invariably be- come easier over time. For example, there was a time when the ability to drive a car was a rare skill , but in many developed countries, this skill is now commonplace. This dramatic change came about for two basic reasons: (1) cars became cheaper and more readily available , so that more people had the opportunity to learn to drive, and (2) cars became simpler to operate , due to automatic transmissions, automatic chokes, automatic starters, greatly im- proved reliability, and a host of other technological improvements.&quot; </li></ul><ul><li>http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.2011.01.02a.pdf </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>This also means: business area, because business requires productivity and low risks, </li></ul><ul><li>                          so things are slower </li></ul>Is Parallel Programming Hard, And, If So,What Can You Do About It? Edited by: Paul E. McKenney Linux Technology Center IBM Beaverton [email_address] January 2, 2011
  42. 42. 24 - Acceptance of new technologies <ul><li>Still, and if they you want to replace all the cars with something else ?  </li></ul><ul><li>Douglas Crockford   thoughts (http://yuiblog.com/crockford/): </li></ul><ul><li>  </li></ul><ul><li>&quot;The people who should be the first to recognize the value of an innovation </li></ul><ul><li>   are often the last.&quot;  </li></ul><ul><li>And most of time, he is talking about developers </li></ul>When chip companies were rushing to 16 bits:   &quot; Intel went to a different direction...&quot; &quot;...total disaster&quot; &quot;...go back to 8 bits... try to capture the business of 8 bits by making a machine that was assembly language compatible ...&quot; And Intel keeps doing it since then, but we don't know until when, get prepared &quot;This is a great time to be a programmer, we have a lot of choices, we need to be smart about making those choices and be open to accepting the new ideas because there is a lot of new ideas out there, we shouldn't be rejecting just because they are unfamiliar and we don't see the need for it &quot;
  43. 43. <ul><li>Talking about cars, you can't change only your car and expect all your </li></ul><ul><li>      neighborhood is adapted to it and want to share the prices of the changes </li></ul><ul><li>At companies, it is not only about acceptance , it is also about having enough tools for </li></ul><ul><li>development productivity, enough libraries, integration with processes and automations (such as tests and security scans), co-workers willing and having time to help and learn something new, having good community support, proven good hardware and human resources usage , etc... </li></ul><ul><li>&quot;You are not Google, Amazon or Facebook&quot; </li></ul><ul><li>  -Ivan Ribeiro, at the presentation &quot;You shall </li></ul><ul><li>                        Not Get Excited&quot;, talking about </li></ul><ul><li>                        his 2-3 years journey to use </li></ul><ul><li>                        Erlang in production </li></ul><ul><li>http://www.slideshare.net/x697272/you-shall-not-get-excited-5851097  </li></ul>25 - Maintainability
  44. 44. 26 - New languages <ul><li>  </li></ul><ul><li>  </li></ul><ul><li>New languages are coming to break the </li></ul><ul><li>traditional &quot;LAMP&quot; stack and help to </li></ul><ul><li>bring other technologies to the Web </li></ul><ul><li>  </li></ul><ul><li>But sometimes they change it too much, </li></ul><ul><li>for example: </li></ul><ul><li>  </li></ul><ul><li>     4 most popular languages are: </li></ul><ul><li>          C, Java, Php, JavaScript, all based in same syntax </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Syntax changes are often justified by trying new approaches and bringing new </li></ul><ul><li>technology, what we don't need are changes on syntax that doesn't change </li></ul><ul><li>the way the things are been done and only loses productivity </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  45. 45. 27 - ORM, not now <ul><li>Abstraction requires power , OOP came to web 40 years after invented, </li></ul><ul><li>Web templatization was possible only when PHP scaling became easy </li></ul><ul><li>SQL is not only abstraction, it is also parallelization </li></ul><ul><li>Modern databases already have internal caches and great </li></ul><ul><li>query optimizers </li></ul><ul><li>Right now latency on data store and retrieval is crucial , and it is the  </li></ul><ul><li>most difficult piece of the system to scale , we can't afford any more </li></ul><ul><li>overheads in real time data manipulation, it is time to cut . </li></ul><ul><li>NoSql acceptance was quick cause databases are right now a problem </li></ul><ul><li>Most of time Web systems are built by few real time data queries and </li></ul><ul><li>few queries are easy to pack into functions and classes that can use </li></ul><ul><li>specialized cache and buffer systems </li></ul>
  46. 46.     Matt Yonkovit - at Percona Live NYC 2011     http://www.percona.com/files/presentations/percona-live/nyc-2011/PerconaLiveNYC2011-How-MySQL-and-NoSQL-Coexist.pdf
  47. 47. 28 - And where is Science ? <ul><li>  </li></ul><ul><li>Scientific Computing last words are: </li></ul><ul><li>  GPU: Graphic CPU, that was born for parallel and  </li></ul><ul><li>            distributed computation </li></ul><ul><li>  FPGA: Bringing software closer to the hardware </li></ul><ul><li>    GRID: International shared GRID network </li></ul><ul><li>Those 3 above are possible to have at home , experimentation is much </li></ul><ul><li>easier now </li></ul>
  48. 48. 29 - Future ? <ul><li>Stop thinking sequential and serial </li></ul><ul><li>&quot;Compute Local, Act Global. </li></ul><ul><li>  Otherwise the Overhead will kill you&quot; </li></ul><ul><li>- Carlos Bueno, a friend of mine </li></ul><ul><li>Merge Hard Disc with RAM and build </li></ul><ul><li>systems that do not require BOOT </li></ul><ul><li>2012 - End of the World ? </li></ul><ul><li>         If not: Stop doing brute force using quantum computation </li></ul>
  49. 49. <ul><li>  </li></ul><ul><li>  </li></ul><ul><li>&quot;A new vogue for the now generation  </li></ul><ul><li>A new profit in the same old game </li></ul><ul><li>We got new thoughts, new ideas it's all so groovy It's just a shame that we all seen the same old movies &quot; </li></ul><ul><li>The Saints - Private Affairs </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  References:  Tanenbaum's &quot; novels &quot;,  EWD manuscripts,  Wikipedia, </li></ul><ul><li>Google's image search,  My and my friends' experiences. </li></ul>