Book picks similar to
Optics By Example by Chris Penner


programming
haskell
software
computer-science

On LISP: Advanced Techniques for Common LISP


Paul Graham - 1993
    On Lisp explains the reasons behind Lisp's growing popularity as a mainstream programming language. On Lisp is a comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. It gives the first complete description of macros and macro applications. The book also covers important subjects related to bottom-up programming, including functional programming, rapid prototyping, interactive development, and embedded languages. The final chapter takes a deeper look at object-oriented programming than previous Lisp books, showing the step-by-step construction of a working model of the Common Lisp Object System (CLOS). As well as an indispensable reference, On Lisp is a source of software. Its examples form a library of functions and macros that readers will be able to use in their own Lisp programs.

I Heart Logs: Event Data, Stream Processing, and Data Integration


Jay Kreps - 2014
    Even though most engineers don't think much about them, this short book shows you why logs are worthy of your attention.Based on his popular blog posts, LinkedIn principal engineer Jay Kreps shows you how logs work in distributed systems, and then delivers practical applications of these concepts in a variety of common uses--data integration, enterprise architecture, real-time stream processing, data system design, and abstract computing models.Go ahead and take the plunge with logs; you're going love them.Learn how logs are used for programmatic access in databases and distributed systemsDiscover solutions to the huge data integration problem when more data of more varieties meet more systemsUnderstand why logs are at the heart of real-time stream processingLearn the role of a log in the internals of online data systemsExplore how Jay Kreps applies these ideas to his own work on data infrastructure systems at LinkedIn

Programming Elixir: Functional |> Concurrent |> Pragmatic |> Fun


Dave Thomas - 2013
    You know you need concurrent applications, but also know these are almost impossible to get right. Meet Elixir, a functional, concurrent language built on the rock-solid Erlang VM. Elixir’s pragmatic syntax and built-in support for metaprogramming will make you productive and keep you interested for the long haul. This book is the introduction to Elixir for experienced programmers.Maybe you need something that’s closer to Ruby, but with a battle-proven environment that’s unrivaled for massive scalability, concurrency, distribution, and fault tolerance. Maybe the time is right for the Next Big Thing. Maybe it’s Elixir.

Structure and Interpretation of Computer Programs


Harold Abelson - 1984
    This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published. A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.

The Rust Programming Language


Steve Klabnik
    This is the undisputed go-to guide to Rust, written by two members of the Rust core team, with feedback and contributions from 42 members of the community. The book assumes that you’ve written code in another programming language but makes no assumptions about which one, meaning the material is accessible and useful to developers from a wide variety of programming backgrounds.Known by the Rust community as "The Book," The Rust Programming Language includes concept chapters, where you’ll learn about a particular aspect of Rust, and project chapters, where you’ll apply what you’ve learned so far to build small programs.The Book opens with a quick hands-on project to introduce the basics then explores key concepts in depth, such as ownership, the type system, error handling, and fearless concurrency. Next come detailed explanations of Rust-oriented perspectives on topics like pattern matching, iterators, and smart pointers, with concrete examples and exercises--taking you from theory to practice.The Rust Programming Language will show you how to: Grasp important concepts unique to Rust like ownership, borrowing, and lifetimes Use Cargo, Rust’s built-in package manager, to build and maintain your code, including downloading and building dependencies Effectively use Rust’s zero-cost abstractions and employ your ownYou’ll learn to develop reliable code that’s speed and memory efficient, while avoiding the infamous and arcane programming pitfalls common at the systems level. When you need to dive down into lower-level control, this guide will show you how without taking on the customary risk of crashes or security holes and without requiring you to learn the fine points of a fickle toolchain.You’ll also learn how to create command line programs, build single- and multithreaded web servers, and much more.The Rust Programming Language fully embraces Rust’s potential to empower its users. This friendly and approachable guide will help you build not only your knowledge of Rust but also your ability to program with confidence in a wider variety of domains.

Working at the Ubuntu Command-Line Prompt


Keir Thomas - 2011
    His books have been read by over 1,000,000 people and are #1 best-sellers. His book Beginning Ubuntu Linux recently entered its sixth edition, and picked-up a Linux Journal award along the way. Thomas is also the author of Ubuntu Kung Fu. * * * * * * * * * * * * * * * * * Get to grips with the Ubuntu command-line with this #1 best-selling and concise guide. "Best buck I've spent yet" — Amazon review.* Readable, accessible and easy to understand;* Learn essential Ubuntu vocational skills, or read just for fun;* Covers Ubuntu commands, syntax, the filesystem, plus advanced techniques;* For ANY version of Linux based on Debian, such as Linux Mint--not just Ubuntu!;* Includes BONUS introduction to Ubuntu chapter, plus a glossary appendix and a guide to reading Linux/Unix documentation.

