Learning Perl


Randal L. Schwartz - 1993
    Written by three prominent members of the Perl community who each have several years of experience teaching Perl around the world, this edition has been updated to account for all the recent changes to the language up to Perl 5.8.Perl is the language for people who want to get work done. It started as a tool for Unix system administrators who needed something powerful for small tasks. Since then, Perl has blossomed into a full-featured programming language used for web programming, database manipulation, XML processing, and system administration--on practically all platforms--while remaining the favorite tool for the small daily tasks it was designed for. You might start using Perl because you need it, but you'll continue to use it because you love it.Informed by their years of success at teaching Perl as consultants, the authors have re-engineered the Llama to better match the pace and scope appropriate for readers getting started with Perl, while retaining the detailed discussion, thorough examples, and eclectic wit for which the Llama is famous.The book includes new exercises and solutions so you can practice what you've learned while it's still fresh in your mind. Here are just some of the topics covered:Perl variable typessubroutinesfile operationsregular expressionstext processingstrings and sortingprocess managementusing third party modulesIf you ask Perl programmers today what book they relied on most when they were learning Perl, you'll find that an overwhelming majority will point to the Llama. With good reason. Other books may teach you to program in Perl, but this book will turn you into a Perl programmer.

The Passionate Programmer


Chad Fowler - 2009
    In this book, you'll learn how to become an entrepreneur, driving your career in the direction of your choosing. You'll learn how to build your software development career step by step, following the same path that you would follow if you were building, marketing, and selling a product. After all, your skills themselves are a product. The choices you make about which technologies to focus on and which business domains to master have at least as much impact on your success as your technical knowledge itself--don't let those choices be accidental. We'll walk through all aspects of the decision-making process, so you can ensure that you're investing your time and energy in the right areas. You'll develop a structured plan for keeping your mind engaged and your skills fresh. You'll learn how to assess your skills in terms of where they fit on the value chain, driving you away from commodity skills and toward those that are in high demand. Through a mix of high-level, thought-provoking essays and tactical "Act on It" sections, you will come away with concrete plans you can put into action immediately. You'll also get a chance to read the perspectives of several highly successful members of our industry from a variety of career paths. As with any product or service, if nobody knows what you're selling, nobody will buy. We'll walk through the often-neglected world of marketing, and you'll create a plan to market yourself both inside your company and to the industry in general. Above all, you'll see how you can set the direction of your career, leading to a more fulfilling and remarkable professional life.

Electronics All-In-One for Dummies


Doug Lowe - 2011
    This friendly-and-straightforward guide introduces the basics of electronics and enhances your learning experience by debunking and explaining concepts such as circuits, analog and digital, schematics, voltage, safety concerns, and more. Packed with nearly 900 pages of detailed information, this book shows you how to develop your own breadboard, design your own circuit, and get savvy with schematics. Covers the basics of electronics and demystifies a variety of electronics conceptsEncourages you to dive in and design a variety of fun and interesting entertainment electronics, mobile, and automotive projectsOffers troubleshooting advice for common electronics challengesReviews circuits, schematics, voltage, safety concerns, and much moreSo, get plugged in and start your next electronics project today with this book by your side!

Java Concurrency in Practice


