A new chapter begins
Thanks, ThoughtWorks
After 4 years and 8 months I have made the hard decision to change jobs: Friday, 19th of December, was my last day at ThoughtWorks.
In this time I have made many friends and have grown a lot as a professional. Consulting presents so many new challenges that often times the technical problems you are trying to solve are the easiest part of the whole project. I am thankful for that.
ClojureBridge Sydney, vol. I
This past weekend - 19-20th of December - a group of highly motivated individuals gave up their Friday night and their entire Saturday simply to learn how to code in Clojure!
It was the first ever ClojureBridge edition in Sydney and if you haven’t heard of it before, its goal is to increase diversity in the Clojure community. It does so by offering free workshops targeted at beginners.
You should totally read Julian Gamble’s post about the event for details. He’s was one of the volunteers on the day and has done a great job of describing his experiences.
EuroClojure 2014 and announcing my book
A bit late for a EuroClojure 2014 post but I suppose “better late than never” applies here.
The best part of every conference is the networking. Meeting new and interesting people is priceless and I did plenty of that - mostly over Polish beer and food. Polish beer isn’t the greatest but if you must have it, better stick to Żywiec. It’s widely available and was the one which didn’t give me a headache :) - I’ve been told there are amazing microbreweries though I didn’t get a chance to try any while in Krákow.
Functional composition with Monads, Kleislis and Functors
I’ve been learning Scala for my current client project and I find writing to be a great tool to test my understanding of any given topic. This means there might be a few Scala posts coming up soon as I keep learning interesting things.
Today I’ll be exploring a few different ways in which you can compose programs. I’ll be using Scalaz in this post.
The examples that follow all deal with Vehicles - more specifically makes and parts:
Validation and Internationalization in Clojure with bouncer & tower
I released bouncer in April last year and since then it has had a small but steady growth in usage.
So much so that I received some community feedback in the form of emails and pull requests which is simply great!
The latest and most substantial pull request, submitted by Vadim Platonov, added the ability to customise validation messages in anyway you like, as you can see in the section Internationalization and customised error messages of the README.
So long 2013: Year highlights
I finally got some free time so sit down and write this post. I was travelling with my girlfriend around the state of Victoria, Australia - mostly around the Great Ocean Road. I had an amazing time and it’s a trip I highly recommend anyone do.
As for this year’s highlights, let’s get started:
Clojure
clj-syd - the Sydney Clojure User Group - continues going strong and this is in great part thanks to the amazing community behind it. You can have a look at our wiki page for 2013 to see what we’ve been up to.
CUFP/ICFP 2013
I’m sitting in the Lobby of the Hilton in Boston and since my flight back to Australia isn’t for a few hours I thought I’d write my experience report while everything is still fresh in my mind.
CUFP - Commercial Users of Functional Programming - is a Workshop-like conference targeting the practically-minded functional programming community.
As it’s stated on their website, “The CUFP workshop is a place where people can see how others are using functional programming to solve real world problems […]”.
Purely functional data structures in Clojure: Red-Black Trees
This post is part of a series about Chris Okasaki’s Purely Functional Data Structures. You can see all posts in the series by visiting the functional-data-structures category in this blog.
Recently I had some free time to come back to Purely Functional Data Structures and implement a new data structure: Red-black trees.
Red-black trees
Red-black trees are a type of self-balancing binary search tree. Back when I first learned the balancing algorithm used in operations such as insert and delete, I remember it being a particularly tricky one.
Clojure, core.async and the Lisp advantage
Long gone are the days when systems needed to do only one thing at a time.
Concurrency is the word but it often leads to complex code, dealing with locks, mutexes etc…
There are several different abstractions which allows us to both model and think about asynchronous code in a more sane fashion: futures, promises and events/callbacks are but a few of them.
I won’t get into the merits - or lack thereof - of these alternatives in this post but rather focus on a different alternative: Communicating Sequential Processes - CSP.
Functional Programmers Unite! LambdaJam down under
I hinted at LambdaJam Australia back in my 2012 Highlights post and the dates are fast approaching so I thought appropriate to blog about it once more.
YOW! LambdaJam is a conference targeted at intermediate and advanced functional programmers and is organised in talks, jams and workshops.
- Talks are the traditional format and are 30 minutes long;
- Workshops aim to introduce a specific subjects to attendees in great detail and are up to two hours long;
- Jams are hands-on sessions. Participants will be guided through pre-defined problems around a given subject/technology and encouraged to work through the solutions either by themselves or ideally as small groups. Jams are also 2 hours long;
Sounds pretty amazing, doesn’t it?