Efficient CStruct

Dealing with complex C-structure-like data in haskell often force the developer to have to deal with C files, and create a system that is usually a tradeoff between efficiency, modularity and safety.

The Foreign class doesn’t quite cut it, external program needs C files, Binary parsers (binary, cereal) are not efficient or modular.

Let’s see if we can do better using the advanced haskell type system.


A new hope. Foundation is a new library that tries to define a new modern Haskell framework. It is also trying to be more than a library: A common place for the community to improve things and define new things

Combining Rust and Haskell

Rust is a pretty interesting language, in the area of C++ but more modern / better. The stated goal of rust are: “a systems programming language focused on three goals: safety, speed, and concurrency”. Combining Rust with Haskell could create some interesting use cases, and could replace use of C in some projects while providing a more high level and safer approach where Haskell cannot be used.

Downloading safely

All too often, things are downloaded without safety from hosts and mirrors. Here’s a practical guide to know where you stand and improve the situation.

Announcing: cryptonite

For the last 5 years, I’ve worked intermittently on cryptographic related packages for Haskell. Lately, I’ve consolidated it all in one single package. Announcing cryptonite

Simple time with Hourglass

Each time, I’ve used the time API in Haskell, I’m left with the distinct feeling that the API is not what I want it to be. After one time too many searching the API to do some basic thing, I’ve decided to look at the design space and just try implementing what I want to use.

Listing licenses with cabal-db

Following discussions with fellow haskellers, regarding the need to be careful with adding packages that could depends on GPL or proprietary licenses, it turns out it’s not easy to get your dependencies’s licenses listed.

unix memory

On unix system, we get access to syscalls that maps files or devices into memory. The main syscall is mmap, but there’s also some others syscalls in the same family to handle mapped memories like mlock, munlock, mprotect, madvise, msync.

announcement: tls-1.2 is out

One year ago, I’ve started some big changes on the tls package. I’ve finally manage to wrap it up in something that people can use straight out of hackage.

haskell crypto platform

One of my side projects that has been running for couple of years now, was to get Cryptography up to scratch in haskell. Back when I started TLS, there were many various cryptography related projects and libraries. Many were not easy to use, none were consistent, many had performance problems.

ghc core with style

After reading one too many time ghc core’s output, i’ve been itching to have a more interactive output.

cabal-db : simple tool for cabal database queries

Following previous experiment with Cabal library and querying the state of the hackage world here, I’ve extended and wrapped the tool into a cabal package.

Playing with Cabal lib: generating dependencies graph

Cabal is a fantastic tool for package care and aftercare. Most of cabal functionalities are available in the library itself, and I’ve been looking at the library to write some little tool to solve queries i’ld like to run on the state of the haskell world.

Cryptohash 0.8.x is out

I’ve been trying to integrate some more type-safety in cryptohash for a while. The current and original scheme was using a bytestring for digest, meaning that they were no way to differentiate a digest with any other bytestring (short of wrapping it yourself).

Connection: A new hope for client network connection.

Opening connection is nowadays a complicated business: One of the leading complication provider is TLS. In itself, there’s nothing complicated about it, however the sheer amount of configurability make it too fiddly for casual programmer that want to open a simple connection to send bytes back and forth.

TLS 1.0 is available in a hackage server near you

I’m quite pleased to announce that TLS 1.0 is now available. It took 9 months of brewing in its own branch, to get the last missing protocol bits implemented and much more.

Building a better Haskell AES

AES (Advanced Encryption Standard) is quite popular and is subject to numerous packages in Haskell:

Haskell SipHash - fast and small MAC

While reading my twitter stream, following the release of the paper, many people added support for their favorite language to SipHash. I decided that haskell shouldn’t be left behind, and support this cute algorithm too.

Playing with AES intrinsics

Exhaustive search: fun with multithreads and haskell.

I recently had to make a couple of exhaustive search, and i’m going to share the solution i’ve crafted really quickly. This is for my own future benefits later so that i don’t have to search my disk, but this could be useful and a good starting point for anyone attempting something similar.

December news for the haskell TLS framework

In an effort of publicize more what’s happening with TLS, here is a textual changelog of the two previous versions:

A little guide of date and time in Haskell

Every now and then, i have to use date and time in haskell program or library, and always end up being confused on how to do simple things with it. It doesn’t looks like I’m alone, and same topic as been covered by Magnus’ blog

Fast lookup tables in haskell

TLS progress report

In an effort started just before CamHac and carried on during CamHac, there’s some new features supported by the haskell tls framework.

Testing TLS supported cipher remotely

Using QuickCheck

Quickcheck is a framework to generate arbitrary input to test properties.

using webkit in haskell for fun and profit #2

Following from the previous article, where I demonstrated how easy it is to instanciate your own webkit. I’ll try now to go in more details, and create a simple hackage browser.

using webkit in haskell for fun and profit #1

In this serie of articles, I’ll give a tutorial to use the webkit library.

darcs to git mirror script

The following script permits to mirror a darcs repository into a git repository; It’s also working in incremental mode since darcs-fastconvert added support for marksfile (>= 0.2.0) and it’s really fast.

my haskell packages update

I haven’t really blogged about single package update for a while, as such i’m going to bundle multiple updates in this post.

code tokenization

Awesome WM media key configuration

About precedence and associativity in parsers