Brian Goetz - 2005
    Now this same team provides the best explanation yet of these new features, and of concurrency in general. Concurrency is no longer a subject for advanced users only. Every Java developer should read this book."--Martin BuchholzJDK Concurrency Czar, Sun Microsystems"For the past 30 years, computer performance has been driven by Moore's Law; from now on, it will be driven by Amdahl's Law. Writing code that effectively exploits multiple processors can be very challenging. Java Concurrency in Practice provides you with the concepts and techniques needed to write safe and scalable Java programs for today's--and tomorrow's--systems."--Doron RajwanResearch Scientist, Intel Corp"This is the book you need if you're writing--or designing, or debugging, or maintaining, or contemplating--multithreaded Java programs. If you've ever had to synchronize a method and you weren't sure why, you owe it to yourself and your users to read this book, cover to cover."--Ted NewardAuthor of Effective Enterprise Java"Brian addresses the fundamental issues and complexities of concurrency with uncommon clarity. This book is a must-read for anyone who uses threads and cares about performance."--Kirk PepperdineCTO, JavaPerformanceTuning.com"This book covers a very deep and subtle topic in a very clear and concise way, making it the perfect Java Concurrency reference manual. Each page is filled with the problems (and solutions!) that programmers struggle with every day. Effectively exploiting concurrency is becoming more and more important now that Moore's Law is delivering more cores but not faster cores, and this book will show you how to do it."--Dr. Cliff ClickSenior Software Engineer, Azul Systems"I have a strong interest in concurrency, and have probably written more thread deadlocks and made more synchronization mistakes than most programmers. Brian's book is the most readable on the topic of threading and concurrency in Java, and deals with this difficult subject with a wonderful hands-on approach. This is a book I am recommending to all my readers of The Java Specialists' Newsletter, because it is interesting, useful, and relevant to the problems facing Java developers today."--Dr. Heinz KabutzThe Java Specialists' Newsletter"I've focused a career on simplifying simple problems, but this book ambitiously and effectively works to simplify a complex but critical subject: concurrency. Java Concurrency in Practice is revolutionary in its approach, smooth and easy in style, and timely in its delivery--it's destined to be a very important book."--Bruce TateAuthor of Beyond Java" Java Concurrency in Practice is an invaluable compilation of threading know-how for Java developers. I found reading this book intellectually exciting, in part because it is an excellent introduction to Java's concurrency API, but mostly because it captures in a thorough and accessible way expert knowledge on threading not easily found elsewhere."--Bill VennersAuthor of Inside the Java Virtual MachineThreads are a fundamental part of the Java platform. As multicore processors become the norm, using concurrency effectively becomes essential for building high-performance applications. Java SE 5 and 6 are a huge step forward for the development of concurrent applications, with improvements to the Java Virtual Machine to support high-performance, highly scalable concurrent classes and a rich set of new concurrency building blocks. In Java Concurrency in Practice , the creators of these new facilities explain not only how they work and how to use them, but also the motivation and design patterns behind them.However, developing, testing, and debugging multithreaded programs can still be very difficult; it is all too easy to create concurrent programs that appear to work, but fail when it matters most: in production, under heavy load. Java Concurrency in Practice arms readers with both the theoretical underpinnings and concrete techniques for building reliable, scalable, maintainable concurrent applications. Rather than simply offering an inventory of concurrency APIs and mechanisms, it provides design rules, patterns, and mental models that make it easier to build concurrent programs that are both correct and performant.This book covers:Basic concepts of concurrency and thread safety Techniques for building and composing thread-safe classes Using the concurrency building blocks in java.util.concurrent Performance optimization dos and don'ts Testing concurrent programs Advanced topics such as atomic variables, nonblocking algorithms, and the Java Memory Model

Quantum Computing Since Democritus


Scott Aaronson - 2013
    Full of insights, arguments and philosophical perspectives, the book covers an amazing array of topics. Beginning in antiquity with Democritus, it progresses through logic and set theory, computability and complexity theory, quantum computing, cryptography, the information content of quantum states and the interpretation of quantum mechanics. There are also extended discussions about time travel, Newcomb's Paradox, the anthropic principle and the views of Roger Penrose. Aaronson's informal style makes this fascinating book accessible to readers with scientific backgrounds, as well as students and researchers working in physics, computer science, mathematics and philosophy.

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.

Understanding Exposure: How to Shoot Great Photographs with a Film or Digital Camera


