Modern Operating Systems


Andrew S. Tanenbaum - 1992
    What makes an operating system modern? According to author Andrew Tanenbaum, it is the awareness of high-demand computer applications--primarily in the areas of multimedia, parallel and distributed computing, and security. The development of faster and more advanced hardware has driven progress in software, including enhancements to the operating system. It is one thing to run an old operating system on current hardware, and another to effectively leverage current hardware to best serve modern software applications. If you don't believe it, install Windows 3.0 on a modern PC and try surfing the Internet or burning a CD. Readers familiar with Tanenbaum's previous text, Operating Systems, know the author is a great proponent of simple design and hands-on experimentation. His earlier book came bundled with the source code for an operating system called Minux, a simple variant of Unix and the platform used by Linus Torvalds to develop Linux. Although this book does not come with any source code, he illustrates many of his points with code fragments (C, usually with Unix system calls). The first half of Modern Operating Systems focuses on traditional operating systems concepts: processes, deadlocks, memory management, I/O, and file systems. There is nothing groundbreaking in these early chapters, but all topics are well covered, each including sections on current research and a set of student problems. It is enlightening to read Tanenbaum's explanations of the design decisions made by past operating systems gurus, including his view that additional research on the problem of deadlocks is impractical except for "keeping otherwise unemployed graph theorists off the streets." It is the second half of the book that differentiates itself from older operating systems texts. Here, each chapter describes an element of what constitutes a modern operating system--awareness of multimedia applications, multiple processors, computer networks, and a high level of security. The chapter on multimedia functionality focuses on such features as handling massive files and providing video-on-demand. Included in the discussion on multiprocessor platforms are clustered computers and distributed computing. Finally, the importance of security is discussed--a lively enumeration of the scores of ways operating systems can be vulnerable to attack, from password security to computer viruses and Internet worms. Included at the end of the book are case studies of two popular operating systems: Unix/Linux and Windows 2000. There is a bias toward the Unix/Linux approach, not surprising given the author's experience and academic bent, but this bias does not detract from Tanenbaum's analysis. Both operating systems are dissected, describing how each implements processes, file systems, memory management, and other operating system fundamentals. Tanenbaum's mantra is simple, accessible operating system design. Given that modern operating systems have extensive features, he is forced to reconcile physical size with simplicity. Toward this end, he makes frequent references to the Frederick Brooks classic The Mythical Man-Month for wisdom on managing large, complex software development projects. He finds both Windows 2000 and Unix/Linux guilty of being too complicated--with a particular skewering of Windows 2000 and its "mammoth Win32 API." A primary culprit is the attempt to make operating systems more "user-friendly," which Tanenbaum views as an excuse for bloated code. The solution is to have smart people, the smallest possible team, and well-defined interactions between various operating systems components. Future operating system design will benefit if the advice in this book is taken to heart. --Pete Ostenson

Quality Is Free


Philip B. Crosby - 1979
    Whether you manage a large plant or run your own small business, applying this simple principle of quality control will boost your profits and your career. "Quality Is Free" sets forth easy-to-implement programs, using actual case histories to demonstrate just how well quality control works, and providing important tools for success.

The Productive Programmer


Neal Ford - 2008
    The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use. Master developer Neal Ford not only offers advice on the mechanics of productivity-how to work smarter, spurn interruptions, get the most out your computer, and avoid repetition-he also details valuable practices that will help you elude common traps, improve your code, and become more valuable to your team. You'll learn to:Write the test before you write the codeManage the lifecycle of your objects fastidiously Build only what you need now, not what you might need later Apply ancient philosophies to software development Question authority, rather than blindly adhere to standardsMake hard things easier and impossible things possible through meta-programming Be sure all code within a method is at the same level of abstraction Pick the right editor and assemble the best tools for the job This isn't theory, but the fruits of Ford's real-world experience as an Application Architect at the global IT consultancy ThoughtWorks. Whether you're a beginner or a pro with years of experience, you'll improve your work and your career with the simple and straightforward principles in The Productive Programmer.

The Friendly Orange Glow: The Untold Story of the PLATO System and the Dawn of Cyberculture


