More Programming Pearls: Confessions of a Coder


Jon L. Bentley - 1988
    These techniques deal with real programs and they are realistically illustrated, using the C and Awk languages. Bentley also provides the reader with some tricks of the programmer's trade, like a collection of rules of thumb and hints for finding simple solutions to hard problems.These essays also originally appeared in the author's column in Communication of the ACM, and have been substantially revised, incorporating new sections, problems, and reader comments.

Ignition!: An informal history of liquid rocket propellants


John Drury Clark - 1972
    A favorite of Tesla and SpaceX founder Elon Musk, listeners will want to tune into this "really good book on rocket[s]," available for the first time in audio. Ignition! is the story of the search for a rocket propellant which could be trusted to take man into space. This search was a hazardous enterprise carried out by rival labs who worked against the known laws of nature, with no guarantee of success or safety. Acclaimed scientist and sci-fi author John Drury Clark writes with irreverent and eyewitness immediacy about the development of the explosive fuels strong enough to negate the relentless restraints of gravity. The resulting volume is as much a memoir as a work of history, sharing a behind-the-scenes view of an enterprise that eventually took men to the moon, missiles to the planets, and satellites to outer space. A classic work in the history of science, listeners will want to get their hands on this influential classic, available for the first time in decades.

Head First Design Patterns


Eric Freeman - 2004
     At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun. You want to learn about the patterns that matter--why to use them, when to use them, how to use them (and when NOT to use them). But you don't just want to see how patterns look in a book, you want to know how they look "in the wild". In their native environment. In other words, in real world applications. You also want to learn how patterns are used in the Java API, and how to exploit Java's built-in pattern support in your own code. You want to learn the real OO design principles and why everything your boss told you about inheritance might be wrong (and what to do instead). You want to learn how those principles will help the next time you're up a creek without a design pattern. Most importantly, you want to learn the "secret language" of Design Patterns so that you can hold your own with your co-worker (and impress cocktail party guests) when he casually mentions his stunningly clever use of Command, Facade, Proxy, and Factory in between sips of a martini. You'll easily counter with your deep understanding of why Singleton isn't as simple as it sounds, how the Factory is so often misunderstood, or on the real relationship between Decorator, Facade and Adapter. With Head First Design Patterns, you'll avoid the embarrassment of thinking Decorator is something from the "Trading Spaces" show. Best of all, in a way that won't put you to sleep! We think your time is too important (and too short) to spend it struggling with academic texts. If you've read a Head First book, you know what to expect--a visually rich format designed for the way your brain works. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.

Coders at Work: Reflections on the Craft of Programming


Peter Seibel - 2009
    As the words "at work" suggest, Peter Seibel focuses on how his interviewees tackle the day–to–day work of programming, while revealing much more, like how they became great programmers, how they recognize programming talent in others, and what kinds of problems they find most interesting. Hundreds of people have suggested names of programmers to interview on the Coders at Work web site: http://www.codersatwork.com. The complete list was 284 names. Having digested everyone’s feedback, we selected 16 folks who’ve been kind enough to agree to be interviewed:- Frances Allen: Pioneer in optimizing compilers, first woman to win the Turing Award (2006) and first female IBM fellow- Joe Armstrong: Inventor of Erlang- Joshua Bloch: Author of the Java collections framework, now at Google- Bernie Cosell: One of the main software guys behind the original ARPANET IMPs and a master debugger- Douglas Crockford: JSON founder, JavaScript architect at Yahoo!- L. Peter Deutsch: Author of Ghostscript, implementer of Smalltalk-80 at Xerox PARC and Lisp 1.5 on PDP-1- Brendan Eich: Inventor of JavaScript, CTO of the Mozilla Corporation - Brad Fitzpatrick: Writer of LiveJournal, OpenID, memcached, and Perlbal - Dan Ingalls: Smalltalk implementor and designer- Simon Peyton Jones: Coinventor of Haskell and lead designer of Glasgow Haskell Compiler- Donald Knuth: Author of The Art of Computer Programming and creator of TeX- Peter Norvig: Director of Research at Google and author of the standard text on AI- Guy Steele: Coinventor of Scheme and part of the Common Lisp Gang of Five, currently working on Fortress- Ken Thompson: Inventor of UNIX- Jamie Zawinski: Author of XEmacs and early Netscape/Mozilla hackerWhat you’ll learn:How the best programmers in the world do their jobWho is this book for?Programmers interested in the point of view of leaders in the field. Programmers looking for approaches that work for some of these outstanding programmers.

Debug It!: Find, Repair, and Prevent Bugs in Your Code


