hello.js

var please = require('share');
console.log('thank you');

NEW !!!

Monday, 20 January, 2020 UTC

Lisp: A language for stratified design

In this first episode of season 3, we analyze a great paper called Lisp: A language for stratified design . The paper asks the question “What is Lisp good for?” Download the paper. Lisp: A language for stratified design In this first episode of season ... more


Thursday, 17 October, 2019 UTC

What are product and sum types?

Product and sum types are collectively known as ‘algebraic data types’. These are two ways of putting types together to make bigger types. Product types multiply their states, while sum types add them. With these two ‘operations’, we can precisely target ... more


Monday, 14 October, 2019 UTC

Grokking Simplicity – HTML All The Things [Podcast]

In this episode, I talked about my new book “Grokking Simplicity – Taming complex software with functional thinking”. https://mcdn.podbean.com/mf/download/dcjidh/EP_63_PRODUCTION.mp3 HTML All The Things Transcript Matt: Hello everybody and welcome to ... more


Monday, 30 September, 2019 UTC

Where does the power of nil punning come from?

Nil punning does give power to Lispers. But where does the power come from? Is it that nil really is a great value? Or is it more about the design choices made? In this episode, we explore this question. Transcript Eric Normand: Where does the power ... more


Thursday, 26 September, 2019 UTC

What is Nil Punning?

Nil punning is a feature of Lisp. It began when nil was both the empty list and the false value. Two meanings for the same thing led to the idea of punning. Lispers liked it. And now, Clojure carries the tradition forward. In Clojure, nil has different ... more


Thursday, 12 September, 2019 UTC

Can you use types with Data Orientation?

Are types compatible with data orientation? The short answer is ‘yes’. Types trade freedom of movement for clarity. Transcript Eric Normand: Can you use types with data orientation? By the end of this episode, I hope to clarify this, because data orientation ... more


Monday, 2 September, 2019 UTC

What is a total function?

Total functions are functions that give you a valid return value for every combination of valid arguments. They never throw errors and they don’t require checks of the return value. Total functions help you write more robust code and simpler code, free ... more


Thursday, 29 August, 2019 UTC

What is a continuation?

Continuations are a cool feature you often find in functional languages. In this episode, we look at what they are, why you’re probably already using them, and the cool things you can do with them. Transcript Eric Normand: What is a continuation? By ... more


Monday, 5 August, 2019 UTC

What is a calculation?

Level 1 of functional thinking is to distinguish between actions, calculations, and data. But what is a calculation? In this episode, we go over what it is, how to recognize them, and how to implement them. By the end, you should understand why they ... more


Tuesday, 30 July, 2019 UTC

Teaching Clojure – The REPL [PODCAST]

In this episode, I talked about my new course on REPL driven development and teaching Clojure. https://tracking.feedpress.it/link/redirect.mp3/19896/https://media.therepl.net/therepl/therepl-027.mp3 Transcript Daniel: Hello. Welcome to The REPL, a podcast ... more


Tuesday, 23 July, 2019 UTC

What is tail recursion?

Tail recursion is a kind of recursion that won’t blow the stack, so it’s just about as efficient as a while loop. Unfortunately, not all platforms support tail call removal, which is necessary for making tail recursion efficient. We talk about what it ... more


Monday, 15 July, 2019 UTC

How does making something first class give you power?

Often, functionality starts off as code. It’s if statements and imperative ideas. But, over time, you notice patterns. Those patterns can be reified as data. And that gives us tremendous power. How so? We explore it in this episode. Transcript Eric Normand: ... more


Monday, 8 July, 2019 UTC

Is there a silver bullet for software development? (part 1)

In The Mythical Man-Month, Fred Brooks argues that there is no improvement that can give us an order of magnitude increase in productivity. His main point is that most of what’s left to improve is essential complexity. But is that true? Can we throw ... more


Monday, 1 July, 2019 UTC

Why taming complex software?

My book is called Taming Complex Software. What’s that all about? In this episode, I go into why complexity is a major problem and how functional programming can help. Transcript Eric Normand: Why would we want to tame complex software? My name is Eric ... more


Thursday, 27 June, 2019 UTC

3 Examples of algebraic thinking

