The Atomic Chef: And Other True Tales of Design, Technology, and Human Error


Steven Casey - 2006
    The 20 stand-alone chapters of this new work describe how technological failures result from the incompatibilities between the way things are designed and the way people actually perceive, think, and act. New technologies will succeed or fail based on our ability to minimize these incompatibilities between the characteristics of people and the characteristics of the things we create and use.This book is the quintessential 'must read' for all those who deal with technology in any fashion. From the frustration of an awkward ATM machine to the threat of accidental, nuclear Armageddon, Casey shows how the same crucial factors come into play told through the very eyes of those people who saw and experienced these things. No student of design, psychology, behavioral science, or technology should be without this book, and neither should any intelligent member of society who wants to know what goes on with the successes and failures of modern technology.Sit ringside to the action where compelling events unfold. The stories in this book will take you to airports and airline cabins, an amusement park, a fertility clinic, a pharmaceutical plant, an emergency dispatch center, the Olympic games, and a bank; to hospitals, spacecraft, ships, and cars. From the coasts of Peru and Monterey, in orbit aboard the International Space Station, the freeways of Southern California and the back roads of France, the battlefields of Afghanistan, and a nuclear fuel plant in Japan this is The Atomic Chef.

The Problem with Software: Why Smart Engineers Write Bad Code


Adam Barr - 2018
    As the size and complexity of commercial software have grown, the gap between academic computer science and industry has widened. It's an open secret that there is little engineering in software engineering, which continues to rely not on codified scientific knowledge but on intuition and experience.Barr, who worked as a programmer for more than twenty years, describes how the industry has evolved, from the era of mainframes and Fortran to today's embrace of the cloud. He explains bugs and why software has so many of them, and why today's interconnected computers offer fertile ground for viruses and worms. The difference between good and bad software can be a single line of code, and Barr includes code to illustrate the consequences of seemingly inconsequential choices by programmers. Looking to the future, Barr writes that the best prospect for improving software engineering is the move to the cloud. When software is a service and not a product, companies will have more incentive to make it good rather than "good enough to ship."

The Art of Multiprocessor Programming


Maurice Herlihy - 2008
    To leverage the performance and power of multiprocessor programming, also known as multicore programming, programmers need to learn the new principles, algorithms, and tools.The book will be of immediate use to programmers working with the new architectures. For example, the next generation of computer game consoles will all be multiprocessor-based, and the game industry is currently struggling to understand how to address the programming challenges presented by these machines. This change in the industry is so fundamental that it is certain to require a significant response by universities, and courses on multicore programming will become a staple of computer science curriculums.This book includes fully-developed Java examples detailing data structures, synchronization techniques, transactional memory, and more.Students in multiprocessor and multicore programming courses and engineers working with multiprocessor and multicore systems will find this book quite useful.

The Future of the Mind: The Scientific Quest to Understand, Enhance, and Empower the Mind


Michio Kaku - 2014
    For the first time in history, the secrets of the living brain are being revealed by a battery of high tech brain scans devised by physicists. Now what was once solely the province of science fiction has become a startling reality. Recording memories, telepathy, videotaping our dreams, mind control, avatars, and telekinesis are not only possible; they already exist. The Future of the Mind gives us an authoritative and compelling look at the astonishing research being done in top laboratories around the world—all based on the latest advancements in neuroscience and physics. One day we might have a "smart pill" that can enhance our cognition; be able to upload our brain to a computer, neuron for neuron; send thoughts and emotions around the world on a "brain-net"; control computers and robots with our mind; push the very limits of immortality; and perhaps even send our consciousness across the universe. Dr. Kaku takes us on a grand tour of what the future might hold, giving us not only a solid sense of how the brain functions but also how these technologies will change our daily lives. He even presents a radically new way to think about "consciousness" and applies it to provide fresh insight into mental illness, artificial intelligence and alien consciousness. With Dr. Kaku's deep understanding of modern science and keen eye for future developments, The Future of the Mind is a scientific tour de force--an extraordinary, mind-boggling exploration of the frontiers of neuroscience.

Real World Haskell: Code You Can Believe In


Bryan O'Sullivan - 2008
    You'll learn how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications. Real World Haskell takes you through the basics of functional programming at a brisk pace, and then helps you increase your understanding of Haskell in real-world issues like I/O, performance, dealing with data, concurrency, and more as you move through each chapter. With this book, you will:Understand the differences between procedural and functional programming Learn the features of Haskell, and how to use it to develop useful programs Interact with filesystems, databases, and network services Write solid code with automated tests, code coverage, and error handling Harness the power of multicore systems via concurrent and parallel programming You'll find plenty of hands-on exercises, along with examples of real Haskell programs that you can modify, compile, and run. Whether or not you've used a functional language before, if you want to understand why Haskell is coming into its own as a practical language in so many major organizations, Real World Haskell is the best place to start.

