Software development, delivery, engineering, and architecture
Profunctors for Practitioners: The API (Part 3)
Part 3 examines the Profunctor typeclass in detail: the dimap operation, its laws, and the Strong and Choice extensions that enable profunctors to work with products and sums. These building blocks …
Profunctors for Practitioners: First Intuitions (Part 2)
Part 1 showed paired operations like encode/decode and serialize/deserialize. Part 2 builds the intuition for why these pairs fit together: one direction produces data (covariant), the other consumes …
JavaScript objects to TypeScript enumerations, const enums, ambient enums
Learn how to leverage TypeScript's enums, const enums, ambient enums and how they impact generated JavaScript code. Unveil the benefits and drawbacks of using const enums.
Using three-way diffing context for merge conflict style in Git
It recently came to my attention that not everyone overrides the default merge.conflictStyle git-config setting. So in case anyone here wanted to try something new out that would provide more context …
Profunctors for Practitioners: Motivating Examples (Part 1)
Software development involves many paired operations: encoding and decoding, serializing and deserializing, encrypting and decrypting. Profunctors capture this pattern. Part 1 introduces the …
Algebraic Data Types in TypeScript
Note: the code for the TypeScript (to help you follow along) is available here: Encoding Algebraic Data Types in TypeScript code Background Recently I've been reviewing TypeScript code at work. A …
Algebraic Data Types: For the math(s) inclined
Unlock the mathematical elegance of algebraic data types (ADTs) and revolutionize your understanding of data modeling! Discover how algebraic principles can determine the cardinality of ADTs, allowing …
Experience report deploying PureScript to AWS Serverless (Lambda)
In this blog post, an experienced software engineer shares their successful deployment of a pure functional serverless function to AWS using PureScript. They spent around $15 per day on API Gateway …
`any` versus `unknown` in TypeScript: When to use one over the other
Discover the critical distinctions between `any` and `unknown` in TypeScript, and unleash the full potential of static typing. Join this TypeScript journey, where I advocate for stronger types and …
DynamoDB: The Basics
Dive into the fundamentals of DynamoDB and discover its unique data modeling concepts. This article explores the similarities and differences between DynamoDB and relational databases, highlighting …