FP Complete

QuickCheck and Magic of Testing

Haskell is an amazing language. With its extremely powerful type system and a pure functional paradigm it prevents programmers from introducing many kinds of bugs, that are notorious in other languages. Despite those powers, code is still written by humans, and bugs are inevitable, so writing quality test suites is just as important as writing […]

Speeding up a distributed computation in Haskell

While helping a client ship a medical device we were tasked to make its response time bearable. This was no easy feat, given that each request to this device requires running a simulation that takes hours if ran on a single CPU. This long response time would make it impossible for doctors to use this […]

Green Threads are like Garbage Collection

Many common programming languages today eschew manual memory management in preference to garbage collection. While the former certainly has its place in certain use cases, I believe the majority of application development today occurs in garbage collected languages, and for good reason. Garbage collection moves responsibility for many memory issues from the developer into the […]

Software project maintenance is where Haskell shines

Maintenance matters and it’s where Haskell shines We Spend Most of Our Time on Maintenance Look at the budget spent on your software projects. Most of it goes towards maintenance. The Mythical Man-Month by Fred Brooks states that over 90% of the costs of a typical system arise in the maintenance phase, and that any […]

Concurrency and Node

Example code can be found here. When Node.JS first came onto the scene it successfully popularized the event-loop. Ryan Dahl correctly identified a serious problem with the way that I/O is generally handled in concurrent environments. Many web servers, for example achieve concurrency by creating a new thread for every connection. In most platforms, this […]

Do you like Scala? Give Haskell a try!

The language Scala promises a smooth migration path from Object-oriented Java to functional programming. It runs on the JVM, has concepts both from OOP and FP, and an emphasis on interoperability with Java. As a multi-paradigm language, Scala can flatten the learning curve for those already familiar with OOP, at the price of making some […]

Comparative Concurrency with Haskell

Last week, I was at DevConTLV X and attended a workshop by Aaron Cruz. While the title was a bit of a lie (it wasn’t four hours, and we didn’t do a chat app), it was a great way to see some basics of concurrency in different languages. Of course, that made me all the […]

Scripting in Haskell

Scripting in Haskell Writing scripts in Haskell using Stack is straight-forward and reliable. We’ve made a screencast to demonstrate this: Summary Slides in the screencast cover: What Haskell is What Stack is We make a case for reproducible scripting We cover the following example cases: Hello, World! as a Haskell script Generating a histogram of […]

Mastering Time-to-Market with Haskell

Mastering Time-to-Market with Haskell For bringing your product to market, there isn’t just one metric for success. That depends on your business needs. Haskell is the pure functional programming language that brings tangible benefits over its competitors for a variety of TTM priorities. Let’s explore four of them. Speed to market You may want to […]

Covariance and Contravariance

Typeclasses such as Bifunctor are often expressed in terms of whether they are covariant or contravariant. While these terms may appear intimidating to the unfamiliar, they are a precise language for discussing these concepts, and once explained are relatively easy to understand. Furthermore, the related topics of positive and negative position can greatly simplify how […]