Last night, ETC Eastern was host to the Baltimore Clojure Meetup, a group of Clojure, Lisp, and other functional programming enthusiasts that meet monthly to share new projects and interesting challenges currently being worked on.
This month's featured presenter was Mike Patella, an independent programmer making interesting contributions to the Clojure community through her live-coded screencast series Doing Computers and a variety of other projects. Mike took the opportunity to clue us in on one of her many side projects in her presentation "Trailblazing Functional Game Development" highlighted here.
In diving into functional game development, there are many differences between doing game development in a functional style versus the more traditional object-oriented style. In the development of her game QuestQuest, an open microgame that distills the core values of RPGs into an experience where every playthrough is unique, these differences came to the forefront.
Mike shared that a lot of game development is about managing state and since functional programming styles emphasize avoiding mutable state, you have to approach problems differently when using functional programming. The advantage is that using functional programming ultimately leads to better and more maintainable code in the long run. Out there in the game development world there are patterns that tend to be applied and functional programmers tend to eschew patterns, so it leads to a problem of how do you take the good parts from those patterns and apply them to functional game development.
After Mike's talk let us know that we have some things to work on, Jason Lewis, the Baltimore Clojure Meetup organizer and CTO of Yet Analytics, shared a resource to help us work on our skills - Exercism.io, a deep practice and crowd-sourced mentorship platform for building skills in multiple programming languages.
Exercism is a great resource for learning new languages as it allows you to do the same exercises in very different types of languages and then through a mentorship model, opens your work up to feedback from others on the platform. This allows for purposeful and focused incremental improvement that comes from other programmers in the community. And once you've done an exercise, you can become a mentor for that exercise as well, thus continuing the strength of Exercism.io as a network and learning environment.
Jason is also working on an Emacs package client for Exercism.io with the goal of replicating all of the functionality of the command line client from within Emacs. Check out his work in progress on GitHub.
As always the Baltimore Clojure Meetup is open to new speakers, interesting projects, and discussions to be had. Connect with them on Meetup and get yours featured at the next Meetup on May 19, 2015 at 6:30pm.