Quidquid Latine dictum sit altum videtur

You are here: Home

-8-
December
2015

On stateless software design: conclusion

1. What is state ? 2. State and correctness 3. State and scalability 4. State and performance 5. Conclusion Conclusion The way software developers interact with their computing systems is changing. Where so far the focus has been on correctness first and then focus on performance, scalability was mostly a non-concern. Software developer relied on CPU manufacturers to increase performance and the application would magically run faster on next generation computers. This free lunch, however,... Read more

-7-
December
2015

On stateless software design: state and performance

1. What is state ? 2. State and correctness 3. State and scalability 4. State and performance 5. Conclusion State and performance Scalability and performance are, albeit related, entirely different beasts. Where scalability is all about keeping your computing systems busy during increasing workload, performance is about making your computing systems do less. This might seem trivial, but it is something that many people overlook: as we have shown in the previous example, increasing scalability... Read more

-6-
December
2015

On stateless software design: state and scalability

1. What is state ? 2. State and correctness 3. State and scalability 4. State and performance 5. Conclusion State and scalability So far we have only discussed applying stateless programming techniques to increase the correctness of your application. But as I mentioned earlier, CSP was the result of two independent problems arising in computing theory: determinism and parallelism. If CSP is good for increasing the determinism of your code, what about scalability? Scalability is... Read more

-5-
December
2015

On stateless software design: state and correctness

1. What is state ? 2. State and correctness 3. State and scalability 4. State and performance 5. Conclusion State and correctness In mathematics, many models of physical systems are deterministic: a core trait of mathematics is that you need to be able to prove your assertions, and determinism is extremely important for such a model. Computer theory and mathematical logic were closely related for a very long time; this was because computer systems were... Read more

-4-
December
2015

On stateless software design: what is state ?

1. What is state ? 2. State and correctness 3. State and scalability 4. State and performance 5. Conclusion Statelessness is a design principle applied in software design, in order to develop scalable and robust software. This article explores the fundamentals of statelessness and why it is important to make it a fundamental part of the way you design your applications. Just what is state ? Statelessness defines whether or not a computation is designed... Read more

-13-
August
2015

Automatically mounting instance store on an AWS AMI.

This post was originally published at quasardb. On Amazon’s EC2, using EBS as the backend storage for your application has been the de-facto standard. Using the local storage of an EC2 container is risky: data loss occurs when a container is stopped and it is not replicated by default. As such, people should default to using EBS, which is Amazon’s version of a SAN. However, if data loss is acceptable, there are lot of valid... Read more

-30-
May
2015

On anonymous networking in Haskell: announcing Tor and I2P for Haskell

During the development of a Bitcoin-related project, I found the need to perform anonymous peer-to-peer communication in Haskell. When people want a solution for anonymous networking, they usually point to either Tor or the lesser-known I2P. I have developed a Haskell API for both projects. In this post I will outline the differences between these projects and illustrate how to use them within Haskell. Tor Tor is easily the most popular of the two projects,... Read more

-21-
March
2015

On the state of cryptography in Haskell

In the past months, I was attempting to write an application that uses cryptographic primitives in Haskell. In the process I found out some disturbing things about the state of cryptography in Haskell of which I think more people should be aware. I am trying to present you with as many facts as possible, but I will also draw my own conclusions from these facts. My conclusions are fairly paranoid, since I think developing crypto... Read more

-18-
March
2015

Why you expect too much from open source

There has been a trend in the last years where software companies completely embrace the open source model and release their product as open source for the community. This has been largely fueled by the free software movement: they have shown that groups of individuals, making software for the sake of sharing it with others, are just as capable as releasing quality software as traditional software businesses are. In a struggle to keep themselves relevant,... Read more

-15-
March
2015

On writing non-blocking network parsers for attoparsec

The goal of Haskell’s Attoparsec has always been clear: where Parsec provides you with a friendly parser combinator that produces nice error messages, Attoparsec does everything that is possible to give you the best speed possible. Error messages can be cryptic at best: not enough bytes is a common error when you would actually expect a real parse error. However, when you are able to live with that, Attoparsec does bring real advantages: personally I... Read more