|
Haskell for all
|
Interna |
Passing Juice |
|
A sufficiently detailed spec is code
|
Interna |
Passing Juice |
|
Browse code by meaning
|
Interna |
Passing Juice |
|
Beyond agentic coding
|
Interna |
Passing Juice |
|
My experience with vibe coding
|
Interna |
Passing Juice |
|
Type-safe eval in Grace
|
Interna |
Passing Juice |
|
Chat is the least interesting interface to LLMs
|
Interna |
Passing Juice |
|
Prompting 101: Show, don’t tell
|
Interna |
Passing Juice |
|
Nix Steering Committee vote of no confidence
|
Interna |
Passing Juice |
|
Steering Committee Retrospective
|
Interna |
Passing Juice |
|
Datatype unification using Monoids
|
Interna |
Passing Juice |
|
Prompt chaining reimagined with type inference
|
Interna |
Passing Juice |
|
The Haskell inlining and specialization FAQ
|
Interna |
Passing Juice |
|
Firewall rules: not as secure as you think
|
Interna |
Passing Juice |
|
Software engineers are not (and should not be) technicians
|
Interna |
Passing Juice |
|
Quality and productivity are not necessarily mutually exclusive
|
Interna |
Passing Juice |
|
My spiciest take on tech hiring
|
Interna |
Passing Juice |
|
Prefer do notation over Applicative operators when assembling records
|
Interna |
Passing Juice |
|
All error messages are necessarily bad to some degree
|
Interna |
Passing Juice |
|
The siren song of domain-specific languages
|
Interna |
Passing Juice |
|
Unification-free ("keyword") type checking
|
Interna |
Passing Juice |
|
A GHC plugin for OpenTelemetry build metrics
|
Interna |
Passing Juice |
|
My views on NeoHaskell
|
Interna |
Passing Juice |
|
GHC plugin for HLint
|
Interna |
Passing Juice |
|
Ergonomic newtypes for Haskell strings and numbers
|
Interna |
Passing Juice |
|
The "open source native" principle for software design
|
Interna |
Passing Juice |
|
terraform-nixos-ng: Modern terraform support for NixOS
|
Interna |
Passing Juice |
|
Announcing nixos-rebuild: a "new" deployment tool for NixOS
|
Interna |
Passing Juice |
|
Nixpkgs support for Linux builders running on macOS
|
Interna |
Passing Juice |
|
Nixpkgs support for incremental Haskell builds
|
Interna |
Passing Juice |
|
How to correctly cache build-time dependencies using Nix
|
Interna |
Passing Juice |
|
What does "isomorphic" mean (in Haskell)
|
Interna |
Passing Juice |
|
nix-serve-ng: A faster, more reliable, drop-in replacement for nix-serve
|
Interna |
Passing Juice |
|
Stop calling everything "Nix"
|
Interna |
Passing Juice |
|
Incrementally package a Haskell program using Nix
|
Interna |
Passing Juice |
|
defaultable-map: An Applicative wrapper for Maps
|
Interna |
Passing Juice |
|
The appeal of bidirectional type-checking
|
Interna |
Passing Juice |
|
Generate web forms from pure functions
|
Interna |
Passing Juice |
|
The golden rule of software distributions
|
Interna |
Passing Juice |
|
Why does Haskell's take function accept insufficient elements?
|
Interna |
Passing Juice |
|
Introductory resources to type theory for language implementers
|
Interna |
Passing Juice |
|
Modeling PlusCal in Haskell using Cartesian products of NFAs
|
Interna |
Passing Juice |
|
The hard part of type-checking Nix
|
Interna |
Passing Juice |
|
Applicatives should usually implement Semigroup and Monoid
|
Interna |
Passing Juice |
|
What is a monad morphism (in Haskell)?
|
Interna |
Passing Juice |
|
Nixpkgs overlays are monoids
|
Interna |
Passing Juice |
|
Funding isn't the problem with open source
|
Interna |
Passing Juice |
|
Co-Applicative programming style
|
Interna |
Passing Juice |
|
Advice for aspiring bloggers
|
Interna |
Passing Juice |
|
The "return a command" trick
|
Interna |
Passing Juice |
|
Fall-from-Grace: A ready-to-fork functional programming language
|
Interna |
Passing Juice |
|
Optics are monoids
|
Interna |
Passing Juice |
|
Forward and reverse proxies explained
|
Interna |
Passing Juice |
|
Naming function arguments in Dhall
|
Interna |
Passing Juice |
|
Namespaced De Bruijn indices
|
Interna |
Passing Juice |
|
Probability for Slay the Spire fanatics
|
Interna |
Passing Juice |
|
Module organization guidelines for Haskell projects
|
Interna |
Passing Juice |
|
The trick to avoid deeply-nested error-handling code
|
Interna |
Passing Juice |
|
The end of history for programming
|
Interna |
Passing Juice |
|
How to replace Proxy with AllowAmbiguousTypes
|
Interna |
Passing Juice |
|
Folds are constructor substitution
|
Interna |
Passing Juice |
|
Dynamic type errors lack relevance
|
Interna |
Passing Juice |
|
The visitor pattern is essentially the same thing as Church encoding
|
Interna |
Passing Juice |
|
Recruiting for diversity is not lowering the bar
|
Interna |
Passing Juice |
|
How to use NixOS for lightweight integration tests
|
Interna |
Passing Juice |
|
Pretty-print syntax trees with this one simple trick
|
Interna |
Passing Juice |
|
Why I prefer functional programming
|
Interna |
Passing Juice |
|
The golden rule of software quality
|
Interna |
Passing Juice |
|
Record constructors
|
Interna |
Passing Juice |
|
Blazing fast Fibonacci numbers using Monoids
|
Interna |
Passing Juice |
|
Dhall Survey Results (2019-2020)
|
Interna |
Passing Juice |
|
Why Dhall advertises the absence of Turing-completeness
|
Interna |
Passing Juice |
|
Dhall - Year in review (2019-2020)
|
Interna |
Passing Juice |
|
Prefer to use fail for IO exceptions
|
Interna |
Passing Juice |
|
The CAP theorem for software engineering
|
Interna |
Passing Juice |
|
Release early and often
|
Interna |
Passing Juice |
|
Dhall Survey Results (2018-2019)
|
Interna |
Passing Juice |
|
Haskell command-line utility using GHC generics
|
Interna |
Passing Juice |
|
Dhall - Year in review (2018-2019)
|
Interna |
Passing Juice |
|
Detailed walkthrough for a beginner Haskell program
|
Interna |
Passing Juice |
|
NixOS in production
|
Interna |
Passing Juice |
|
How I evaluate Haskell packages
|
Interna |
Passing Juice |
|
The wizard monoid
|
Interna |
Passing Juice |
|
Dhall Survey Results (2017-2018)
|
Interna |
Passing Juice |
|
Dhall - Year in review (2017-2018)
|
Interna |
Passing Juice |
|
Compare Nix derivations using nix-diff
|
Interna |
Passing Juice |
|
Semantic integrity checks are the next generation of semantic versioning
|
Interna |
Passing Juice |
|
Advice for Haskell beginners
|
Interna |
Passing Juice |
|
Why do our programs need to read input and write output?
|
Interna |
Passing Juice |
|
Type-driven strictness
|
Interna |
Passing Juice |
|
Demystifying Haskell assignment
|
Interna |
Passing Juice |
|
Dhall is now a template engine
|
Interna |
Passing Juice |
|
Translating a C++ parser to Haskell
|
Interna |
Passing Juice |
|
Use Dhall to configure Bash programs
|
Interna |
Passing Juice |
|
The Curry-Howard correspondence between programs and proofs
|
Interna |
Passing Juice |
|
Program JSON and YAML with Dhall
|
Interna |
Passing Juice |
|
Typed Nix programming using Dhall
|
Interna |
Passing Juice |
|
Dhall - A non-Turing-complete configuration language
|
Interna |
Passing Juice |
|
Electoral vote distributions are Monoids
|
Interna |
Passing Juice |
|
Auto-generate service API endpoints from records
|
Interna |
Passing Juice |
|
list-transformer - A beginner-friendly ListT
|
Interna |
Passing Juice |
|
A command-line benchmark tool
|
Interna |
Passing Juice |
|
Data is Code
|
Interna |
Passing Juice |
|
Worst practices should be hard
|
Interna |
Passing Juice |
|
LambdaConf should reconsider its policy
|
Interna |
Passing Juice |
|
Auto-generate a command line interface from a data type
|
Interna |
Passing Juice |
|
State of the Haskell Ecosystem - February 2016 Edition
|
Interna |
Passing Juice |
|
From mathematics to map-reduce
|
Interna |
Passing Juice |
|
Compile-time memory safety using Liquid Haskell
|
Interna |
Passing Juice |
|
How to contribute to the Haskell ecosystem
|
Interna |
Passing Juice |
|
Interactive and composable charts
|
Interna |
Passing Juice |
|
Haskell-native spreadsheets
|
Interna |
Passing Juice |
|
Explicit is better than implicit
|
Interna |
Passing Juice |
|
Basic Haskell Examples
|
Interna |
Passing Juice |
|
Polymorphism for dummies
|
Interna |
Passing Juice |
|
How to make your Haskell code more readable to non-Haskell programmers
|
Interna |
Passing Juice |
|
State of the Haskell ecosystem - August 2015
|
Interna |
Passing Juice |
|
break-1.0.0: A small library for breaking from loops
|
Interna |
Passing Juice |
|
optional-args-1.0.0: Optional function arguments
|
Interna |
Passing Juice |
|
The internet of code
|
Interna |
Passing Juice |
|
Haskell content spinner
|
Interna |
Passing Juice |
|
Mathematical APIs
|
Interna |
Passing Juice |
|
Algebraic side effects
|
Interna |
Passing Juice |
|
Use Haskell for shell scripting
|
Interna |
Passing Juice |
|
total-1.0.0: Exhaustive pattern matching using traversals, prisms, and lenses
|
Interna |
Passing Juice |
|
A very general API for relational joins
|
Interna |
Passing Juice |
|
How to build library-agnostic streaming sources
|
Interna |
Passing Juice |
|
How to desugar Haskell code
|
Interna |
Passing Juice |
|
Morte: an intermediate language for super-optimizing functional programs
|
Interna |
Passing Juice |
|
managed-1.0.0: A monad for managed resources
|
Interna |
Passing Juice |
|
Equational reasoning at scale
|
Interna |
Passing Juice |
|
Spreadsheet-like programming in Haskell
|
Interna |
Passing Juice |
|
Model-view-controller, Haskell-style
|
Interna |
Passing Juice |
|
How the continuation monad works
|
Interna |
Passing Juice |
|
Scalable program architectures
|
Interna |
Passing Juice |
|
Worst practices are viral for the wrong reasons
|
Interna |
Passing Juice |
|
Introductions to advanced Haskell topics
|
Interna |
Passing Juice |
|
How to model handles with pipes
|
Interna |
Passing Juice |
|
Reasoning about stream programming
|
Interna |
Passing Juice |
|
pipes-http-1.0: Streaming HTTP/HTTPS clients
|
Interna |
Passing Juice |
|
pipes-parse-3.0: Lens-based parsing
|
Interna |
Passing Juice |
|
Streaming logging
|
Interna |
Passing Juice |
|
Shortcut fusion for pipes
|
Interna |
Passing Juice |
|
Equational reasoning
|
Interna |
Passing Juice |
|
Lift error handling with lens-like syntax
|
Interna |
Passing Juice |
|
Test stream programming using Haskell's `QuickCheck`
|
Interna |
Passing Juice |
|
An all-atom protein search engine powered by Haskell
|
Interna |
Passing Juice |
|
How to reimplement the conduit parsing API in 50 lines of pipes code
|
Interna |
Passing Juice |
|
Manual proofs for the `pipes` laws
|
Interna |
Passing Juice |
|
Perfect streaming using `pipes-bytestring`
|
Interna |
Passing Juice |
|
pipes-4.0: Simpler types and API
|
Interna |
Passing Juice |
|
foldl-1.0.0: Composable, streaming, and efficient left folds
|
Interna |
Passing Juice |
|
Composable streaming folds
|
Interna |
Passing Juice |
|
Sometimes less is more in language design
|
Interna |
Passing Juice |
|
Statements vs Expressions
|
Interna |
Passing Juice |
|
The Resource Monad
|
Interna |
Passing Juice |
|
From zero to cooperative threads in 33 lines of Haskell code
|
Interna |
Passing Juice |
|
pipes-concurrency-1.2.0: Behaviors and broadcasts
|
Interna |
Passing Juice |
|
pipes-parse-1.0.0: Pushback, delimited parsers, resumable parsing, and lenses
|
Interna |
Passing Juice |
|
pipes-3.3.0: Folds and uniting ListT with Proxy
|
Interna |
Passing Juice |
|
Program imperatively using Haskell lenses
|
Interna |
Passing Juice |
|
pipes and io-streams
|
Interna |
Passing Juice |
|
pipes-concurrency-1.0.0: Reactive programming
|
Interna |
Passing Juice |
|
Defaults
|
Interna |
Passing Juice |
|
pipes-3.2: ListT, Codensity, ArrowChoice, and performance
|
Interna |
Passing Juice |
|
mmorph-1.0.0: Monad morphisms
|
Interna |
Passing Juice |
|
Comonads are objects
|
Interna |
Passing Juice |
|
Introduction to Haskell IO
|
Interna |
Passing Juice |
|
pipes-safe-1.0 - Resource management and exception handling for pipes
|
Interna |
Passing Juice |
|
The Continuation Monad
|
Interna |
Passing Juice |
|
pipes-3.0 - A simpler, unified API
|
Interna |
Passing Juice |
|
pipes-2.5: Faster and slimmer
|
Interna |
Passing Juice |
|
"Hello, core!"
|
Interna |
Passing Juice |
|
Parsing chemical substructures
|
Interna |
Passing Juice |
|
pipes-2.4: Proxy transformers, extra categories, utilities, and benchmarks
|
Interna |
Passing Juice |
|
The MonadTrans class is missing a method
|
Interna |
Passing Juice |
|
The functor design pattern
|
Interna |
Passing Juice |
|
Concurrency = Lists of Kleisli arrows
|
Interna |
Passing Juice |
|
pipes-2.3 - Bidirectional pipes
|
Interna |
Passing Juice |
|
The category design pattern
|
Interna |
Passing Juice |
|
Code Example #1
|
Interna |
Passing Juice |
|
Free monad transformers
|
Interna |
Passing Juice |
|
First-class modules without defaults
|
Interna |
Passing Juice |
|
Purify code using free monads
|
Interna |
Passing Juice |
|
Breaking from a loop
|
Interna |
Passing Juice |
|
errors-1.0: Simplified error handling
|
Interna |
Passing Juice |
|
pipes-2.1 and index-core-1.0 - Indexed types
|
Interna |
Passing Juice |
|
GADTs
|
Interna |
Passing Juice |
|
Why free monads matter
|
Interna |
Passing Juice |
|
Conduit bugs
|
Interna |
Passing Juice |
|
pipes 2.0 - Pipe Finalization
|
Interna |
Passing Juice |
|
Scrap your type classes
|
Interna |
Passing Juice |
|
Haskell for Purists - Pipe Finalization
|
Interna |
Passing Juice |
|
Haskell for Java Programmers - Serialization
|
Interna |
Passing Juice |
|
Haskell for Engineers - Unicode
|
Interna |
Passing Juice |
|
Lenses
|
Interna |
Passing Juice |
|
Haskell for Mainstream Programmers - State
|
Interna |
Passing Juice |
|
Haskell for Intermediate Programmers - Algebraic Data Types
|
Interna |
Passing Juice |
|
Haskell for C Programmers - For Loops
|
Interna |
Passing Juice |
|
Haskell for Mainstream Programmers - Code reuse
|
Interna |
Passing Juice |
|
CC BY-SA 4.0
|
Externa |
Passing Juice |