Book picks similar to
Clojure Polymorphism by Paul Stadig


programming
tech
dev
functional-programming

Types and Programming Languages


Benjamin C. Pierce - 2002
    The study of type systems--and of programming languages from a type-theoretic perspective--has important applications in software engineering, language design, high-performance compilers, and security.This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Each chapter is accompanied by numerous exercises and solutions, as well as a running implementation, available via the Web. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material.The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators. Extended case studies develop a variety of approaches to modeling the features of object-oriented languages.

A Lesser Photographer: Escape the Gear Trap and Focus on What Matters


C.J. Chilvers - 2018
    Less gear. Less anxiety. Less stress. Less fear. A Lesser Photographer is the missing guide you've always wanted to the only gear that really matters: the gear between your ears. In under an hour, you’ll be able to identify the myths you’ve been taught about photography and embrace useful creative habits that will set you apart. Praise for previous editions: “For something beautiful and well-said, check out A Lesser Photographer.” — David duChemin “Amazing read…I really recommend everyone get a copy.” — Chris Marquardt “CJ Chilvers reevaluates what it means to be a photographer in this manifesto. Most of the points apply to virtually any creative endeavor or obsession. ‘The real show is outside the viewfinder.’” — Jim Coudal “I have to say, CJ has a great attitude. If you care at all about photography, he’s a must read.” — Patrick Rhone “Every photographer should follow CJ Chilvers.” — Eric Kim

Professional ASP.NET MVC 3


Jon Galloway - 2011
    Book content includes:Getting started with MVC 3, including a rundown of the new project dialog, directory structure and an introduction to NuGet (PowerShell inside Visual Studio 2010)Controllers and Actions View and ViewModelsModels and Databases, including using NuGet to install Entity Framework Code FirstForms and HTML HelpersValidation and Data AnnotationsMembership, Authorization and SecurityAjaxRouting, including routing to Http HandlersNuGet, including using it from the Dialog 'and Package Console, creating a package, custom PowerShell actions and running from both a local repository and the WebDependency InjectionUnit testingExtending ASP.NET MVC with filters and Extensibility pointsWhat's new in MVC 3

Grokking Simplicity: Taming complex software with functional thinking


Eric Normand - 2019
    Grokking Simplicity is a friendly, practical guide that will change the way you approach software design and development. It introduces a unique approach to functional programming that explains why certain features of software are prone to complexity, and teaches you the functional techniques you can use to simplify these systems so that they’re easier to test and debug.

Beaten and Left for Dead: The Story of Teri Jendusa-Nicolai


Dave Alfvin - 2017
    The Crime of the Decade in Wisconsin. WITH PHOTOS Teri Jendusa never dreamed she would marry a violent, malignant narcissist like David Larsen. But she did. Why? Simple. Larsen cleverly concealed his true nature until the marriage vows were final. David, an eventual church council president and model citizen, rapidly began to morph into a monster and sociopath, telling Teri on their wedding day, “Now, I own you.” Beaten and Left For Dead is a book about extreme marital violence, dominant control and psychological torment through the mind of the out-of-control David Larsen. It's also about survival, faith and a mother’s will to live for her children’s sake...as she faces death, face to face. This is an ideal book for women’s studies and book clubs as it looks inside a large women’s shelter, giving the reader a glimpse of a support network. The author also interviews a counselor who works with violent men with surprising results. Teri Jendusa-Nicolai continues to crusade for women’s issues to this day and currently works with a Wisconsin commission on domestic violence. EDITORIAL PRAISE "Teri Jendusa-Nicolai's story is a powerful example of the horrific lengths of barbarism a man can go to when he considers a woman his personal property. And it is, equally, an inspiring, riveting story of a woman's courage and clear thinking under the absolute worst of conditions, and of her tenacious hold to life...I am so grateful to Teri Jendusa-Nicolai and to Dave Alfvin for getting this story out to us. Don't miss it." --Lundy Bancroft, best-selling author on domestic violence, trainer, and activist on male violence against women "This book is important because it gets our message out as to what we do to help abusers change their value systems." --Maureen Manning-Rosenfeld, Clinical Professional Counselor

Akka in Action