Core Memory: A Visual Survey of Vintage Computers


John Alderman - 2007
    Vivid photos capture these historically important machinesincluding the Eniac, Crays 13, Apple I and IIwhile authoritative text profiles each, telling the stories of their innovations and peculiarities. Thirty-five machines are profiled in over 100 extraordinary color photographs, making Core Memory a surprising addition to the library of photography collectors and the ultimate geek-chic gift.

The Rails 3 Way


Obie Fernandez - 2010
    "The Rails(TM) 3 Way"is the only comprehensive, authoritative guide to delivering production-quality code with Rails 3. Pioneering Rails expert Obie Fernandez and a team of leading experts illuminate the entire Rails 3 API, along with the idioms, design approaches, and libraries that make developing applications with Rails so powerful. Drawing on their unsurpassed experience and track record, they address the real challenges development teams face, showing how to use Rails 3 to maximize your productivity. Using numerous detailed code examples, the author systematically covers Rails 3 key capabilities and subsystems, making this book a reference that you will turn to again and again. He presents advanced Rails programming techniques that have been proven effective in day-to-day usage on dozens of production Rails systems and offers important insights into behavior-driven development and production considerations such as scalability. Dive deep into the Rails 3 codebase and discover why Rails is designed the way it is--and how to make it do what you want it to do.This book will help youLearn what's new in Rails 3 Increase your productivity as a web application developer Realize the overall joy in programming with Rails Leverage Rails' powerful capabilities for building REST-compliant APIs Drive implementation and protect long-term maintainability using RSpec Design and manipulate your domain layer using Active Record Understand and program complex program flows using Action Controller Master sophisticated URL routing concepts Use Ajax techniques via Rails 3 support for unobtrusive JavaScript Learn to extend Rails with popular gems and plugins, and how to write your own Extend Rails with the best third-party plug-ins and write your own Integrate email services into your applications with Action Mailer Improve application responsiveness with background processing Create your own non-Active Record domain classes using Active Model Master Rails' utility classes and extensions in Active Support

The Pattern on the Stone: The Simple Ideas that Make Computers Work


William Daniel Hillis - 1998
    What they don't realize—and what Daniel Hillis's short book brilliantly demonstrates—is that computers' seemingly complex operations can be broken down into a few simple parts that perform the same simple procedures over and over again.Computer wizard Hillis offers an easy-to-follow explanation of how data is processed that makes the operations of a computer seem as straightforward as those of a bicycle. Avoiding technobabble or discussions of advanced hardware, the lucid explanations and colorful anecdotes in The Pattern on the Stone go straight to the heart of what computers really do.Hillis proceeds from an outline of basic logic to clear descriptions of programming languages, algorithms, and memory. He then takes readers in simple steps up to the most exciting developments in computing today—quantum computing, parallel computing, neural networks, and self-organizing systems.Written clearly and succinctly by one of the world's leading computer scientists, The Pattern on the Stone is an indispensable guide to understanding the workings of that most ubiquitous and important of machines: the computer.

Ethics in Information Technology


George W. Reynolds - 2002
    This book offers an excellent foundation in ethical decision-making for current and future business managers and IT professionals.

The Little Book on CoffeeScript


Alex MacCaw - 2012
    Through example code, this guide demonstrates how CoffeeScript abstracts JavaScript, providing syntactical sugar and preventing many common errors. You’ll learn CoffeeScript’s syntax and idioms step by step, from basic variables and functions to complex comprehensions and classes.Written by Alex MacCaw, author of JavaScript Web Applications (O’Reilly), with contributions from CoffeeScript creator Jeremy Ashkenas, this book quickly teaches you best practices for using this language—not just on the client side, but for server-side applications as well. It’s time to take a ride with the little language that could.Discover how CoffeeScript’s syntax differs from JavaScriptLearn about features such as array comprehensions, destructuring assignments, and classesExplore CoffeeScript idioms and compare them to their JavaScript counterpartsCompile CoffeeScript files in static sites with the Cake build systemUse CommonJS modules to structure and deploy CoffeeScript client-side applicationsExamine JavaScript’s bad parts—including features CoffeeScript was able to fix

Untangling the Web: What the Internet is Doing to you