Bryan Peterson - 1990
    Peterson stresses the importance of metering the subject for a starting exposure, and then explains how to use various exposure meters and different kinds of lighting. The book contains lessons on each element of the exposure-aperature, shutter speed, iso-and how it relates to the other two in terms of depth of field, freezing and blurring action, and shooting in low light or at night. A section on special techniques explores such options as deliberate under- and overexposures, how to produce double exposures, bracketing, shooting the moon, and the use of filters. Understanding Exposure demonstrates that there are always creative choices about how to expose a picture-and that the decision is up to the photographer, not the camera.

Effective Java


Joshua Bloch - 2001
    The principal enhancement in Java 8 was the addition of functional programming constructs to Java's object-oriented roots. Java 7, 8, and 9 also introduced language features, such as the try-with-resources statement, the diamond operator for generic types, default and static methods in interfaces, the @SafeVarargs annotation, and modules. New library features include pervasive use of functional interfaces and streams, the java.time package for manipulating dates and times, and numerous minor enhancements such as convenience factory methods for collections. In this new edition of Effective Java, Bloch updates the work to take advantage of these new language and library features, and provides specific best practices for their use. Java's increased support for multiple paradigms increases the need for best-practices advice, and this book delivers. As in previous editions, each chapter consists of several "items," each presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and updated code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why. Coverage includes:Updated techniques and best practices on classic topics, including objects, classes, methods, libraries, and generics How to avoid the traps and pitfalls of commonly misunderstood subtleties of the platform Focus on the language and its most fundamental libraries, such as java.lang and java.util

Working Effectively with Legacy Code


Michael C. Feathers - 2004
    This book draws on material Michael created for his renowned Object Mentor seminars, techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control. The topics covered include: Understanding the mechanics of software change, adding features, fixing bugs, improving design, optimizing performance Getting legacy code into a test harness Writing tests that protect you against introducing new problems Techniques that can be used with any language or platform, with examples in Java, C++, C, and C# Accurately identifying where code changes need to be made Coping with legacy systems that aren't object-oriented Handling applications that don't seem to have any structureThis book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.

Jab, Jab, Jab, Right Hook: How to Tell Your Story in a Noisy Social World


Gary Vaynerchuk - 2013
    Even companies committed to jabbing-patiently engaging with customers to build the relationships so crucial to successful social media campaigns-still yearn to land the powerful, bruising swing that will knock out their opponent or their customer's resistance in one tooth-spritzing, killer blow. Right hooks, after all, convert traffic to sales. They easily show results and ROI. Except when they don't.In the same passionate, street-wise style readers have come to expect, Gary Vaynerchuk is on a mission to improve marketers' right hooks by changing the way they fight to make their customers happy, and ultimately to compete. Thanks to the massive change and proliferation in social media platforms in the last four years, the winning combination of jabs and right hooks is different now. Communication is still key, but context matters more than ever. It's not just about developing high-quality content, but developing high-quality content perfectly adapted to specific social media platforms and mobile devices-content tailor-made for Facebook, YouTube, Instagram, Pinterest, Twitter, and Tumblr. A mash-up of the best elements of Crush It! and The Thank You Economy with a 2013 spin, here is a blueprint to social media marketing strategies that really works.

Hacker's Delight


Henry S. Warren Jr. - 2002
    Aiming to tell the dark secrets of computer arithmetic, this title is suitable for library developers, compiler writers, and lovers of elegant hacks.

Digital SLR Cameras & Photography for Dummies


