Converting a polyglot project build to Bazel

Painlessly switch your Haskell build from Cabal to Bazel | Continue reading


@tweag.io | 1 year ago

Worry-Free NixOS Refactors

Comparing Nix input hashes can guarantee that some refactors are bug-free. | Continue reading


@tweag.io | 1 year ago

Optimizing Nickel's Array Contracts

A short dive into Nickel's reference interpreter | Continue reading


@tweag.io | 1 year ago

Our Roadmap for Nix

Tweag's Nix team plans for the coming years | Continue reading


@tweag.io | 1 year ago

Nix – taming Unix with functional programming

Nix is all about applying functional programming to files and processes. | Continue reading


@tweag.io | 1 year ago

Incremental Builds for Haskell with Bazel

Announcing the new haskell_module rule in rules_haskell | Continue reading


@tweag.io | 1 year ago

Smooth, non-invasive Haskell Stack and Nix shell integration

Integrating Haskell Stack and Nix in a smooth yet non-invasive way, with an explanation, example and template. | Continue reading


@tweag.io | 1 year ago

Reproducible Probabilistic Programming Environments

How to get reproducible development environments for probabilistic programming packages such as PyMC3, Theano or TensorFlow using Nix. | Continue reading


@tweag.io | 1 year ago

Union and intersection contracts are hard

Why union and intersection contracts are hard in a lazy language, and how Nickel handles them. | Continue reading


@tweag.io | 2 years ago

I stopped worrying and learned to run WASM and native hybrid code

Introduce the trick we use to run ghc test suite that needs to exec wasm code | Continue reading


@tweag.io | 2 years ago

First Release of Nickel

Scale your engineering power. We enable deep-tech startups to achievetheir vision, from research to product delivery. | Continue reading


@tweag.io | 2 years ago

Ormolu: The challenge of formatting operator chains

Why formatting chains of infix operators is hard in Haskell. And how I addressed it for Ormolu. | Continue reading


@tweag.io | 2 years ago

Trustix: Good Things Come in Trees

In this post we introduce Merkle trees, the data structures needed to make the Trustix log append-only and searchable. | Continue reading


@tweag.io | 2 years ago

Nix 2.4 and 2.5

Overview of the new features in Nix 2.4 and 2.5 | Continue reading


@tweag.io | 2 years ago

A Haskell memory leak in way too much detail with Cachegrind

Small tutorial on using valgrind to find hot spots in ghc and other Haskell programs | Continue reading


@tweag.io | 2 years ago

Code is Engineering, Types are Science

Peirce divides reasoning into three complementary processes: deduction, abduction and induction. In this post, I will show how these logical processes relate to software. | Continue reading


@tweag.io | 2 years ago

Using Lenses with Arrows in Haskell – Tweag

How to use lenses and other optics within an Arrow-based framework. | Continue reading


@tweag.io | 2 years ago

A Tale of Two Functors (2020)

Haskell's Data and Control module hierarchies have always bugged me. Now, I understand that the intuition behind the Data/Control separation is rooted in a deep technical justification. | Continue reading


@tweag.io | 2 years ago

Self-references in a content-addressed Nix

Why wasn't Nix built with a content-addressed store? | Continue reading


@tweag.io | 3 years ago

Trustix: Distributed trust and reproducibility tracking for binary caches

Trustix aims at enhancing trust in software binaries and improve reproducibility tracking using distributed binary caches. | Continue reading


@tweag.io | 3 years ago

A tale of Template Haskell and cross compilation

Why Template Haskell is hard for cross compilation and how Asterius does it | Continue reading


@tweag.io | 3 years ago

Pure destination-passing style in Linear Haskell

Destinations give you control over your memory allocations, and linear types make them pure. | Continue reading


@tweag.io | 3 years ago

Programming R at native speed using Haskell

Scale your engineering power. We enable deep tech startups to achievetheir vision, from research to product delivery. | Continue reading


@tweag.io | 3 years ago

Markov Chain Monte Carlo (MCMC) Sampling, Part 1: The Basics