Aleks Krotoski - 2012
    In the last decade, it has utterly transformed our lives. But what real effects is it having on our social world?What does it mean to be a modern family when dinner table conversations take place over smartphones? What happens to privacy when we readily share our personal lives with friends and corporations? Are our Facebook updates and Twitterings inspiring revolution or are they just a symptom of our global narcissism? What counts as celebrity, when everyone can have a following or be a paparazzo? And what happens to relationships when love, sex and hate can be mediated by a computer?Social psychologist Aleks Krotoski has spent a decade untangling the effects of the Web on how we work, live and play. In this groundbreaking book, she uncovers how much humanity has - and hasn't - changed because of our increasingly co-dependent relationship with the computer. In Untangling the Web, she tells the story of how the network became woven in our lives, and what it means to be alive in the age of the Internet.

Programming Concurrency on the JVM


Venkat Subramaniam - 2011
    Speedy and affordable multicore hardware is driving the demand for high-performing applications, and you can leverage the Java platform to bring these applications to life. Concurrency on the Java platform has evolved, from the synchronization model of JDK to software transactional memory (STM) and actor-based concurrency. This book is the first to show you all these concurrency styles so you can compare and choose what works best for your applications. You'll learn the benefits of each of these models, when and how to use them, and what their limitations are. Through hands-on exercises, you'll learn how to avoid shared mutable state and how to write good, elegant, explicit synchronization-free programs so you can create easy and safe concurrent applications. The techniques you learn in this book will take you from dreading concurrency to mastering and enjoying it. Best of all, you can work with Java or a JVM language of your choice - Clojure, JRuby, Groovy, or Scala - to reap the growing power of multicore hardware. If you are a Java programmer, you'd need JDK 1.5 or later and the Akka 1.0 library. In addition, if you program in Scala, Clojure, Groovy or JRuby you'd need the latest version of your preferred language. Groovy programmers will also need GPars.

Hacking: The Art of Exploitation


Jon Erickson - 2003
    This book explains the technical aspects of hacking, including stack based overflows, heap based overflows, string exploits, return-into-libc, shellcode, and cryptographic attacks on 802.11b.

To Save Everything, Click Here: The Folly of Technological Solutionism


Evgeny Morozov - 2013
    But how will these be affected once we delegate much of the responsibility for them to technology? The temptation of the digital age is to fix everything—from crime to corruption to pollution to obesity—by digitally quantifying, tracking, or gamifiying behavior. But when we change the motivations for our moral, ethical, and civic behavior, we may also change the very nature of that behavior itself. Technology, Evgeny Morozov proposes, can be a force for improvement—but only if we abandon the idea that it is necessarily revolutionary and instead genuinely interrogate what we are doing with it and what it is doing to us.From urging us to abandon monolithic ideas of “the Internet” to showing how to design more humane and democratic technological solutions, To Save Everything, Click Here is a dazzling tour of our technological future, and a searching investigation into the digital version of an enduring struggle: between man and his machines.

Java Generics and Collections: Speed Up the Java Development Process


Maurice Naftalin - 2006
    Generics and the greatly expanded collection libraries have tremendously increased the power of Java 5 and Java 6. But they have also confused many developers who haven't known how to take advantage of these new features.Java Generics and Collections covers everything from the most basic uses of generics to the strangest corner cases. It teaches you everything you need to know about the collections libraries, so you'll always know which collection is appropriate for any given task, and how to use it.Topics covered include:• Fundamentals of generics: type parameters and generic methods• Other new features: boxing and unboxing, foreach loops, varargs• Subtyping and wildcards• Evolution not revolution: generic libraries with legacy clients and generic clients with legacy libraries• Generics and reflection• Design patterns for generics• Sets, Queues, Lists, Maps, and their implementations• Concurrent programming and thread safety with collections• Performance implications of different collectionsGenerics and the new collection libraries they inspired take Java to a new level. If you want to take your software development practice to a new level, this book is essential reading.Philip Wadler is Professor of Theoretical Computer Science at the University of Edinburgh, where his research focuses on the design of programming languages. He is a co-designer of GJ, work that became the basis for generics in Sun's Java 5.0.Maurice Naftalin is Technical Director at Morningside Light Ltd., a software consultancy in the United Kingdom. He has most recently served as an architect and mentor at NSB Retail Systems plc, and as the leader of the client development team of a major UK government social service system."A brilliant exposition of generics. By far the best book on the topic, it provides a crystal clear tutorial that starts with the basics and ends leaving the reader with a deep understanding of both the use and design of generics." Gilad Bracha, Java Generics Lead, Sun Microsystems