Leonardo Borges

Share

Clojure Developer, Organiser of clj-syd
leonardoborges.com/
@leonardo_borges

Leonardo Borges is a programming languages enthusiast who loves writing code, contributing to open source software, and speaking on subjects he feels strongly about.

After nearly 5 years of consulting at ThoughtWorks he is now a senior software engineer at Atlassian where he uses Clojure and ClojureScript to build real-time collaborative editing technology.

He is the author of “Clojure Reactive Programming” and founder of the Sydney Clojure User Group.

YOW! Lambda Jam 2013 Brisbane

Bending Clojure to your Will: Macros and Domain Specific Languages

JAM –  VIEW SLIDES

Programmers, functional or not, oftentimes struggle to understand the ways of Lisp macros: when to use them, what to use them for and, more importantly, when not to use them.

Macros are programs that write programs – and that can be daunting at first. But it doesn’t have to be!

Through a series of real-world examples from the Clojure world you’ll learn how to write your own macros and use them to make your programs more expressive and elegant by building powerful abstractions.

Do more with less.

Make sure you bring a laptop with a working Clojure development environment. By that I mean at least two things:

  • Leiningen 2.x: https://github.com/technomancy/leiningen
  • Your favourite Clojure editor: Emacs, vim, La Clojure (IntelliJ plugin), Counterclockwiste (Eclipse plugin) or any other editors you like

Bending Clojure to your Will: Macros and Domain Specific Languages

TALK –  VIEW SLIDES

Whatever the system you’re working on it can probably be thought of as a living organism. You nourish it, extend it, add new abilities and inevitably it will depend on external factors to operate properly.

It’s not uncommon for systems to have multiple dependencies on external services. This communication sometimes goes both ways – as well as being asynchronous a lot of the time – and appropriate actions should be taken when certain ‘events’ happen.

The way in which these ‘events’ are handled can be the difference between a clean, easy to reason about codebase and a tangled mess. Who never got stuck in callback hell?

Functional Reactive Programming provides better abstractions in such scenarios.

It models your system’s behaviors as streams of values that change over time. In a functional setting, this allows streams to be filtered, mapped over, sampled, reduced and composed in a number of ways much like you compose pure functions.

In this talk you’ll learn what’s in it for you: how you can use FRP, what’s its sweet spot as well as what tools are available to you.

Make sure you bring a laptop with a working Clojure development environment. By that I mean at least two things:

  • Leiningen 2.x: https://github.com/technomancy/leiningen
  • Your favourite Clojure editor: Emacs, vim, La Clojure (IntelliJ plugin), Counterclockwiste (Eclipse plugin) or any other editors you like