In a recent episode, I said algebraic thinking was the third level of functional thinking. In this episode, I give some concrete examples. Transcript Eric Normand: Can you give me some examples of algebraic thinking, that third level of functional thinking ... more


Monday, 24 June, 2019 UTC

What is a higher-order function?

Higher-order functions are used a lot in functional programming. They are functions that take other functions as arguments or return functions as return values, or both. You’ll probably be familiar with map, filter, and reduce, which are higher-order ... more


Friday, 31 May, 2019 UTC

What makes a repl?

There’s a lot of discussion on Twitter about whether Node has a repl or Python has a repl. Do they have repls? How can we tell? Well, my opinion is that what’s important is how it’s used, not a set of features. Transcript Eric Normand: What makes a REPL ... more


Friday, 24 May, 2019 UTC

What is a functor?

Functors are an operation that has a structure preserving property. But what is that? Are these things practical? Does it have anything to do with the real world? Of course! To be useful, it must derive from real-world things we see all around us. This ... more


Thursday, 9 May, 2019 UTC

How do you implement lazy evaluation?

Lazy evaluation is easily implemented in any language that can create first-class computations. That means functions or objects. In this episode, I explain how to implement a Delay, which is a reusable lazy component that is common in functional programming ... more


Thursday, 25 April, 2019 UTC

Can you always find a layer of meaning in which your problem is easier?

I’ve always found switching languages to be educational. I learn a lot. It always makes me wonder what I might learn from a non-existing language that I would bring back to my favorite languages. Transcript Eric Normand: Can you always find a layer of ... more


Monday, 22 April, 2019 UTC

What is point-free style?

Point-free style is a way of defining functions with a very simple constraint: you cannot name arguments or intermediate values. How can you possibly do that? Well, with higher-order functions, of course. For instance, with function composition, you ... more


Tuesday, 16 April, 2019 UTC

Why you shouldn’t hide your data

In OOP, we wrap our data in an interface, which is called implementation-hiding or data-hiding. In functional programming, we don’t do that. We use our data in the nude. We pass the data around and allow the context to interpret the data as it seens ... more


Thursday, 11 April, 2019 UTC

What are higher-order functions?

Higher-order functions are functions that take a function as an argument and/or return a function. We use them a lot in functional programming. They are a way to define reusable functionality, as we do with map, filter, and reduce. Transcript Eric Normand: ... more


Monday, 8 April, 2019 UTC

What is function composition?

Function composition is taking the return value of one function and passing it as an argument to another function. It’s common enough that functional programmers have turned it into its own operation. In this episode, we go deep into why it’s important ... more


Thursday, 4 April, 2019 UTC

What does it mean for a function to have a zero?

Some functions have a special value that will stop computation. For instance, multiplication will stop if you multiply zero by anything. We can use this property to our advantage. Transcript Eric Normand: What does it mean for a function to have a zero? ... more


Thursday, 28 March, 2019 UTC

Why do promises make async JavaScript better than callbacks?

Promises are more popular than ever. They make our code better than callbacks. But why? In this episode, I dive deep into why promises are better than callbacks, and it’s not just about indentation. The post Why do promises make async JavaScript better ... more


Tuesday, 26 March, 2019 UTC

What are first-class functions?

First-class functions are functions that can be treated like any other value. You can pass them to functions as arguments, return them from functions, and save them in variables. In this episode, we talk about why they are important for functional programming ... more


Thursday, 21 March, 2019 UTC

Where to find time to learn functional programming?

It can be really hard to find time to learn a new language or new paradigm. How can you find the time you need? In this episode, I share 5 tips for setting yourself for success when you’re learning functional programming. Transcript Eric Normand: Where ... more


Tuesday, 5 March, 2019 UTC

What are timelines and what do they have to do with functional programming?

Timelines are a system I developed for modeling time in a distributed system. You will find timelines whenever you have multiple machines, multiple processes, multiple threads, or multiple async callback chains. Since virtually all software is distributed ... more


Thursday, 28 February, 2019 UTC

Cheap or free functional programming for your team

Hiring an on-site trainer can be expensive. But training itself doesn’t have to be expensive. In this episode, we go over 7 ways you can start training right away without breaking your budget. Transcript Eric Normand: “How Can You Train Your Team in ... more