Brian Dear - 2017
    The many thousands of people who used the system have held on to the PLATO ideas throughout their careers, influencing countless technological products and programs: from flat-panel wall TVs and touch-sensitive screens to chat rooms, instant messaging, screen savers, multiplayer games, flight simulators, crowdsourcing, interactive fiction, emoticons, and e-learning. Fascinating, first hand, and revelatory, The Friendly Orange Glow makes clear that the work of PLATO practitioners has profoundly shaped the computer industry from its inception to our very moment. This book is as much the biography of a vision as it is the story of the people behind PLATO. Every technology story--whether it's about the steam engine, airplane, telephone, Model T, or more recently, Apple, Google, and Tesla electric car--has at its core a vision. It is the immutable nature of technology, and technology visions, to run full life cycles, from cradle to grave. PLATO's story is no different. Like all technology visions, PLATO grew outdated and was disrupted by competing visions. The Friendly Orange Glow is a revelatory paradigm for our technological age.

Large-Scale C++ Software Design


John S. Lakos - 1996
    It is the first C++ book that actually demonstrates how to design large systems, and one of the few books on object-oriented design specifically geared to practical aspects of the C++ programming language. In this book, Lakos explains the process of decomposing large systems into physical (not inheritance) hierarchies of smaller, more manageable components. Such systems with their acyclic physical dependencies are fundamentally easier and more economical to maintain, test, and reuse than tightly interdependent systems. In addition to explaining the motivation for following good physical as well as logical design practices, Lakos provides you with a catalog of specific techniques designed to eliminate cyclic, compile-time, and link-time (physical) dependencies. He then extends these concepts from large to very large systems. The book concludes with a comprehensive top-down approach to the logical design of individual components. Appendices include a valuable design pattern Protocol Hierarchy designed to avoid fat inte

Audition Success


Don Greene - 1998
    Combining specially designed self-tests and real-life examples from the careers of two performers, Audition Success will help performers understand what prevents them from nailing an audition and give them the tools to reach their goals.

Automate the Boring Stuff with Python: Practical Programming for Total Beginners


Al Sweigart - 2014
    But what if you could have your computer do them for you?In "Automate the Boring Stuff with Python," you'll learn how to use Python to write programs that do in minutes what would take you hours to do by hand no prior programming experience required. Once you've mastered the basics of programming, you'll create Python programs that effortlessly perform useful and impressive feats of automation to: Search for text in a file or across multiple filesCreate, update, move, and rename files and foldersSearch the Web and download online contentUpdate and format data in Excel spreadsheets of any sizeSplit, merge, watermark, and encrypt PDFsSend reminder emails and text notificationsFill out online formsStep-by-step instructions walk you through each program, and practice projects at the end of each chapter challenge you to improve those programs and use your newfound skills to automate similar tasks.Don't spend your time doing work a well-trained monkey could do. Even if you've never written a line of code, you can make your computer do the grunt work. Learn how in "Automate the Boring Stuff with Python.""

Statistics: A Very Short Introduction


David J. Hand - 2008
    From randomized clinical trials in medical research, to statistical models of risk in banking and hedge fund industries, to the statistical tools used to probe vast astronomical databases, the field of statistics has become centrally important to how we understand our world. But the discipline underlying all these is not the dull statistics of the popular imagination. Long gone are the days of manual arithmetic manipulation. Nowadays statistics is a dynamic discipline, revolutionized by the computer, which uses advanced software tools to probe numerical data, seeking structures, patterns, and relationships. This Very Short Introduction sets the study of statistics in context, describing its history and giving examples of its impact, summarizes methods of gathering and evaluating data, and explains the role played by the science of chance, of probability, in statistical methods. The book also explores deep philosophical issues of induction--how we use statistics to discern the true nature of reality from the limited observations we necessarily must make.About the Series: Combining authority with wit, accessibility, and style, Very Short Introductions offer an introduction to some of life's most interesting topics. Written by experts for the newcomer, they demonstrate the finest contemporary thinking about the central problems and issues in hundreds of key topics, from philosophy to Freud, quantum theory to Islam.

The New Hacker's Dictionary