Paul Butcher - 2009
    Others have the knack of unerringly zeroing in on the root cause of a bug. Are they geniuses? Just lucky? No, they've learned the secrets of professional debugging. This book will equip you with the tools, techniques and approaches-proven in the crucible of professional software development-to ensure that you can tackle any bug with confidence. You'll learn how to handle every stage of the bug life-cycle, from constructing software that makes debugging easy, through detection, reproduction, diagnosis and rolling out your eventual fix. If you develop software, sooner or later you're going to discover that it doesn't always behave as you intended. Working out why it's misbehaving can be hard. Sometimes very hard. Debug It! is here to help! All bugs are different: there is no silver bullet. You've got to rely upon your intellect, intuition, detective skills and yes, even a little luck. But that doesn't mean that you're completely on your own-there is much you can learn from those who have gone before. This book distills decades of hard-won experience gained in the trenches of professional software development, giving you a head-start and arming you with the tools you need to get to the bottom of the problem, whatever you're faced with. Whether you're writing Java or assembly language, targeting servers or embedded micro-controllers, using agile or traditional approaches, the same basic bug-fixing principles apply. From constructing software that is easy to debug (and incidentally less likely to contain bugs in the first place), through handling bug reports to rolling out your ultimate fix, we'll cover the entire life-cycle of a bug. You'll learn about the empirical approach, which leverages your software's unique ability to show you what's really happening, the importance of finding a reliable and convenient means of reproducing a bug, and common pitfalls so you can avoid them. You'll see how to use commonly available tools to automatically detect problems before they're reported by customers and how to construct "transparent software" that provides access to critical information and internal state.

The Principles of Product Development Flow: Second Generation Lean Product Development


Donald G. Reinertsen - 2009
    He explains why invisible and unmanaged queues are the underlying root cause of poor product development performance. He shows why these queues form and how they undermine the speed, quality, and efficiency in product development.

You Don't Know JS: Up & Going


Kyle Simpson - 2015
    With the "You Don’t Know JS" book series, you’ll get a more complete understanding of JavaScript, including trickier parts of the language that many experienced JavaScript programmers simply avoid.The series’ first book, Up & Going, provides the necessary background for those of you with limited programming experience. By learning the basic building blocks of programming, as well as JavaScript’s core mechanisms, you’ll be prepared to dive into the other, more in-depth books in the series—and be well on your way toward true JavaScript.With this book you will: Learn the essential programming building blocks, including operators, types, variables, conditionals, loops, and functions Become familiar with JavaScript's core mechanisms such as values, function closures, this, and prototypes Get an overview of other books in the series—and learn why it’s important to understand all parts of JavaScript

Concurrency in Go: Tools and Techniques for Developers


Katherine Cox-Buday - 2017
    If you're a developer familiar with Go, this practical book demonstrates best practices and patterns to help you incorporate concurrency into your systems.Author Katherine Cox-Buday takes you step-by-step through the process. You'll understand how Go chooses to model concurrency, what issues arise from this model, and how you can compose primitives within this model to solve problems. Learn the skills and tooling you need to confidently write and implement concurrent systems of any size.Understand how Go addresses fundamental problems that make concurrency difficult to do correctlyLearn the key differences between concurrency and parallelismDig into the syntax of Go's memory synchronization primitivesForm patterns with these primitives to write maintainable concurrent codeCompose patterns into a series of practices that enable you to write large, distributed systems that scaleLearn the sophistication behind goroutines and how Go's runtime stitches everything together

Our Robots, Ourselves: Robotics and the Myths of Autonomy


David A. Mindell - 2015
    it is required reading as we seriously engage one of the most important debates of our time."--Sherry Turkle, author of Reclaiming Conversation: The Power of Talk in a Digital Age From drones to Mars rovers--an exploration of the most innovative use of robots today and a provocative argument for the crucial role of humans in our increasingly technological future.In Our Robots, Ourselves, David Mindell offers a fascinating behind-the-scenes look at the cutting edge of robotics today, debunking commonly held myths and exploring the rapidly changing relationships between humans and machines.Drawing on firsthand experience, extensive interviews, and the latest research from MIT and elsewhere, Mindell takes us to extreme environments--high atmosphere, deep ocean, and outer space--to reveal where the most advanced robotics already exist. In these environments, scientists use robots to discover new information about ancient civilizations, to map some of the world's largest geological features, and even to "commute" to Mars to conduct daily experiments. But these tools of air, sea, and space also forecast the dangers, ethical quandaries, and unintended consequences of a future in which robotics and automation suffuse our everyday lives.Mindell argues that the stark lines we've drawn between human and not human, manual and automated, aren't helpful for understanding our relationship with robotics. Brilliantly researched and accessibly written, Our Robots, Ourselves clarifies misconceptions about the autonomous robot, offering instead a hopeful message about what he calls "rich human presence" at the center of the technological landscape we are now creating.

Digital Signal Processing Implementations: Using DSP Microprocessors--With Examples from TMS320C54xx


Avtar Singh - 2003
    The objective of the book is to help students understand the architecture, programming, and interfacing of commercially available programmable DSP devices, and to effectively use them in system implementations. Throughout the book, the authors utilize a popular family of DSP devices, viz., TMS320C54xx from Texas Instruments. In the end, students will be comfortable in using both hardware and software for designing with the programmable DSP devices.

Engineering Thermodynamics


P.K. Nag - 1982
    

The Unwritten Laws of Business