Introduction to Networking: How the Internet Works


Charles Severance - 2015
     While very complex, the Internet operates on a few relatively simple concepts that anyone can understand. Networks and networked applications are embedded in our lives. Understanding how these technologies work is invaluable.  This book was written for everyone - no technical knowledge is required!While this book is not specifically about the Network+ or CCNA certifications, it as a way to give students interested in these certifications a starting point.

Linux Kernel Development


Robert Love - 2003
    The book details the major subsystems and features of the Linux kernel, including its design, implementation, and interfaces. It covers the Linux kernel with both a practical and theoretical eye, which should appeal to readers with a variety of interests and needs. The author, a core kernel developer, shares valuable knowledge and experience on the 2.6 Linux kernel. Specific topics covered include process management, scheduling, time management and timers, the system call interface, memory addressing, memory management, the page cache, the VFS, kernel synchronization, portability concerns, and debugging techniques. This book covers the most interesting features of the Linux 2.6 kernel, including the CFS scheduler, preemptive kernel, block I/O layer, and I/O schedulers. The third edition of Linux Kernel Development includes new and updated material throughout the book:An all-new chapter on kernel data structuresDetails on interrupt handlers and bottom halvesExtended coverage of virtual memory and memory allocationTips on debugging the Linux kernelIn-depth coverage of kernel synchronization and lockingUseful insight into submitting kernel patches and working with the Linux kernel community

Paradigms of Artificial Intelligence Programming: Case Studies in Common LISP


Peter Norvig - 1991
    By reconstructing authentic, complex AI programs using state-of-the-art Common Lisp, the book teaches students and professionals how to build and debug robust practical programs, while demonstrating superior programming style and important AI concepts. The author strongly emphasizes the practical performance issues involved in writing real working programs of significant size. Chapters on troubleshooting and efficiency are included, along with a discussion of the fundamentals of object-oriented programming and a description of the main CLOS functions. This volume is an excellent text for a course on AI programming, a useful supplement for general AI courses and an indispensable reference for the professional programmer.

Exploring CQRS and Event Sourcing


Dominic Betts - 2012
    It presents a learning journey, not definitive guidance. It describes the experiences of a development team with no prior CQRS proficiency in building, deploying (to Windows Azure), and maintaining a sample real-world, complex, enterprise system to showcase various CQRS and ES concepts, challenges, and techniques.The development team did not work in isolation; we actively sought input from industry experts and from a wide group of advisors to ensure that the guidance is both detailed and practical.The CQRS pattern and event sourcing are not mere simplistic solutions to the problems associated with large-scale, distributed systems. By providing you with both a working application and written guidance, we expect you’ll be well prepared to embark on your own CQRS journey.

The Node Beginner Book


Manuel Kiessling - 2011
    The aim of The Node Beginner Book is to get you started with developing applications for Node.js, teaching you everything you need to know about advanced JavaScript along the way on 59 pages.

Living Clojure


Carin Meier - 2015
    Author Carin Meier not only provides a practical overview of this JVM language and its functional programming concepts, but also includes a complete hands-on training course to help you learn Clojure in a structured way.The first half of the book takes you through Closure’s unique design and lets you try your hand at two Clojure projects, including a web app. The holistic course in second half provides you with critical tools and resources, including ways to plug into the Clojure community. Understand the basic structure of a Clojure expression Learn how to shape and control code in a functional way Discover how Clojure handles real-world state and concurrency Take advantage of Java classes and learn how Clojure handles polymorphism Manage and use libraries in a Clojure project Use the core.async library for asynchronous and concurrent communication Explore the power of macros in Clojure programming Learn how to think in Clojure by following the book’s seven-week training course

Beginning Programming with Java for Dummies


Barry Burd - 2003
    Covering everything from basic Java development concepts to the latest tools and techniques used in Java, this book will put would-be programmers on their way to Java mastery Explores what goes into creating a program, how to put the pieces together, dealing with standard programming challenges, debugging, and making it work Updated for the release of the Java SDK 2.0, with all examples revised to reflect the changes in the technology

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."

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?