Writing
Our collected thoughts on software.
Books
- Creative Scala: The book for new developers who want to learn Scala and have fun.
- Essential Scala: Learn to write robust, performant, idiomatic Scala. A focused guide for established developers.
- Essential Effects: How to safely create, compose, and execute effectful Scala programs using the Typelevel cats-effect library.
- Scala with Cats: Dive deep into functional patterns using Scala and Cats. For experienced Scala developers.
Blog Posts
-
Direct-style Effects Explained
Direct-style effects, also known as algebraic effects and effect handlers, are the next big thing in programming languages. At the same time I see some confusion about direct-style effects. In this post I want to address this confusion by explaining the what, the why, and the how of direct-style effects using a Scala 3 implementation as an example.
scala fp effects io substitution -
Essential Effects book updated!
Our book "Essential Effects" is now updated to use Cats Effect 3.
scala fp effects book -
Understanding Virtual Machine Dispatch through Duality
Through the lens of duality, different VM dispatch designs can be seen as variations on an underlying common structure.
scala fp -
Functional Programming is Based
A few functional programming principles give a systematic and repeatable process for developing code. In this post I show this process using a simple example of summing the elements of a list.
scala fp -
A Case Study in Incrementally Improving Code
Through several easy refactorings we incrementally improve code quality and performance.
scala code-quality performance -
Fire-and-Forget in Cats Effect
How do you "fire-and-forget" in the world of the `IO` monad and Cats Effect?
scala fp effects asynchronous cats -
Recent and Upcoming Public Appearances
Information and links about recent (and upcoming!) talks and interviews.
scala fp effects talks podcast conferences -
Concurrent state machines
How to build a concurrent state machine to model complex behaviors.
scala fp fsm concurrency state -
Context Bounds are Implicitly Passed, are Subtype Bounds?
A question about covariance and `Functor.widen` leads to me correcting my mistaken notion about the mechanism of subtype constraints.
scala variance implicits cats -
What is an Effect?
We often use the term effect when talking about the behavior of our code. But what is an effect? Can we talk about effects in precise ways, in order to write better programs that we can better understand?
scala fp effects io substitution -
Techniques for Understanding Code
Understanding code is probably more important than writing it in the first place. I use three main strategies for understanding code, which I discuss here.
scala typescript software-engineering -
Scoring Ten-pin Bowling with Algebraic Data and Finite State Machines
Implementing the rules for scoring ten-pin bowling turns into an exercise in algebraic data types and finite state machines.
scala fp typescript rust -
What Functional Programming Is, What it Isn't, and Why it Matters
The core premise of functional programming, in my opinion, is that local reasoning and composition make for better code. Here I discuss what these terms mean and the benefits they bring.
scala fp typescript -
Addendum to Alex N's blog post on Scala warnings
An important compiler flag to add when using Scala 2.13's @nowarn annotation.
scala compiler warnings flags lint -
Functional Programming Demystification at Seattle's Scala Meetup
Notes and code from Scala at the Sea.
scala meetup functor monad typeclasses effects -
Thoughts on Recent Online-Only Conferences
Our report on speaking at, and attending, two online-only Scala conferences: NEScala and Scala Love.
scala conferences -
A Sketch of Research on Teaching Programming
A quick overview of the research on curriculum and pedagogy for teaching programming.
scala teaching programming -
Benchmarking Web Services using GraalVM Native Image
Benchmark results comparing an http4s services built with Graal VM Native Image against the same service running on the JVM.
scala serverless cloud -
Building Serverless Scala Services with GraalVM
Building an executable from an http4s web service using GraalVM Native Image is a little bit involved but not hard. This post show you all the steps involved and comes with complete working code.
scala serverless cloud -
Inner Product's Best of 2019
A sample of the best content we've found in 2019
lists links -
Leveraging Monoids for More Powerful Summarization
scala cats programming monoid fold parallelism typeclasses -
Optional Actions
Methods to optionally execute actions
scala cats programming option traverse -
Type Classes vs Records of Functions
Type classes and records of functions are two very similar tools that are available in languages like Haskell, Scala, and Rust. Given the similarity the question arises of which we should use. In this blog post I discuss when I think one language mechanism should be preferred over the other.
teaching scala programming -
Tips for Teaching Scala
Five tips to improve teaching programming
teaching scala programming -
The Group Typeclass
Rubik's Series Part 2 - Introduction to the Group typeclass and its relationship to permutations
rubiks cube group theory functional programming -
Permutations as Functions
Rubik's Series Part 1 - A demonstration of permutations as bijective functions
rubiks cube group theory functional programming permutations -
Solving the Rubik's Cube with Group Theory and Functional Programming
Introduction to a series of posts detailing a solution
rubiks cube group theory functional programming -
How to Write an Abstract
Advice on writing abstracts for industry conferences
speaking advice