adamsaleh
https://www.usenix.org/conference/usenixsecurity12/privilege...
What really helped me that, we had "programing paradigm" course in college, where I learned haskell for 3 weeks, what was enough that anonymous functions, map, reduce and using lists for everything didn't feel new.
http://www.nsa.gov/ia/_files/os/redhat/NSA_RHEL_5_GUIDE_v4.2...
and TLDR version: http://www.nsa.gov/ia/_files/factsheets/rhel5-pamphlet-i731....
It is starting to get a little bit dated (RHEL 5 is quite old), but general rules still apply and usually they explain their reasoning.
For example for a web-dev in Java you'd use a MVC framework.
In Clojure you get a query DSL to do your model, templating DSL to create your view and routing DSL to specify your controler.
Usualy a hackfest meant bunch of coders interested in a project sitting in a room for ~5 hours and doing bug fixing, new features, or just discussing. Everything is good in moderation, I guess.
We are doing web-testing in clojure, and in past year our little framework evolved into a DSL of a sorts.
On one hand it is great, we a have consturct like (with-client [name connection & body]), that behind the scenes sets up a virtual machine, registers it as a client of our web-service and destroys it after commands in body are done. I can't imagine we would be doing setup and teardown by hand.
On the other hand it took me a month to get into it (two weeks learning the language, two weeks messing around with the framework) ... and there are still lots of things only our lead-tester knows how to fix, after our devs decide to change something we were relying on for testing.