clojure
Java in a polyglot JVM world
The trend over the last few years has been clear, the number of viable platforms from which to build software systems has been growing. Not that many years ago, things would be either: Java, C++, Visual Basic or one of the many long-forgotten but once popular languages like Delp…
group-by and Transducers
One of the random, but very useful, functions in clojure.core is the venerable group-by. Simply take a collection of something, a function to extract a key, and it returns a map of the same data indexed by the key. It's incredibly useful, I use it all the time. But it's also an…
Rust
Like every other developer on the internet, I've been watching the rise of Rust with interest. I've spent the majority of my career in high-level language land, although I did do a lot of C++ once upon a time, and Rust may have passed me by with it's focus around low-level conce…
The folly of benchmarks
In my previous post The power of lazy sequences I fell in to a trap. A common trap, one which most of us fall, some of us quite regularly. I talk, of course, of trying to measure execution time. In my defence, given the context of that post, some kind of elapsed-time measuremen…
The power of lazy sequences
The selling-pitch for the concept of lazy evaluation includes the claim that they can, if used in the right way, improve performance. Indeed, the new Stream API in Java 8 vaguely references that laziness exposes "opportunities for optimisation". But how much effect can this have…