RSSAmplifier

Blog

Mark Karpov's Site

markkarpov.comRSS feed ↗52 posts

Latest posts

Announcing Ahab

Announcing Ahab—a hermeticity analyzer for Bazel.

Tomorrow comes

A few announcements for the Haskell community.

Integrating Coverity static analysis with Bazel

How to keep a Bazel project hermetic?

TPS evaluation for Tezos

Simulating Tenderbake

Ormolu internship

GitHub actions for Haskell CI

The post explains how I use GitHub actions to setup Haskell CI.

Setting up Buildkite for Nix-based projects using Terraform and GCP

The story with data-default

The post explains why data-default should not be used.

Setting up a shared build cache using Bazel

Struggling to forget

In this post I show a use case and a way to implement conditional fixing of existentially quantified variables by universally quantified variables.

Exposure without giving up artistic control

This article is about getting perfect exposure without giving up any artistic control on modern digital cameras.

Haskell vs OCaml

This is a comparison between the two languages by someone who has written code professionally in both.

Canon EOS R settings I use

Tweaks I made to the configuration of the Canon EOS R camera with explanations why.

Digital photography workflow for Linux

Digital photgraphy workflow I use on Linux.

Megaparsec 8

New version of the parsing library has been released.

Ormolu: announcing first release

What does a humped critter have to teach us?

The post compares OCaml's module system with Haskell's type classes.

Why Haskell is important

Ormolu: format Haskell code like never before

The monads of Haskell

Let's talk about monads in Haskell.

The types got you

Existential quantification

In this post I'm going to give an idea of how existentials can be useful in Haskell.

Megaparsec 7

A post about the most important and exiciting changes in Megaparsec 7.

Smart constructors that cannot fail

The post describes design of a library which implements refined types. Novelty of the library is that it allows us to establish meaningful connections between properties and do logical conclusions.

Announcing GHC syntax highlighter

Announcing GHC syntax highlighter, a package that allows to highlight Haskell code using lexer of GHC itself.

Stackage HEAD is now live!

Bazel now supports building Haskell

MMark status update

A short update about the MMark project.

Req 1.0.0, HTTP client, and streaming

In this post I describe essential changes to Req in version 1.0.0, dig into the low-level API of http-client, how it does streaming, and how it is used in Req.

Announcing MMark

In this post I talk about a new markdown processor I've been working on.

Short ByteString and Text

We all know the ByteString and Text types, but are they always the best choice? What else does the Haskell ecosystem provide?

Free monad considered harmful

Before you start writing your code using free monads read this, you may change your mind.

Announcing Hasky Stack

Announing my new package for working with Haskell Tool Stack — Hasky Stack.

Evolution of error messages

The second and final post about Megaparsec 6 development. This time we walk through re-design of parse error messages.

A major upgrade to Megaparsec: more speed, more power

The post describes extension of the Stream type class that allowed to make the Megaparsec library more efficient and simplify code base.

Path 0.6.0 released

It took some time, but the most popular Haskell library for dealing with well-typed paths got to its next (semi)-major version, yay!

Migrating text metrics to pure Haskell

One more blog post about Haskell competing with C in speed.

Working with text without pain

Hints how to make your typing experience more pleasant and protect yourself from RSI in the future.

New site

I've set up a new site where I'll host my blog, tutorials, and more.

Putting together a form validation library

A write-up about motivation and design of the forma library.

Hapistrano's new features

Latest additions to Megaparsec

This blog post summarizes new features added to Megaparsec in the second half of 2016.

Category Theory Basics, Part I

Category theory notions in simple to understand (I hope), but concise form, part I.

Concurrent Haskell in the real world

Cassava Megaparsec library released

The Identicon package

My new Identicon package for identicon generation.

Announcing Megaparsec 5

Finally Megaparsec 5 is out, what's new?

The true power of Dvorak

My experience with the Dvorak layout.