In this first post of Tweag's four-part series on Markov chain Monte Carlo sampling algorithms, you will learn about why and when to use them and the theoretical underpinnings of this powerful class of sampling methods. We discuss the famous Metropolis-Hastings algorithm and give … | Continue reading


@tweag.io | 3 years ago

Nickel: Better Configuration for Less

Scale your engineering power. We enable deep tech startups to achievetheir vision, from research to product delivery. | Continue reading


@tweag.io | 3 years ago

Towards a content-addressed model for Nix

Why content-addressability is desirable for Nix. | Continue reading


@tweag.io | 3 years ago

Developing Python with Poetry and Poetry2nix: Reproducible Flexible Python Envs

Learn how to use Nix to create highly reproducible Python builds that are aware of native dependencies. | Continue reading


@tweag.io | 3 years ago

Nix Flakes, Part 3: Managing Nixos Systems

How to manage NixOS systems using Nix flakes. | Continue reading


@tweag.io | 3 years ago

Mapping a universe of open source software: the Nixpkgs dependency graph

The repositories of distributions such as Debian and Nixpkgs are among the largest collections of open source (and some unfree) software. They are complex systems that connect and organize many interdependent packages. In this blog post I'll try to shed some light on them from t … | Continue reading


@tweag.io | 3 years ago

Linear types are merged in GHC

Looking back at the journey which brought us there, and forward to what still lies ahead. | Continue reading


@tweag.io | 3 years ago

Nix Flakes, Part 1: An introduction and tutorial

An introduction to Nix flakes and a tutorial on how to use them. | Continue reading


@tweag.io | 3 years ago

Nix Flakes, Part 1: An introduction and tutorial

An introduction to Nix flakes and a tutorial on how to use them. | Continue reading


@tweag.io | 3 years ago

Code is Engineering; Types are Science

Peirce divides reasoning into three complementary processes: deduction, abduction and induction. In this post, I will show how these logical processes relate to software. | Continue reading


@tweag.io | 4 years ago

On Linear Types and Exceptions

A primer on the interaction between linear types and exceptions in Haskell. | Continue reading


@tweag.io | 4 years ago

How to make your papers run: Executable formal semantics for your language

How to use the Makam metalanguage to implement an executable formal semantics for a simple language. | Continue reading


@tweag.io | 4 years ago

Ormolu: Announcing First Release

We're happy to announce the first release of Ormolu, a formatter for Haskell source code. | Continue reading


@tweag.io | 4 years ago

Bazel, Cabal, Stack: Why Choose When You Can Have Them All?

Bazel gets native support for third-party Haskell libraries and building Cabal packages since the 0.10 release of rules_haskell. | Continue reading


@tweag.io | 4 years ago

Probabilistic Programming with Monad-Bayes

In this blog post series, we're going to lead you through Bayesian modeling in Haskell with the monad-bayes library. In the first part of the series, we introduce two fundamental concepts of `monad-bayes`: `sampling` and `scoring`. | Continue reading


@tweag.io | 4 years ago

Why Haskell Is Important

Why Haskell is important | Continue reading


@tweag.io | 4 years ago

Inline-JS:seamless JavaScript/Haskell interop

inline-js:seamless JavaScript/Haskell interop | Continue reading


@tweag.io | 4 years ago

Mapping opensource

The repositories of distributions such as Debian and Nixpkgs are among the largest collections of open source (and some unfree) software. They are complex systems that connect and organize many interdependent packages. In this blog post I'll try to shed some light on them from t … | Continue reading


@tweag.io | 5 years ago

Asterius GHC WebAssembly back end reaches TodoMVC

Continue reading


@tweag.io | 5 years ago

DIY benchmark history

Continue reading


@tweag.io | 5 years ago

Capability: the ReaderT pattern without boilerplate

Continue reading


@tweag.io | 5 years ago

Java from Haskell: A Tutorial (2017)

Continue reading


@tweag.io | 5 years ago

Streaming with linear types

Continue reading


@tweag.io | 5 years ago

Nix and Bazel = fully reproducible, incremental builds

Continue reading


@tweag.io | 5 years ago

Fibonacci Compiles End-To-end – Haskell to WebAssembly via GHC

Continue reading


@tweag.io | 5 years ago