W.J. King - 1944
    The Unwritten Laws of Business is such a book. Originally published over 60 years ago as The Unwritten Laws of Engineering, it has sold over 100,000 copies, despite the fact that it has never been available before to general readers. Fully revised for business readers today, here are but a few of the gems you’ll find in this little-known business classic: If you take care of your present job well, the future will take care of itself.The individual who says nothing is usually credited with having nothing to say.Whenever you are performing someone else’s function, you are probably neglecting your own.Martyrdom only rarely makes heroes, and in the business world, such heroes and martyrs often find themselves unemployed.Refreshingly free of the latest business fads and jargon, this is a book that is wise and insightful, capturing and distilling the timeless truths and principles that underlie management and business the world over.The little book with the big history.In the summer of 2005, Business 2.0 published a cover story on Raytheon CEO William Swanson’s self-published pamphlet, Swanson’s Unwritten Rules of Management. Lauded by such chief executives as Jack Welch and Warren Buffett, the booklet becamea quiet phenomenon. As it turned out, much of Swanson’s book drew from a classic of business literature that has been in print for more than sixty years. Now, in a new edition revised and updated for business readers today, we are reissuing the 1944 classic that inspired a number of Swanson’s “rules”: The Unwritten Laws of Business. Filled with sage advice and written in a spare, engaging style, The Unwritten Laws of Business offers insights on working with others, reporting to a boss, organizing a project, running a meeting, advancing your career, and more. Here’s just a sprinkling of the old-fashioned, yet surprisingly relevant, wisdom you’ll find in these pages:If you have no intention of listening to, considering, and perhaps using, someone’s opinion, don’t ask for it.Count any meeting a failure that does not end up with a definite understanding as to what’s going to be done, who’s going to do it, and when.The common belief that everyone can do anything if they just try hard enough is a formula for inefficiency at best and for complete failure at worst.It is natural enough to “look out for Number One first,” but when you do, your associates will be noticeably disinclined to look out for you.Whether you’re a corporate neophyte or seasoned manager, this charming book reveals everything you need to know about the “unwritten” laws of business.

Cats’ Paws and Catapults: Mechanical Worlds of Nature and People


Steven Vogel - 1998
    Why, then, do their designs diverge so sharply? Humans, for instance, love right angles, while nature's angles are rarely right and usually rounded. Our technology goes around on wheels—and on rotating pulleys, gears, shafts, and cams—yet in nature only the tiny propellers of bacteria spin as true wheels. Our hinges turn because hard parts slide around each other, whereas nature's hinges (a rabbit's ear, for example) more often swing by bending flexible materials. In this marvelously surprising, witty book, Steven Vogel compares these two mechanical worlds, introduces the reader to his field of biomechanics, and explains how the nexus of physical law, size, and convenience of construction determine the designs of both people and nature. "This elegant comparison of human and biological technology will forever change the way you look at each."—Michael LaBarbera, American Scientist

Domain-Driven Design: Tackling Complexity in the Heart of Software


Eric Evans - 2003
    "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read. Eric has lots of interesting stories, and he has a way with words. I see this book as essential reading for software developers--it is a future classic." --Ralph Johnson, author of Design Patterns "If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do. "Eric Evans convincingly argues for the importance of domain modeling as the central focus of development and provides a solid framework and set of techniques for accomplishing it. This is timeless wisdom, and will hold up long after the methodologies du jour have gone out of fashion." --Dave Collins, author of Designing Object-Oriented User Interfaces "Eric weaves real-world experience modeling--and building--business applications into a practical, useful book. Written from the perspective of a trusted practitioner, Eric's descriptions of ubiquitous language, the benefits of sharing models with users, object life-cycle management, logical and physical application structuring, and the process and results of deep refactoring are major contributions to our field." --Luke Hohmann, author of Beyond Software Architecture "This book belongs on the shelf of every thoughtful software developer." --Kent Beck "What Eric has managed to capture is a part of the design process that experienced object designers have always used, but that we have been singularly unsuccessful as a group in conveying to the rest of the industry. We've given away bits and pieces of this knowledge...but we've never organized and systematized the principles of building domain logic. This book is important." --Kyle Brown, author of Enterprise Java(TM) Programming with IBM(R) WebSphere(R) The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process. Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development. Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis--refactoring not just the code but the model underlying the code--in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:Getting all team members to speak the same language Connecting model and implementation more deeply Sharpening key distinctions in a model Managing the lifecycle of a domain object Writing domain code that is safe to combine in elaborate ways Making complex code obvious and predictable Formulating a domain vision statement Distilling the core of a complex domain Digging out implicit concepts needed in the model Applying analysis patterns Relating design patterns to the model Maintaining model integrity in a large system Dealing with coexisting models on the same project Organizing systems with large-scale structures Recognizing and responding to modeling breakthroughs With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.

Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)


Michael T. Nygard - 2007
    Did you design your system to survivef a sudden rush of visitors from Digg or Slashdot? Or an influx of real world customers from 100 different countries? Are you ready for a world filled with flakey networks, tangled databases, and impatient users?If you're a developer and don't want to be on call for 3AM for the rest of your life, this book will help.In Release It!, Michael T. Nygard shows you how to design and architect your application for the harsh realities it will face. You'll learn how to design your application for maximum uptime, performance, and return on investment.Mike explains that many problems with systems today start with the design.