8 October 2026
Just do it – it’s simpler than you’d think!
Aleksandr Bantev
24 September 2026
Using Tricorder and its MCP server with coding agents.
Victor Nascimento Bakke
17 September 2026
An internship experience report on reenabling type class support in Liquid Haskell
Juan Pablo Yamamoto
10 September 2026
An experiment in constraining coding agent output with formal proofs
Arnaud Spiwack
23 July 2026
A retrospective on five years and twenty-plus Cardano smart-contract audits at Tweag.
Mathieu Montin
9 July 2026
How Topiary can now format embedded languages in OCamllex and Markdown files, and how the injection system works under the hood.
Erin van der Veen
18 June 2026
Here is how you can implement sheaves in Haskell
Arnaud Spiwack
11 June 2026
A self-contained example showcasing formal verification using Liquid Haskell
Xavier Góngora
1 June 2026
Tweag proposals for Intersect funding submitted on chain
30 April 2026
Tweag proposals for Intersect funding submitted on chain
25 April 2026
A statement from Tweag by Modus Create to the Cardano community for 2025
16 April 2026
When the code's in the crib, ma...
Christopher Harrison
2 April 2026
Learn how to minimize risks when having third-party dependencies.
Alexey Tereshenkov
19 February 2026
A round-up of improvements over the last two and a half years
Joe Neeman
12 February 2026
or: How I learnt to stop worrying and love AI
Christopher Harrison
5 February 2026
A Bazel story of how we integrated a proprietary static analysis tool for fast, incremental analysis with Bazel.
Mark Karpov, Alexey Tereshenkov
15 January 2026
How our CodeQL Wrapper simplifies adoption of GitHub's advanced security analysis tool
Fernando Matsuo Santos and Mateus Perdigão Domiciano
8 January 2026
Announcing the Pup library.
Arnaud Spiwack
18 December 2025
rules_img is a Bazel ruleset for building and publishing OCI images that feel native to Bazel by treating images as metadata first and moving bytes only at the edges.
Malte Poll
16 December 2025
A tribute to our late colleague and friend.
Tweag
4 December 2025
The hidden complexity of dependency graphs
Alexey Tereshenkov
1 December 2025
How our plans for history expiry have evolved, and what we're doing now.
27 November 2025
Watch our talks and training from BazelCon 2025
27 November 2025
What goes into a static library, and how to make it smaller
Joe Neeman
20 November 2025
Learn more about modernizing Bazel macros in your codebase
Alexey Tereshenkov
2 October 2025
The second part of a tutorial on how to quickly write a formatter for a programming language using Topiary, our open-source formatting engine based on Tree-sitter.
Yann Hamdaoui
18 September 2025
Common issues and best practices managing large dependency graphs
Alexey Tereshenkov
11 September 2025
The story of how I implemented qualified aliases in Liquid Haskell
Xavier Góngora
4 September 2025
What a build systems engineer might want to know
Alexey Tereshenkov
28 August 2025
How to write production CodeQL code
Clément Hurlin
7 August 2025
How to write your first CodeQL query
Clément Hurlin
31 July 2025
A whirlwind tour on how to integrate Nix with Buck2
Claudio Bley
10 July 2025
A new multi-crate packaging feature for Cargo
Joe Neeman
3 July 2025
The materials from a Bazel workshop we developed for a client are now publicly available
Mark Karpov, Johan Herland
28 May 2025
Tweag proposals for Intersect funding submitted on chain
26 May 2025
Tweag proposals for Intersect funding submitted on chain
15 May 2025
A blog post about our blog
Arnaud Spiwack
5 May 2025
24 April 2025
The shortest megaparsec tutorial there is to write your first DSL parser
Clément Hurlin
17 April 2025
Demonstrate the GHC wasm backend ghci browser mode and how it can be used to live-code a Haskell wasm frontend app.
Cheng Shao
10 April 2025
This post introduces recursion schemes, a functional programming technique used to neatly express recursive algorithms and transformations on trees, and what they are good for in Rust specifically.
Yann Hamdaoui
1 April 2025
20 March 2025
An overview of the improvements in the latest Liquid Haskell release
Facundo Domínguez
6 March 2025
How we shoehorned a proprietary code coverage tool into Bazel's expectations of hermetic and reproducible build actions.
Johan Herland
27 February 2025
Evaluating retrieval-augmented generation (RAG) is easier than ever, but
you need to keep a close eye on the LLMs that drive the evaluation metrics.
We discuss some common pitfalls and solutions.
Joe Neeman, Nour El Mawass, Maria Knorps, Solomon Ajani
20 February 2025
cooked-validators is a Haskell library to write offchain code and conduct testing activities over Cardano smart contracts. One of its main features is to create fully-fledged transactions from simple declarative skeletons.
Mathieu Montin
13 February 2025
In which we delve into the vagaries of Bash formatting and pit Topiary
against shfmt in the ultimate, totally unbiased showdown.
Christopher Harrison
6 February 2025
An experience report of a somewhat large refactoring of Liquid Haskell
Facundo Domínguez
30 January 2025
This blog post is a tutorial on how to quickly write a formatter for a programming language from scratch using Topiary, our open-source formatting engine based on tree-sitter.
Yann Hamdaoui
21 November 2024
A summary of the current support status of Template Haskell and ghci in GHC's wasm backend, explaining how it's implemented and laying out potential future improvements.
Cheng Shao
17 October 2024
Efficient Google Cloud Storage Integration for Bazel
Malte Poll
24 September 2024
An empirical analysis of Python packages on PyPI and biomedical journals in 2023, with a focus on the quality of dependency declarations.
Zhihan Zhang, Dorran Howell, Maria Knorps
12 September 2024
Internship report: Extensions to the reflection mechanism of Liquid Haskell to handle functions from dependencies.
Jonathan Arnoult
5 September 2024
A recent release of Nickel added algebraic data types and pattern matching. This blog post explains the motivation behind this addition, the design choices made, the considerations around backward compatibility and how ADTs can be useful for a configuration language.
Yann Hamdaoui
29 August 2024
No packet should pass unencrypted or unauthenticated.
Yuriy Taraday
22 August 2024
A summary of the open-source work done by the Programming Languages & Compilers team at Tweag in the second quarter of 2024.
Yann Hamdaoui
15 August 2024
A tale of optimising GHC by improving sharing in its intermediate representation.
Joseph Fourment
20 June 2024
Implementing an equivalent to the NixOS module system in Nickel
Théophane Hufschmitt
6 June 2024
It has never been easier to write testable and type-safe Python.
Guillaume Desforges
30 May 2024
An experience report on plugin upgrades
Facundo Domínguez
21 May 2024
Do you regularly wonder where your time went during a week worth of work?
We present work-dAIgest, a tool developed during Tweag's GenAI hackathon that aims to
use data from standard workplace tools such as GitHub, Google Calendar, ... to create
a summary of your work week (or any other time period), powered by open-source large
language models (LLM).
Simeon Carstens, Nour El Mawass
16 May 2024
Nickel 1.5 ships with a new contract evaluator in the LSP. Together with custom contracts, this enables a powerful and native way to extend the LSP with custom checks, from complex validation rules to enforcing security policies on your infrastructure-as-code.
Yann Hamdaoui
2 May 2024
A report on another 18 months in Nix documentation.
Valentin Gagarin
25 April 2024
We re-implemented the nix remote protocol, declaratively
Joe Neeman
18 April 2024
We just came out of Kubecon 2024. Here are our impressions of the trends and evolutions in infrastructure, configuration management and cloud native computing
Yann Hamdaoui, Matthias Meschede
12 March 2024
This is an answer to a request for comments issued by CISA
about software identifiers that CISA encouraged
me to publish as a separate blog post.
Matthias Meschede
7 March 2024
This blog post presents a safe API for destination-passing style programming using Linear Haskell against arbitrary functional data types.
Thomas Bagrel
29 February 2024
Creating infrastructure for supporting Bazel remote execution with rules_nixpkgs
Konstantinos Sideris, Guillaume Maudoux
6 February 2024
We introduce the many pitfalls of RAGs, including in retrieval, explain why we need systematic evaluation and provide a quick introduction to existing evaluation frameworks.
Nour El Mawass, Maria Knorps
18 January 2024
How GHC's design informs linear types
Arnaud Spiwack
7 December 2023
A summary of BazelCon Community Day 2023 in Munich
Samuel Wright, Ben Radford, Andreas Herrmann
28 November 2023
Introducing the lib.fileset Nix library for easy and safe source filtering
Silvan Mosberger
23 November 2023
Make your C/C++ builds faster and smaller with debug fission.
Johan Herland
16 November 2023
Théophane Hufschmitt
9 November 2023
A Bazel war story of how we integrated a proprietary code coverage tool that does not play according to Bazel's rules.
Johan Herland, Mark Karpov
2 November 2023
Explore how to write modular and reusable configuration in Nickel using its merge system.
Yann Hamdaoui
26 October 2023
Building the foundation to analyze your Software Supply Chain in Nix
Guillaume Desforges
19 October 2023
Get better error reporting and LSP integration for your JSON Schemas in Nickel.
Taeer Bar-Yam
12 October 2023
Use monad-bayes and rhine in your interactive machine learning application
Manuel Bärenz
5 October 2023
Topiary's journey to a modern, user-friendly CLI experience.
Christopher Harrison
21 September 2023
FawltyDeps 0.13.0 introduces a brand new mapping strategy. In this post, we'll delve into the mechanics of how dependencies and imports are matched, as well as how you can leverage these new features to boost your Python dependency management workflow.
Johan Herland, Nour El Mawass, Maria Knorps, Zhihan Zhang
10 August 2023
How to link against mimalloc when creating a static Linux executable for Rust, and why you should do the same.
Cheng Shao
27 July 2023
Setting up a Bazel build for the ripgrep codebase
Ilya Polyakovskiy
20 July 2023
A GHC pattern for improving the user experience of type-level programs
Nicolas Frisby
13 July 2023
How to build your Python monorepo from scratch: a simple CI
Guillaume Desforges, Clément Hurlin
6 July 2023
An overview of Meta's new build system Buck2 and how it differs from Bazel
Andreas Herrmann
29 June 2023
Now that Topiary is out and supports OCaml, we need to package it.
But how exactly does one package a Rust projet in OPAM, the OCaml
Package Manager?
Nicolas Jeannerod
22 June 2023
A revamp of the mechanism for introducing assumptions
Facundo Domínguez
15 June 2023
A simple trick to fuzz Haskell programs with libFuzzer
Cheng Shao
8 June 2023
halide-haskell is a Haskell wrapper for Halide that allows you write and just-in-time compile high-performance array and image processing kernels.
Tom Westerhout, Alex Drake
1 June 2023
Translations of control flow can be tested before the rest of the code generator is ready. The tests examine sequences of abstract state transformations and observations.
Norman Ramsey
30 May 2023
With Nickel releasing 1.0 I'm excited to announce the 0.1 release of Tf-Ncl, a tool for writing Terraform deployments with Nickel instead of HCL.
Viktor Kleen
25 May 2023
Commandeering techniques from richly typed, functional languages into Python for fun and profit.
In this episode: Testing strategies.
Christopher Harrison
17 May 2023
Yann Hamdaoui
11 May 2023
Embark with the High Assurance Software Group for a guided tour through the stages of a smart-contract audit, secret weapon included.
Florent Chevrou
4 May 2023
A new tool for visualising and exploring Bazel build graphs.
Ben Radford
27 April 2023
Using type-level dependency tags to verify a Haskell pipeline.
Georg Rudoy
20 April 2023
To allow innovation in medical imaging with AI, we need efficient and affordable ways to store and compute at scale.
Guillaume Desforges
13 April 2023
How to build state machines in a composable way, controlling which transitions can be executed
Marco Perone
4 April 2023
How to build your Python monorepo from scratch: structure and tooling
Guillaume Desforges, Clément Hurlin
23 March 2023
How linear constraints get rid of scope functions and why it matters.
Arnaud Spiwack
14 March 2023
FawltyDeps is a new tool to help you identify undeclared and unused dependencies in your Python code, making your projects leaner and more reproducible.
Johan Herland, Nour El Mawass, Maria Knorps, Vince Reuter
9 March 2023
We're happy to announce the first release of Topiary, a formatter for
many languages that leverages Tree-sitter.
Erin van der Veen, Nicolas Bacquey, Guillaume Genestier, Christopher Harrison, and Tor Hovland
2 March 2023
Tweag releases the full source code of the Chainsail web service, for sampling multimodal distributions, first announced in August 2022. This blog post gives a tour of the Chainsail service architecture, links out to the relevant parts of the source code and proposes possible extensions to Chainsail for which the Tweag team would welcome contributions from the community.
Simeon Carstens
23 February 2023
We went to FOSDEM23 and CfgMgmtCamp23. Here are my impressions of the trends and evolutions in infrastructure and configuration management
Yann Hamdaoui
16 February 2023
We present opam-nix, show how it helps to easily develop, build and test your OCaml projects with Nix
Alexander Bantyev
14 February 2023
Announcement of smtlib-backends, a Haskell library providing a generic interface for interacting with SMT solvers using SMT-LIB
Quentin Aristote
9 February 2023
Make your NixOS development on macOS easier with this simple trick...
Yuriy Taraday
2 February 2023
jupyterWith gets a new name and updates.
Daniel Baker
31 January 2023
An experience report on improving HLS during my internship at Tweag.
Berk Özkütük
26 January 2023
How a linear constraint arrow relates to freezing arrays in Haskell.
Arnaud Spiwack
24 January 2023
The Nix `with` keyword is challenging, but we transpiled it to Nickel anyway.
François Caddet
19 January 2023
Commandeering techniques from richly typed, functional languages into Python for fun and profit.
In this episode: Typeclasses and continuation-passing style.
Christopher Harrison
12 January 2023
Learning and adopting Haskell is not hard with the right resources at hand.
Marco Perone
22 December 2022
How we gained 2–3% improvements in compile times by making GHC better at printing code.
Alexis King
20 December 2022
What's new in Nickel 0.3.1
The Nickel Team
15 December 2022
Getting an old Make based project building again after 10 years with the help of Bazel and Nix.
Ben Radford
13 December 2022
An internship report on my experience working on improving search.nixos.org and my internship at Tweag
William Wang
8 December 2022
A practical introduction to using Sparkle to write Haskell programs which interface with Delta Lake.
Zhihan Zhang
1 December 2022
Revisit the fundamental concept of higher-order functions with a new perspective: interaction.
Yann Hamdaoui
24 November 2022
How and why to share threads in WASM workers (and when not to)
Joe Neeman
22 November 2022
Announcing the GHC WebAssembly backend – present and future
Cheng Shao
17 November 2022
Announcing the next version of jupyterWith.
Daniel Baker, Rok Garbas
15 November 2022
Introduction to staged programming in Haskell with typeclasses
Thomas Bagrel
10 November 2022
How to tap into the power of reinforcement learning while specifying and executing open games in Haskell.
Georgios Karachalias, Noon van der Silk
8 November 2022
Understanding the basic ideas of functional programming by writing a program using only sets and functions
Marco Perone
3 November 2022
Bazel avoids superfluous recompilation for free, but we can make it even better.
Guillaume Genestier
1 November 2022
Setup two encrypted partitions with a shared Nix store
Solène Rapenne
27 October 2022
Exploration of a regression in GHC's bytecode generator performance
Torsten Schmits
25 October 2022
Tweag intern Abdellatif summarizes his internship, in which he augmented Chainsail with a Bayesian Replica Exchange scheme to improve sampling of multimodal distributions.
Abdellatif Kadiri
20 October 2022
Painlessly switch your Haskell build from Cabal to Bazel
Karol Czułkowski
18 October 2022
My experience improving monad-bayes, the probabilistic programming language package, as a Tweag fellow.
Reuben Cohn-Gordon
14 October 2022
Carl Hammann
11 October 2022
Comparing Nix input hashes can guarantee that some refactors are bug-free.
Taeer Bar-Yam
6 October 2022
Looking for a way to test Bazel-rules
Ilya Polyakovskiy
29 September 2022
A comprehensive report on what happened in four months of dedicated work on Nix documentation, and what I learned from it.
Valentin Gagarin
22 September 2022
Learn the options for building a Nix flake out of a Rust workspace, outputting a mix of native code and WebAssembly.
Tor Hovland
20 September 2022
A short dive into Nickel's reference interpreter
Mahmoud Mazouz
15 September 2022
A collection of helpful tips for Bazel users.
Mark Karpov
13 September 2022
A nixpkgs content database with graph building!
Eloi Wang
8 September 2022
Commandeering techniques from richly typed, functional languages into Python for fun and profit.
In this episode: Gradual typing and algebraic data types.
Christopher Harrison
1 September 2022
Cleanly and seamlessly add unit tests to your nix functions.
Daniel Baker
25 August 2022
Introducing the Scalable Build Systems Team
Andreas Herrmann
18 August 2022
How and when to use NixOS specialisations to manage different boot environments
Solène Rapenne
11 August 2022
Etienne Jean, Simeon Carstens
9 August 2022
Tweag announces Chainsail, a simple-to-use web service for better sampling of multimodal distributions with a scalable and auto-tuning Replica Exchange algorithm at its core.
Simeon Carstens, Dorran Howell, Etienne Jean, Saeed Hadikhanloo, Guillaume Desforges
4 August 2022
Tweag's Nix team plans for the coming years
Théophane Hufschmitt
28 July 2022
Limitations of the GHC profiler and announcement of the timestats library
Facundo Domínguez
21 July 2022
New features to understand old verification failures
Facundo Domínguez
14 July 2022
Nix is all about applying functional programming to files and processes.
Valentin Gagarin
1 July 2022
The new Pirouette 2 introduces formal method techniques to the verification of smart contracts; in this post we focus particularly in how incorrectness logic helps this goal.
Alejandro Serrano Mena
23 June 2022
Announcing the new haskell_module rule in rules_haskell
Facundo Domínguez
2 June 2022
Integrating Haskell Stack and Nix in a smooth yet non-invasive way, with an explanation, example and template.
Julien Debon
26 May 2022
How to get reproducible development environments for probabilistic programming packages such as PyMC3, Theano or TensorFlow using Nix.
Etienne Jean, Mohamed Nidabdella, Simeon Carstens
12 May 2022
Arnaud takes a step back from the slogans and examines the trade-offs between lazy and strict languages.
Arnaud Spiwack
5 May 2022
A presentation of an alternative encoding for optics such as lenses and prisms using existential types.
Marco Perone
28 April 2022
Why union and intersection contracts are hard in a lazy language, and how Nickel handles them.
Yann Hamdaoui
21 April 2022
Announcement of a WebAuthn Haskell library, and a description of how the protocol works
Erin van der Veen and Silvan Mosberger
14 April 2022
How to get things merged in large collaborative projects
Clément Hurlin
31 March 2022
Introduce the trick we use to run ghc test suite that needs to exec wasm code
Cheng Shao
25 March 2022
Mathieu Boespflug
17 March 2022
Cheng demonstrates why it's challenging to port libffi to wasm32, how he implemented it, and how it's useful for cross-compiling the GHC RTS
Cheng Shao
11 March 2022
Yann Hamdaoui
3 March 2022
David Himmelstrup
24 February 2022
Use records to structure your Servant APIs
Gaël Deest
17 February 2022
A tutorial on how to write a type-checking plugin for GHC
Sam Derbyshire
10 February 2022
Why formatting chains of infix operators is hard in Haskell. And how I addressed it for Ormolu.
Thomas Bagrel
3 February 2022
We discuss existing consensus models and why no global consensus mode is well suited to Trustix, opting for a user-defined algorithm instead.
Adam Hoese, Taeer Bar-Yam
26 January 2022
How to automatically inject attacks and faults in safety tests using random traces.
Victor Miraldo
19 January 2022
On the relevance of Liquid Haskell in programming languages
Facundo Domínguez
14 January 2022
In this post we introduce Merkle trees, the data structures needed to make the Trustix log append-only and searchable.
Adam Hoese, Taeer Bar-Yam
5 January 2022
How to transparently separate resource allocation from business logic for scoped effects in Polysemy
Torsten Schmits
20 December 2021
Overview of the new features in Nix 2.4 and 2.5
Eelco Dolstra
15 December 2021
Details about the 21.11 Nix Moscow Hackaton, and some suggestions for organizers of similar events.
Alexander Bantyev
9 December 2021
In part two of this series on type-checking plugins, we will see how GHC's constraint solver works.
Sam Derbyshire
2 December 2021
What had to change in the Nix internals to make it able to build content-addressed derivations?
Théophane Hufschmitt
25 November 2021
A collection of ways various Tweagers develop in Haskell
Noon van der Silk
17 November 2021
On design choices to build a resource-safe interface for Sparkle using linear types
Noah Goodman
4 November 2021
Small tutorial on using valgrind to find hot spots in ghc and other Haskell programs
Jeffrey Young
28 October 2021
An experience report on polishing Ormolu, the Haskell code formatter, during my internship at Tweag.
Alexander Esgen
21 October 2021
Why would you want to write a type-checking plugin? Many limitations of the GHC type-checker are exposed here.
Sam Derbyshire
13 October 2021
Property test a denotational model of a data structure.
Divesh Otwani
30 September 2021
A discussion and benchmark of an alternative integrator for Hamiltonian Monte Carlo.
Arne Tillmann, Simeon Carstens
23 September 2021
Introducing a library for writing data pipelines which compose well and fail early
Dorran Howell, Guillaume Desforges, and Vince Reuter
8 September 2021
Building a Go project using Bazel, generating build files with Gazelle
Tanya Bouman
30 August 2021
Notes from the sixth day of ICFP
Noon van der Silk, Arnaud Spiwack, Richard Eisenberg
27 August 2021
Notes from the fifth day of ICFP
Noon van der Silk, Richard Eisenberg
26 August 2021
Notes from the fourth day of ICFP
Noon van der Silk, Arnaud Spiwack, Richard Eisenberg
25 August 2021
Notes from the third day of ICFP
Noon van der Silk, Arnaud Spiwack, Richard Eisenberg
24 August 2021
Notes from the second day of ICFP
Noon van der Silk, Arnaud Spiwack, Richard Eisenberg
23 August 2021
Notes from the first day of ICFP
Noon van der Silk, Richard Eisenberg
28 July 2021
Announcing the gazelle_cabal tool for automatic Bazel rules generation for Cabal projects
Facundo Domínguez and Andreas Herrmann
21 July 2021
An introduction to Integrated Shrinking and an implementation in QCheck (OCaml)
Julien Debon
14 July 2021
Apostolos Chalkis introduces dingo, a package for the analysis of metabolic networks, on which he worked as part of this Tweag fellowship.
Apostolos Chalkis
8 July 2021
What should the type of linear traverse be exactly?
Sjoerd Visscher
1 July 2021
Building OCaml projects with the new Bazel ruleset, OBazl
Torsten Schmits
23 June 2021
Deconstructing the various uses of type classes.
Nicholas Clarke
15 June 2021
21 May 2021
Announcing a simulator for Tenderbake
Mark Karpov, Divesh Otwani
23 April 2021
Tweag is looking for interns who want to contribute to Ormolu.
Mark Karpov
15 April 2021
How to use lenses and other optics within an Arrow-based framework.
Juan Raphael Diaz Simões
8 April 2021
Define effect interpreters dynamically using reflection
Gaël Deest, Andreas Herrmann
26 March 2021
Incubating the Haskell Foundation during 2020.
Richard Eisenberg, Tim Sears, and Mathieu Boespflug
25 March 2021
Discussion on using Bazel with inline-java
Facundo Domínguez, Andreas Herrmann
18 March 2021
A dive into Nickel's gradual type system, which mixes dynamic and static typing
Yann Hamdaoui
4 March 2021
Better Go packaging with Gomod2nix
Adam Hoese
25 February 2021
Understanding monads in OCaml: mixing promises and errors
Clément Hurlin
17 February 2021
Théophane Hufschmitt
10 February 2021
Announcing linear-base, a standard library for linearly typed Haskell programs.
Divesh Otwani, Utku Demir
5 February 2021
Georg Rudoy
29 January 2021
A call to action to improve GHC's performance via a paid internship
Richard Eisenberg
22 January 2021
Yann Hamdaoui
7 January 2021
How to break encapsulation and import a hidden value in Haskell.
Cheng Shao, Richard Eisenberg
16 December 2020
Trustix aims at enhancing trust in software binaries and improve reproducibility tracking using distributed binary caches.
Adam Hoese
3 December 2020
An applicative functor to define shrinkers
Arnaud Spiwack
25 November 2020
Why Template Haskell is hard for cross compilation and how Asterius does it
Cheng Shao, Georgios Karachalias
18 November 2020
Why wasn't Nix built with a content-addressed store?
Théophane Hufschmitt
11 November 2020
Destinations give you control over your memory allocations, and linear types make them pure.
Arnaud Spiwack
28 October 2020
In the final post of Tweag's four-part series, we discuss Replica Exchange, a powerful MCMC algorithm designed to improve sampling from multimodal distributions. An illustrative example and, as always, an interactive Python notebook with easy-to-modify code lead to an intuitive understanding and invite experimentation.
Simeon Carstens
22 October 2020
Yann Hamdaoui
9 October 2020
Cheng Shao
7 October 2020
Summary of the Tweag open source fellowship work related to ghcide
Zubin Duggal
30 September 2020
Bazel gains support for creating fully statically linked Haskell binaries with rules_haskell and rules_nixpkgs.
Will Jones (Habito) and Andreas Herrmann
23 September 2020
Meet Lagoon, a new open source tool for centralizing and querying semi-structured datasets.
Dorran Howell
16 September 2020
Robin Bate Boerop
10 September 2020
Why content-addressability is desirable for Nix.
Théophane Hufschmitt
20 August 2020
What do we need to focus on to increase adoption of Nix?
Rok Garbas
12 August 2020
Learn how to use Nix to create highly reproducible Python builds that are aware of native dependencies.
Adam Hoese
6 August 2020
Learn about Hamiltonian Monte Carlo, and how to implement it from scratch.
Simeon Carstens
31 July 2020
How to manage NixOS systems using Nix flakes.
Eelco Dolstra
28 July 2020
The second call for projects for the Tweag Open Source Fellowship is open and brings financial support and mentorship for Open source contributors.
Richard Eisenberg and Matthias Meschede
13 July 2020
Announcement of the upcoming QualifiedDo language extension.
Matthías Páll Gissurarson (Chalmers), Facundo Domínguez, Arnaud Spiwack
8 July 2020
How to setup a Buildkite-based CI for Nix projects with workers running on GCP.
Mark Karpov
29 June 2020
How we ensured that the implementation of random v1.2 produces higher quality random numbers than v1.1.
Leonhard Markert
25 June 2020
How Nix flakes enable caching of evaluation results of Nix expressions.
Eelco Dolstra
19 June 2020
Looking back at the journey which brought us there, and forward to what still lies ahead.
Arnaud Spiwack
18 June 2020
How Nix is collaborating with Software Heritage for long-term software reproducibility.
Antoine Eiche and Matthias Meschede
11 June 2020
Benchmarks of inline-java and a discussion of its performance trade-offs.
Facundo Domínguez
5 June 2020
Tweag introduces our first cohort of Open Source Fellows.
Richard Eisenberg
25 May 2020
An introduction to Nix flakes and a tutorial on how to use them.
Eelco Dolstra
6 May 2020
How to build a complete Haskell project with Bazel.
Clément Hurlin
23 April 2020
How to derive instances via arbitrary isomorphisms.
Hans Hoeglund
16 April 2020
Imprecise, synchronous, asynchronous exceptions: what do they mean, and what to do with them.
Arnaud Spiwack
9 April 2020
How to set up a remote Bazel cache, and why it is a good idea.
Mark Karpov
2 April 2020
This blog post describes the tradeoffs of the choice between eager and lazy instantiation of type variables in GHC.
Gert-Jan Bottu
12 March 2020
During my internship, I implemented the explicit specificity proposal to make GHC type signatures complete.
Gert-Jan Bottu
5 March 2020
Peirce divides reasoning into three complementary processes: deduction, abduction and induction. In this post, I will show how these logical processes relate to software.
Juan Raphael Diaz Simões
26 February 2020
In this blog post series, we're going to lead you through Bayesian modeling in Haskell with the monad-bayes library. In the third part of the series, we setup a simple Bayesian neural network.
Siddharth Bhat, Simeon Carstens, Matthias Meschede
19 February 2020
A primer on the interaction between linear types and exceptions in Haskell.
Arnaud Spiwack
14 February 2020
The first call for the new Tweag Open Source Fellowship is open. It offers financial support and mentorship to open source contributors.
Richard Eisenberg and Matthias Meschede
6 February 2020
In this post about inline-java I aim to walk you through the upcoming safe interface of the library, which allows detecting memory management mistakes at compile time using linear types.
Facundo Dominguez
30 January 2020
This post describes a profiling technique for Haskell codebases that yields faithful results and is well adapted to large repositories.
Juan Raphael Diaz Simões
16 January 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.
Arnaud Spiwack
9 January 2020
In this second post of Tweag's four-part series, we discuss Gibbs sampling, an important MCMC-related algorithm which can be advantageous when sampling from multivariate distributions. Two different examples and, again, an interactive Python notebook illustrate use cases and the issue of heavily correlated samples.
Simeon Carstens
19 December 2019
Asterius compiles Haskell code into WebAssembly code to be executed in a browser or in Node.js. It has reached a new milestone by being able to compile the diagrams library and its dependencies.
Sylvain Henry (IOHK), Cheng Shao
28 November 2019
How to use the Makam metalanguage to implement an executable formal semantics for a simple language.
Teodoro Freund
21 November 2019
Learn how Nix's new post-build hooks feature can automatically sign and upload artifacts to a binary cache in a trusted way.
Florian Klink
8 November 2019
Here's Part 2 in Tweag's Series about Bayesian modeling in Haskell with the monad-bayes library.
Siddharth Bhat, Matthias Meschede
30 October 2019
We're happy to announce the first release of Porcupine, an open source framework to express portable and customizable data pipelines.
Yves Parès
25 October 2019
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 an intuition on the choice of its free parameters. Interactive Python notebooks invite you to play around with MCMC yourself and thus deepen your understanding of the Metropolis-Hastings algorithm.
Simeon Carstens
11 October 2019
We're happy to announce the first release of Ormolu, a formatter for Haskell source code.
Mark Karpov, Utku Demir
9 October 2019
Bazel gets native support for third-party Haskell libraries and building Cabal packages since the 0.10 release of rules_haskell.
Mathieu Boespflug, Andreas Herrmann
25 September 2019
I got the opportunity to work on Bazel's Persistent Worker Mode for GHC during my internship at Tweag. My goal was to improve the mode of communication between Bazel and the Haskell GHC compiler.
Artem Pelenitsyn
20 September 2019
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`.
Siddharth Bhat, Simeon Carstens, Matthias Meschede
12 September 2019
I got the opportunity to work on Asterius, a new Haskell to WebAssembly compiler, during my internship at Tweag. My task was to get anything numerics-related stabilized in its compiled code.
Siddharth Bhat
6 September 2019
People keep asking me, “What's the point of Haskell, why do you folks even use it?”. How can you answer this?
Mark Karpov
1 August 2019
We visualize large collections of Haskell and Python source codes as 2D maps using methods from Natural Language Processing (NLP) and dimensionality reduction and find a surprisingly rich structure for both languages. Clustering on the 2D maps allows us to identify common patterns in source code which give rise to these structures. Finally, we discuss this first analysis in the context of advanced machine learning-based tools performing automatic code refactoring and code completion.
Simeon Carstens, Matthias Meschede
17 July 2019
Every day we write repetitive code. A lot of it is boilerplate that you write only to satisfy your compiler/interpreter. But how do languages differ in their boilerplate content? We explore these questions using data sets of Python and Haskell code.
Simeon Carstens, Matthias Meschede
27 June 2019
Mathieu Boespflug
27 May 2019
Mark Karpov
9 May 2019
Cheng Shao
10 April 2019
Inspired by the Event Horizon Telescope images, we develop a quick exploratory study about future possibilities of this technology called the Sneakernet: Could massive data transfer give a new live to the homing pigeon industry? How about using transportation means that are optimized to carry incredible amounts of weight? Or transportation means that are designed to be fast as a bullet?
Matthias Meschede
3 April 2019
Jonas Chevalier
28 March 2019
Graham Christensen, Philip Patsch
20 March 2019
There has been recent online discussions about impredicative encoding (aka final encoding) of free monads. Capabilities-as-type-classes, as embodied by the capability library, are essentially the same thing.
Arnaud Spiwack
11 March 2019
Nicholas Clarke
7 March 2019
Tobias Pflug
28 February 2019
Millions of Jupyter notebooks are spread over the internet - machine learning, astrophysics, biology, economy, you name it. What a great age for reproducible science! Or that's what you think until you try to actually run these notebooks. Then you realize that having understandable high-level code alone is not enough to reproduce something on a computer. JupyterWith is a solution to this problem.
Juan Simões, Matthias Meschede
20 February 2019
Facundo Dominguez, Mathieu Boespflug
13 February 2019
Mark Karpov
6 February 2019
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 the perspective of Nixpkgs, mostly with visualizations of its complete dependency graph.
Matthias Meschede
23 January 2019
Matthias Meschede, Juan Simões
20 December 2018
Cheng Shao
12 December 2018
Théophane Hufschmitt
4 October 2018
Andreas Herrmann, Arnaud Spiwack
12 September 2018
Cheng Shao
10 July 2018
Divesh Otwani, Nicholas Clarke
21 June 2018
Edvard Hübinette and Facundo Domínguez
29 May 2018
Cheng Shao
25 April 2018
Nicholas Clarke, Andreas Herrmann, Tom Nielsen
17 April 2018
Mark Karpov, Manuel Chakravarty
29 March 2018
Mathieu Boespflug
15 March 2018
Mathieu Boespflug, Théophane Hufschmitt
8 March 2018
Alexander Vershilov, Arnaud Spiwack
28 February 2018
Mathieu Boespflug, Mark Karpov, Mateusz Kowalczyk
8 February 2018
Nicholas Clarke
5 February 2018
James Haydon
21 December 2017
Arnaud Spiwack
29 November 2017
Facundo Domínguez and Mathieu Boespflug
16 November 2017
Manuel M T Chakravarty
10 November 2017
Jonas Chevalier
1 November 2017
Yves Parès
27 October 2017
Manuel M T Chakravarty
19 October 2017
Manuel M T Chakravarty
12 October 2017
Manuel M T Chakravarty
5 October 2017
Facundo Domínguez
27 September 2017
Manuel M T Chakravarty
22 September 2017
Facundo Domínguez, Mathieu Boespflug
15 September 2017
Facundo Domínguez
6 September 2017
Nicolas Mattia
31 August 2017
Manuel M T Chakravarty
24 August 2017
Arnaud Spiwack
17 August 2017
Manuel M T Chakravarty
9 August 2017
Manuel M T Chakravarty
3 August 2017
Arnaud Spiwack
1 August 2017
Manuel M T Chakravarty
27 July 2017
Facundo Domínguez and Mathieu Boespflug
10 July 2017
Sigrid Keydana
23 May 2017
Théophane Hufschmitt
18 May 2017
Tweag I/O engineering team
13 March 2017
Jean-Philippe Bernardy and Arnaud Spiwack
17 October 2016
Mathieu Boespflug, Alp Mestanogullari
20 June 2016
Alp Mestanogullari, Mathieu Boespflug
25 February 2016
Alp Mestanogullari, Mathieu Boespflug
9 December 2015
Yves Parès, Mathieu Boespflug
8 September 2015
Mathieu Boespflug, Facundo Domínguez, Alexander Vershilov