David D. Busch - 2004
    Digital SLR Cameras & Photography For Dummies covers the hardware, the software, and the techniques you need to take top-notch digital photos with your dSLR. This guide will get you clicking with information on:The advantages of a dSLR camera: more control over what portions of your images are in sharp focus; a more accurate viewfinder; lower levels of the annoying grain effect called noise; ability to capture the most fleeting action; more control over depth-of-field; ability to review your image immediately, upload the photo to your computer, make adjustments, and print a full-color print in minutes Choosing the accessories that will take your dSLR to the next level, depending on the type of photography you do and your current and future needs Megapixels, and matching pixels to print sizes and printers The components of a dSLR: lens; viewing system, aperture, shutter, light-sensitive component; medium for storing the captured image Accessorizing your dSLR with memory cards, filter add-ons (infrared, polarizers, neutral density, and special effects), electronic flash, tripods, and more Once you get your hands on a dSLR camera (literally), this reference helps you use its features and controls to take great pictures. Complete with more than 300 color photos, lots of tables, and clear, step-by-step instructions for various situations, subjects, and calculations, Digital SLR Cameras & Photography For Dummies helps you refine your techniques with info on:Getting the exposure right with the histogram, the metering system, or Program, Aperture Priority, Shutter Priority, or Manual Exposure modes Achieving the right focus with manual focus or autofocus The scoop on lenses--prime, zoom, and special--and using them appropriately and creativelyHow to use interchangeable lenses, set up speedy continuous-shooting burst modes, apply selective focus, and shoot under the lowest light levels Special features of dSLR to reduce noise, cancel camera shake, do time-lapse photography, and shoot infrared photos Working with the RAW format, JPEG, or both Taking action, flash, or sequence photos or freezing the action Composition basics, including the Rule of Thirds, tips for shooting portraits or group photos, and more Using image editors to fix-up your photos (with cropping, tonal adjustments, color correction, spot removal, sharpening/blurring, and more), with step-by-step instructions for using Photoshop Compositing images Choosing your printer and evaluating your output options With Digital SLR Cameras & Photography For Dummies, you won't only get the how-to for various types of shots, you'll see the results with great color photos. In no time, you'll be taking great photos of your own.

How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle--How the World's Smartest Companies Select the Most Creative Thinkers


William Poundstone - 2003
    For the first time, William Poundstone reveals the toughest questions used at Microsoft and other Fortune 500 companies -- and supplies the answers. He traces the rise and controversial fall of employer-mandated IQ tests, the peculiar obsessions of Bill Gates (who plays jigsaw puzzles as a competitive sport), the sadistic mind games of Wall Street (which reportedly led one job seeker to smash a forty-third-story window), and the bizarre excesses of today's hiring managers (who may start off your interview with a box of Legos or a game of virtual Russian roulette). How Would You Move Mount Fuji? is an indispensable book for anyone in business. Managers seeking the most talented employees will learn to incorporate puzzle interviews in their search for the top candidates. Job seekers will discover how to tackle even the most brain-busting questions, and gain the advantage that could win the job of a lifetime. And anyone who has ever dreamed of going up against the best minds in business may discover that these puzzles are simply a lot of fun. Why are beer cans tapered on the end, anyway?

The Art of Readable Code


Dustin Boswell - 2010
    Over the past five years, authors Dustin Boswell and Trevor Foucher have analyzed hundreds of examples of "bad code" (much of it their own) to determine why they’re bad and how they could be improved. Their conclusion? You need to write code that minimizes the time it would take someone else to understand it—even if that someone else is you.This book focuses on basic principles and practical techniques you can apply every time you write code. Using easy-to-digest code examples from different languages, each chapter dives into a different aspect of coding, and demonstrates how you can make your code easy to understand.Simplify naming, commenting, and formatting with tips that apply to every line of codeRefine your program’s loops, logic, and variables to reduce complexity and confusionAttack problems at the function level, such as reorganizing blocks of code to do one task at a timeWrite effective test code that is thorough and concise—as well as readable"Being aware of how the code you create affects those who look at it later is an important part of developing software. The authors did a great job in taking you through the different aspects of this challenge, explaining the details with instructive examples." —Michael Hunger, passionate Software Developer

Stick and Rudder: An Explanation of the Art of Flying


Wolfgang Langewiesche - 1944
    It has been continuously in print for thirty-three years, and has enjoyed steadily increasing sales. Flight instructors have found that the book does indeed explain important phases of the art of flying, in a way the learner can use. It shows precisely what the pilot does when he flies, just how he does it, and why.