Raymond Roestenburg - 2012
    Akka uses Actors-independently executing processes that communicate via message passing—as the foundation for fault-tolerant applications where individual actors can fail without crashing everything. Perfect for high-volume applications that need to scale rapidly, Akka is an efficient foundation for event-driven systems that want to scale elastically up and out on demand, both on multi-core processors and across server nodes.Akka in Action is a comprehensive tutorial on building message-oriented systems using Akka. The book takes a hands-on approach, where each new concept is followed by an example that shows you how it works, how to implement the code, and how to (unit) test it. You'll learn to test and deploy an actor system and scale it up and out, showing off Akka's fault tolerance. As you move along, you'll explore a message-oriented event-driven application in Akka. You'll also tackle key issues like how to model immutable messages and domain models, and apply patterns like Event Sourcing, and CQRS. The book concludes with practical advice on how to tune and customize a system built with Akka.

Java Se8 for the Really Impatient: A Short Course on the Basics


Cay S. Horstmann - 2013
    The addition of lambda expressions (closures) and streams represents the biggest change to Java programming since the introduction of generics and annotations. Now, with Java SE 8 for the Really Impatient , internationally renowned Java author Cay S. Horstmann concisely introduces Java 8's most valuable new features (plus a few Java 7 innovations that haven't gotten the attention they deserve). If you're an experienced Java programmer, Horstmann's practical insights and sample code will help you quickly take advantage of these and other Java language and platform improvements. This indispensable guide includes Coverage of using lambda expressions (closures) to write computation "snippets" that can be passed to utility functions The brand-new streams API that makes Java collections far more flexible and efficient Major updates to concurrent programming that make use of lambda expressions (filter/map/reduce) and that provide dramatic performance improvements for shared counters and hash tables A full chapter with advice on how you can put lambda expressions to work in your own programs Coverage of the long-awaited introduction of a well-designed date/time/calendar library (JSR 310) A concise introduction to JavaFX, which is positioned to replace Swing GUIs, and to the Nashorn Javascript engine A thorough discussion of many small library changes that make Java programming more productive and enjoyable This is the first title to cover all of these highly anticipated improvements and is invaluable for anyone who wants to write tomorrow's most robust, efficient, and secure Java code.

The Art of the Metaobject Protocol


Gregor Kiczales - 1991
    The authors, who developed the metaobject protocol andwho were among the group that developed CLOS, introduce this new approach toprogramming language design, describe its evolution and design principles, andpresent a formal specification of a metaobject protocol for CLOS.Kiczales, desRivi?res, and Bobrow show that the "art of metaobject protocol design" lies increating a synthetic combination of object-oriented and reflective techniques thatcan be applied under existing software engineering considerations to yield a newapproach to programming language design that meets a broad set of designcriteria.One of the major benefits of including the metaobject protocol inprogramming languages is that it allows users to adjust the language to better suittheir needs. Metaobject protocols also disprove the adage that adding moreflexibility to a programming language reduces its performance. In presenting theprinciples of metaobject protocols, the authors work with actual code for asimplified implementation of CLOS and its metaobject protocol, providing anopportunity for the reader to gain hands-on experience with the design process. Theyalso include a number of exercises that address important concerns and openissues.Gregor Kiczales and Jim des Rivi?res, are Members of the Research Staff, andDaniel Bobrow is a Research Fellow, in the System Sciences Laboratory at Xerox PaloAlto Research Center.

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.

Professor Frisby's Mostly Adequate Guide to Functional Programming


Brian Lonsdorf
    We'll use the world's most popular functional programming language: JavaScript. Some may feel this is a poor choice as it's against the grain of the current culture which, at the moment, feels predominately imperative. However, I believe it is the best way to learn FP for several reasons:You likely use it every day at work.This makes it possible to practice and apply your acquired knowledge each day on real world programs rather than pet projects on nights and weekends in an esoteric FP language.We don't have to learn everything up front to start writing programs.In a pure functional language, you cannot log a variable or read a DOM node without using monads. Here we can cheat a little as we learn to purify our codebase. It's also easier to get started in this language since it's mixed paradigm and you can fall back on your current practices while there are gaps in your knowledge.The language is fully capable of writing top notch functional code.We have all the features we need to mimic a language like Scala or Haskell with the help of a tiny library or two. Object-oriented programming currently dominates the industry, but it's clearly awkward in JavaScript. It's akin to camping off of a highway or tap dancing in galoshes. We have to bind all over the place lest this change out from under us, we don't have classes[^Yet], we have various work arounds for the quirky behavior when the new keyword is forgotten, private members are only available via closures. To a lot of us, FP feels more natural anyways.That said, typed functional languages will, without a doubt, be the best place to code in the style presented by this book. JavaScript will be our means of learning a paradigm, where you apply it is up to you. Luckily, the interfaces are mathematical and, as such, ubiquitous. You'll find yourself at home with swiftz, scalaz, haskell, purescript, and other mathematically inclined environments.