Eric S. Raymond - 1991
    Historically and etymologically richer than its predecessor, it supplies additional background on existing entries and clarifies the murky origins of several important jargon terms (overturning a few long-standing folk etymologies) while still retaining its high giggle value.Sample definitionhacker n. [originally, someone who makes furniture with an axe] 1. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. 2. One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming. 3. A person capable of appreciating {hack value}. 4. A person who is good at programming quickly. 5. An expert at a particular program, or one who frequently does work using it or on it; as in `a UNIX hacker'. (Definitions 1 through 5 are correlated, and people who fit them congregate.) 6. An expert or enthusiast of any kind. One might be an astronomy hacker, for example. 7. One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations. 8. [deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence `password hacker', `network hacker'. The correct term is {cracker}.The term 'hacker' also tends to connote membership in the global community defined by the net (see {network, the} and {Internet address}). It also implies that the person described is seen to subscribe to some version of the hacker ethic (see {hacker ethic, the}).It is better to be described as a hacker by others than to describe oneself that way. Hackers consider themselves something of an elite (a meritocracy based on ability), though one to which new members are gladly welcome. There is thus a certain ego satisfaction to be had in identifying yourself as a hacker (but if you claim to be one and are not, you'll quickly be labeled {bogus}). See also {wannabee}.

Artificial Intelligence


Elaine Rich - 1983
    I. is explored and explained in this best selling text. Assuming no prior knowledge, it covers topics like neural networks and robotics. This text explores the range of problems which have been and remain to be solved using A. I. tools and techniques. The second half of this text is an excellent reference.

Eniac: The Triumphs and Tragedies of the World's First Computer


Scott McCartney - 1999
    10 illustrations.

The Invisible Computer: Why Good Products Can Fail, the Personal Computer Is So Complex, and Information Appliances Are the Solution


Donald A. Norman - 1998
    Alas, the computer industry thinks it is still in its rebellious teenage years, exulting in technical complexity. Customers want change. They are ready for products that offer convenience, ease of use, and pleasure. The technology should be invisible, hidden from sight.In this book, Norman shows why the computer is so difficult to use and why this complexity is fundamental to its nature. The only answer, says Norman, is to start over again, to develop information appliances that fit people's needs and lives. To do this companies must change the way they develop products. They need to start with an understanding of people: user needs first, technology last--the opposite of how things are done now.

Tour of Mont Blanc: Complete Two-Way Trekking Guide


Kev Reynolds - 1983
    The route takes the walker into France, Switzerland and Italy and is described in both anti-clockwise and clockwise directions, with variants and information about facilities en route.

The Complete Manual of Typography


James Felici - 2002
    Jim Felici brings together a vast amount of knowledge in this book. Must-have!" --Erik Spiekermann, author, Stop Stealing Sheep (and Find Out How Type Works)This book is about how type should look and how to make it look that way; in other words, how to set type like a professional. It releases the craft knowledge that used to reside almost exclusively in the heads of people working in type shops. The shops are gone, the technologies have changed, but the goal remains the same. This book explains in very practical terms how to use today's computerized tools to achieve that secret of good design: well-set type.Beautifully designed and richly illustrated, The Complete Manual of Typography is an essential reference for anyone who works with type. Designers, print production professionals, and corporate communications managers can go straight to the index to find focused answers to specific questions, while educators and students can read it as a textbook from cover to cover. You'll find:History, basic concepts, and anatomy of good typography, concisely presented and indexed for quick reference by busy professionals. Straight-ahead instructions for how to manage fonts, handle corrupted or missing fonts, and find the characters you need. Clear, useful explanations of what makes good type good (and bad type bad) . Detailed guidance on controlling the fundamentals of type, including measure, point size, leading, kerning, and hyphenation and justification. Practical advice on how to fix and avoid composition problems such as loose lines, bad rags, widows and orphans. Hard-to-find rules for managing indents and alignments, skews, wraps, expert-set characters, and tables. Scores of workarounds that show how to wring good type out of uncooperative word-processing and layout programs.

Death March


Edward Yourdon - 1997
    This work covers the project lifecycle, addressing every key issue participants face: politics, people, process, project management, and tools.