Grokking Simplicity, Video Edition

Grokking Simplicity, Video Edition

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 79 Lessons (12h 5m) | 2.84 GB

Distributed across servers, difficult to test, and resistant to modification—modern software is complex. 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.

Developers rightly fear the unintended complexity that infects most code. This book shows you how to write software that keeps complexity close to its inherent minimum. As you write software you should distinguish between code that alters your system’s state, and code that does not. Once you learn to make that distinction, you can refactor much of your state-altering “actions” into stateless “calculations.” Your software will be simpler.

The book also teaches you to solve the complex timing bugs that inevitably creep into asynchronous and multithreaded code. In advanced sections of the book you learn how composable abstractions help avoid repeating code and open up new levels of expressivity.

What’s inside

  • Patterns for simpler code
  • Powerful time modeling approaches to simplify asynchronous code
  • How higher-order functions can make code reusable and composable

“Java, JavaScript, C++, Python, and so many others are not purely functional languages, but have adopted ideas from functional programming that make them much easier to use. These simple ideas can be used in any programming language. This book shows you how to do that. It’s an easy read, filled with practical examples and sidebars that explain the technical terms. I was drawn in, really enjoyed it, and learned a couple of new ideas that I am eager to apply in my own code. I hope you enjoy it, too!”
From the Foreword by Guy Steele

“Functional programming does not transfer peacefully from academia to business software. We aren’t starting from scratch. We depend on runtimes and libraries outside our control. Our software interacts with many other systems. It is a long way from FP-land to legacy business software. Eric has undertaken this journey for us. He delved into functional programming, found its most helpful essences, and brought them to us where we are.”
From the Foreword by Jessica Kerr

Table of Contents

1 Welcome to Grokking Simplicity
2 Functional programmers distinguish inert data from code that does work
3 This book is language agnostic
4 Functional thinking in action
5 Timelines visualize distributed systems
6 Part 1
7 Distinguishing actions, calculations, and data
8 Lessons from our shopping process
9 Applying functional thinking to new code
10 Implementing the coupon email process
11 Applying functional thinking to existing code
12 Extracting calculations from actions
13 Extracting a calculation from an action
14 Extracting another calculation from an action
15 Improving the design of actions
16 Categorizing our calculations
17 Staying immutable in a mutable language
18 Converting a write to a read with copy-on-write
19 What to do if an operation is a read and a write
20 Applications have state that changes over time
21 Converting nested writes to reads
22 Staying immutable with untrusted code
23 Wrapping untrusted code
24 Implementing deep copy in JavaScript is difficult
25 Stratified design – Part 1
26 Pattern 1 – Straightforward implementations, Part 1
27 Pattern 1 – Straightforward implementations, Part 2
28 Three different zoom levels
29 Three different zoom levels – Extracting the for loop
30 Stratified design – Part 2
31 When to use (and when not to use!) abstraction barriers
32 Pattern 3 – Minimal interface
33 Pattern 4 – Comfortable layers
34 Code at the top of the graph is easier to change
35 Part 2
36 First-class functions – Part 1
37 Refactoring – Express implicit argument
38 We will use a lot of objects and arrays
39 For loop example – Eating and cleaning up
40 Refactoring – Replace body with callback
41 Why are we wrapping the code in a function
42 First-class functions – Part 2
43 Returning functions from functions
44 Functional iteration
45 Functional tool – map()
46 Functional tool – filter()
47 Example – Concatenating strings
48 Chaining functional tools
49 Clarifying chains, method 1 – Name the steps
50 Tip 1 – Make data
51 Debugging tips for chaining
52 reduce() for building values
53 Functional tools for nested data
54 Visualizing values in objects
55 Writing incrementSizeByName() four ways
56 The anatomy of safe recursion
57 Isolating timelines
58 Different languages, different threading models
59 Principles of working with timelines
60 Simplifying the timeline
61 Summary – Drawing timeline diagrams
62 Making our code more reusable
63 Sharing resources between timelines
64 Building a queue in JavaScript
65 Principle – Use real-world sharing as inspiration
66 Analyzing the timeline
67 Coordinating timelines
68 Simplify the diagram – Step 3
69 Using Cut() in our code
70 A primitive to call something just once
71 Reactive and onion architectures
72 FormulaCells calculate derived values
73 Treat series of steps as pipelines
74 Review – Stratified design
75 Analyze readability and awkwardness
76 The functional journey ahead
77 Parallel tracks to mastery
78 Production – Eliminate a bug today
79 Functional languages by learning opportunity

Homepage