Vintage True Crime Stories Vol 2: An Illustrated Anthology of Forgotten Tales of Murder & Mayhem


Robert Patterson - 2019
     Let me test my presumption with a preview of four these ‘old’ stories. If I told you there was once a west coast sex cult with dozens of young girls, single ladies, and married women, who all fornicated with one well-endowed “prophet,” and he occasionally found it necessary to carry-out bondage S&M sessions here and there, you may not be surprised at all. But what if that sex cult began in 1903 and ended in 1906 with a couple of murders and suicides, does that sound like anything you have read about before? Or, how about a cheater who murders his inconvenient wife, disassembles her over a fifteen hour period, then puts her bones in the same stove he cooks breakfast for his sons before sending them off to school? If that doesn’t surprise you, perhaps the ending will–but you’ll have to find out for yourself. In ‘The Dandy and the Squire,’ a smooth-talking peacock from Kentucky visits his northern ‘cousins,’ and charms three of the women into his bed. He’s a big time operator who talks fancy, dresses fancy, and tells great stories of his days as an adventurer, riverboat gambler, and sharp-minded deal maker. He’s so smooth, he’s able to murder the patriarch’s son, make him look like the bad guy, and marry the boy’s tender-hearted sister before the Yankees get wise to his lies. Good thing, too, because he had also talked the father into giving him the family farm. Chapter Five is the stranger-than-fiction story of ‘Shoebox Annie.’ During the early 20th Century, this trollish-looking woman introduced her freakish-looking son to a life of crime. Their decade’s long spree of lyin’, cheatin’, and stealin’ led them to become America’s first mother and son team of serial killers. They were so good at disposing of bodies, none of their four victims have ever been found. If ‘old’ stories sound boring to readers of contemporary true crime, I hope this book will change minds, and fully reveal just how wicked and decadent our ancestors were. And deadly. Volume II in the Vintage True Crime Stories series is a wrecking ball that smashes to pieces that phrase, “The Good Old Days.” Maybe you will believe me when you get to the last page.

Haskell Programming From First Principles


Christopher Allen - 2015
    I've spent the last couple years actively teaching Haskell online and in person. Along the way, I started keeping notes on exercises and methods of teaching specific concepts and techniques in Haskell that eventually turned into my guide for learning haskell. That experience led me to work on this book.If you are new to programming entirely, Haskell is a great first language. You may have noticed the trend of "Functional Programming in [Imperative Language]" books and tutorials and learning Haskell gets right to the heart of what functional programming is. Languages such as Java are gradually adopting functional concepts, but most such languages were not designed to be functional languages, after all. We would not encourage you to learn Haskell as an only language, but because Haskell is a pure functional language, it is a fertile environment for mastering functional programming techniques. That way of thinking and problem solving is useful, no matter what other languages you might know or learn.Haskell is not a difficult language to use. Quite the opposite. I'm now able to tackle problems that I couldn't have tackled when I was primarily a Clojure, Common Lisp, or Python user. Haskell is difficult to teach effectively.

Composing Software


Eric Elliott - 2018
    Most developers have a limited understanding of compositional techniques. It's time for that to change.In "Composing Software", Eric Elliott shares the fundamentals of composition, including both function composition and object composition, and explores them in the context of JavaScript. The book covers the foundations of both functional programming and object oriented programming to help the reader better understand how to build and structure complex applications using simple building blocks.You'll learn: • Functional programming • Object composition • How to work with composite data structures • Closures • Higher order functions • Functors (e.g., array.map) • Monads (e.g., promises) • Transducers • LensesAll of this in the context of JavaScript, the most used programming language in the world. But the learning doesn't stop at JavaScript. You'll be able to apply these lessons to any language. This book is about the timeless principles of software composition and its lessons will outlast the hot languages and frameworks of today. Unlike most programming books, this one may still be relevant 20 years from now.This book began life as a popular blog post series that attracted hundreds of thousands of readers and influenced the way software is built at many high growth tech startups and fortune 500 companies.

PHP 6 and MySQL 5 for Dynamic Web Sites: Visual Quickpro Guide


Larry Ullman - 2007
    With step-by-step instructions, complete scripts, and expert tips to guide readers, this work gets right down to business - after grounding readers with separate discussions of first the scripting language (PHP) and then the database program (MySQL), it goes on to cover security, sessions and cookies, and using additional Web tools.

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.