(tl) tony lawrence

Configuring Your Haskell Environment

My love of functional programming has been getting stronger over the past year so I decided to attend Well-Typed Haskell courses at Skills Matters1. As I’m a huge fan of JetBrains IntelliJ IDE I found using Haskell a little lacking in this area (unless you can be online with FP Complete.)

In this article I will explain how I configured my Haskell development environment using Sublime Text 3 and a few extras.

Installing Homebrew on OSX Mavericks

I choose to install all my applications via Homebrew. It’s easy to install, easy to update, works well for me and has all the required packages including everything required for Haskell. Installing Homebrew is as easy as running the following command in terminal1:

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Backing Up and Restoring a ReadyNAS Ultra

I’ve had my ReadyNAS drop of the network a couple of times, and lately has been warning me about errors on my disk 2 so I thought it was a good idea to replace that drive. Due to the few network issues I’ve had I decided that taking the opportunity to restore the ReadyNAS was a good idea (I had messed with it quite a bit before.)

Grouping Collections in Java

Recently I came across some code that was iterating over collections in order to group them by certain fields. This code was repeated a few times as it was grouping more than once. To me this seemed very verbose and a little hard to understand. As Guava was the available library and one that does not include any grouping I decided to have a go myself.

Fixing Corrupted Time Machine Backups

Yesterday my MacBook Air decided that it no longer trusted my Time Machine backup and wanted to create a new one. Apart from the time this would take (20gb over WiFi) and the fact that I’d lose my current history I was a little bit wary so declined. Unfortunately this was not a the last I heard of it. Time Machine refused to back up until I started a new back up.

time-machine-error

Publishing From the iCloud

I’ve recently been using IA Writer as my markdown editor. I love the fact that I can use any of my iDevices and that it’s all synced in the iCloud. But how do I access the iCloud data so that I can include it in my Octopress git repository?

Setting Up Octopress

When upgrading to Mountain Lion I decided to replace my existing Wordpress site with a static one. There were many reasons for this. With Wordpress I was unable to easily version control my posts into GitHub. I also had no control over and backup strategies. One of my colleagues – Toby Weston – was running Octopress so I thought I’d take a look.

Fluent Guava

It’s been far too long since I’ve written anything on this site. I’ve got plenty of topics, it’s just finding the time to write something down. This one comes from a comment on one of my previous posts about Guava and Modern Java.

Guava has recently been upgraded to version 12 and along with this release comes the idea of a Fluent Interface as described by Martin Fowler and Eric Evans. This might bring it more in line with TotallyLazy and the reason I took to the library so quickly. I hope to introduce to you the FluentIterable class and show how it can improve your Java.

Lambda Magic?

I often hear people complain about Java (I’m not excluding myself from this) about how restrictive the language can be compared to others.  We all know how noisy it is when working with functional libraries.  Wouldn’t it be great if we had a lambda style syntax in Java?

This is where Enumerable for Java comes in.  This has been developed by Håkan Råberg who describes the library as:

“Ruby/Smalltalk style internal iterators for Java 5 using bytecode transformation to capture expressions as closures.”

Modern Java - the Totally Lazy Way

A few weeks ago I blogged about Modern Java using Googles Guava to write functional programs. One of the comments on that blog was by a good friend on mine Franck Rasolo. He suggested I took a look at Totally Lazy by Daniel Bodart as an alternative to Guava. So I decided to implement the same functional calculator I wrote in the previous post using totally lazy instead and here are my findings.