Blog
deploy-rs in 2026: reviving our Nix deployment tool
deploy-rs kept deploying our infrastructure while its maintenance backlog grew. This year, we returned to that backlog and tagged version 1.0.0, the first versioned release of the Nix deployment tool we introduced in 2020. Here’s what changed, how we use it to deploy systems and individual services, and what we plan to tackle next.
Upstream posts
What Anthropic's AI Proofs Mean for Formal Verification
Some of the bugs Claude found in open-source libraries had survived trillions of fuzzing runs. It found them while trying to prove that the code could never crash on inputs within a specified size limit. Anthropic and Theorem used this approach to produce machine-checked proofs for 239 fuzz-test entry points across 123 libraries.
The interesting question is what those proofs buy you. A proof can rule out a crash within the limits of its specification and machine model. Deciding whether those limits make sense for the software you actually run is a separate engineering job. We look at what Claude proved, what it took to get there, and where the work goes when proofs get cheaper.

Article by Dmitrii Shtukenberg
November 5th, 2026
5 min read
AI Contributions to GHC
GHC now has a policy for AI-assisted contributions. Contributors can use LLMs, but they remain responsible for everything they submit, must disclose directly generated material, and are expected to keep the review burden on maintainers under control.
In this article, we look at what the policy says, how it compares with the approaches taken by LLVM, OpenJDK, GCC, Zig, and other projects, and why we think GHC has landed on a reasonable set of rules for AI-assisted work.
The Hidden Challenges of Rust Infrastructure: Interview with Marco Ieni
Rust’s infrastructure runs on limited engineering time. Saving compute can mean adding maintenance work, and reviewing contributions competes with keeping services running.
In this interview, Marco Ieni of the Rust Foundation explains how the team reduced CI costs and why it sometimes accepts duplicated work for a simpler system. We also discuss running untrusted code, infrastructure as code, release-plz, and what it takes to support Rust’s growing ecosystem.
Teaching Haskell in the Age of LLMs, Part 1: Ban or Embrace?
Not so long ago, LLMs were incapable of producing output that matched the quality of a competent human. Hence the derogatory term “slop”. Like it or not, this is no longer always the case. You can g…
How We Use Claude Code at Serokell
AI agents may know Haskell, Git, and CI, but they do not know how your team actually works. At Serokell, we turned our internal engineering guidelines into Claude Code skills so agents could follow the same conventions as our engineers. This post covers how those skills became a reusable plugin and what we learned from testing it on real repositories.
Haskell Certification Program: What We Built and Why We’re Stepping Back | Serokell
In 2023, Serokell launched the Haskell Certification Program with an ambitious goal: to create a reliable, industry-wide standard for evaluating Haskell expertise. We built and launched the platform, developed an open certification framework, and later transferred the initiative to the Haskell Foundation.
Three years on, both the project and the broader software engineering landscape have changed. In this article, we look back at what the program achieved, how its direction evolved, and why Serokell is now concluding its active involvement in the initiative.
Editor’s pick
Why Solana Chose Rust: Greg Fitzgerald on Haskell & Systems | Serokell
In this interview, we speak with Solana cofounder Greg Fitzgerald about why Rust ultimately proved to be the right fit. We discuss how his background in C++, LLVM, and Haskell shaped Solana’s architecture, what functional programming contributed to the design of a high-performance blockchain runtime, and why Rust’s combination of strong types, memory safety, and low-level control worked particularly well for BPF and virtual-machine development.
Upstream posts
Daml Smart Contracts on Canton: A Developer Guide | Serokell
Most blockchains are built around transparency: smart contracts, transactions, and state changes are visible to everyone. That works well in many cases, but it becomes a problem when organizations need to coordinate without exposing sensitive data.
The Canton Network takes a different approach. It is designed for privacy, data sovereignty, and interoperability, allowing participants to share only the information required for a given transaction.
Canton applications are commonly built with Daml, a strongly typed functional smart contract language centered on parties, authorization, contracts, and multi-party workflows.
In this article, we’ll introduce Canton and Daml, compare Daml with Solidity, and build a small banking application. Along the way, we’ll see how privacy and authorization requirements influence smart contract architecture.
Building a RAG Investment Assistant
For VC teams, valuable knowledge is everywhere: PDFs, inboxes, call transcripts, news feeds, and internal notes. The problem is getting the right context when you actually need it.
We built a platform that brings all of this information into a single searchable knowledge base, with LLM agents on top that can:
• prepare meeting briefings
• research people and companies
• answer questions across the firm’s internal knowledge
• continuously ingest and structure new information
In the article, we go under the hood and explain how the system works, including its storage architecture, seven-stage ingestion pipeline, Airflow automations, and the agent layer that we substantially redesigned after the first production release.
We also cover a production incident that changed how we approached monitoring and reliability.
If you’re building RAG systems, internal AI assistants, or agentic workflows on top of large amounts of unstructured company data, this one gets pretty technical.
From Scientific Computing to Type-Safe Finance: Bitnomial
In this interview, we discuss what needs to change for Haskell to reach more developers and companies, and where the Haskell Foundation can have the greatest impact. We also look at Haskell from the perspective of a large financial system at Bitnomial: how type safety and effect tracking help engineers manage correctness at scale, where the complexity budget for advanced types should be spent, and why technologies such as Servant remain powerful tools for moving guarantees from individual applications to entire systems.
Daml for Haskellers: interview with Heitor Toledo Lassarote de Paula
In this interview with our Daml Team Lead, Heitor, we examine which Haskell intuitions transfer successfully to Daml, where analogies such as Update and IO break down, and how developers should reason about authorization, visibility, contract lifecycles, and testing. We also discuss learning paths and tooling for Daml developers, common mistakes made by Solidity programmers, and the practical topics covered in the upcoming Daml Smart Contracts Development Guide.
Haskell, Strong Types, and the Next Generation of Bioinformatics: interview with Michal Gajda
Bioinformatics combines scientific discovery with the challenge of processing large, complex, and imperfect datasets. In this interview with Michal Gajda, we explore how Haskell’s strong types, purity, and functional abstractions can support reliable and high performance biological data processing.
Drawing on projects such as hPDB, JSON Autotype, and XML TypeLift, Michal discusses scalability, parser development, and the barriers to wider adoption of functional programming in bioinformatics. He also considers how better education, tooling, and AI assisted programming could make Haskell more accessible to future scientists.

Article by Michał Gajda
July 27th, 2026
4 min read
Claude Code: From Agent to Useful Tool
The main point of the article is that Claude Code needs engineering around it just as much as any other development tool. On its own, the agent can write code and run commands, but it quickly runs into the usual problems: missing context, repeated mistakes, unsafe decisions, and fragile fixes. A better setup gives it project rules, current documentation, MCP access, reusable skills, hooks, task trackers, Git safety nets, and clear session workflows. With these pieces in place, Claude Code can handle implementation, investigation, and verification more reliably, while the developer still owns architecture, review, and product judgment. The result is not an autonomous engineer, but a practical tool that works best when its context and workflow are engineered deliberately.

Article by Kirill Dukhanin
June 22nd, 2026
19 min read
Thanks for visiting the Serokell blog.
Serokell is a multinational team of programmers, joined by love towards functional languages. Science and education are among the core values of Serokell. Our blog is a place for our specialists to talk about things that matter to them. Stay tuned to read more about pioneering research and practical applications of functional programming, mathematics, artificial intelligence, and computer science.
.png)

.png)

.png)



